diff --git a/examples/oft-main/.env.example b/examples/oft-main/.env.example
new file mode 100644
index 0000000000..2ad484e3e4
--- /dev/null
+++ b/examples/oft-main/.env.example
@@ -0,0 +1,35 @@
+# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-
+# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \
+# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-'
+#
+# Example environment configuration
+#
+# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-
+# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \
+# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-'
+
+# EVM Variables
+# By default, the examples support both mnemonic-based and private key-based authentication
+# You don't need to set both of these values, just pick the one that you prefer and set that one
+MNEMONIC=
+ # Private key for EVM contract owner/delegate
+PRIVATE_KEY=
+
+# Solana Variables
+SOLANA_PRIVATE_KEY=
+SOLANA_KEYPAIR_PATH=
+# By default, the Solana example will use the default cluster RPC URL if no other value is provided
+RPC_URL_SOLANA=
+RPC_URL_SOLANA_TESTNET=
+
+# Sui Variables
+SUI_PRIVATE_KEY=
+RPC_URL_SUI=
+RPC_URL_SUI_TESTNET=
+
+# Starknet Variables
+# NOTE: Starknet needs the account contract address (not the public key) + private key.
+STARKNET_ACCOUNT_ADDRESS=
+STARKNET_PRIVATE_KEY=
+RPC_URL_STARKNET=
+RPC_URL_STARKNET_TESTNET=
diff --git a/examples/oft-main/.eslintignore b/examples/oft-main/.eslintignore
new file mode 100644
index 0000000000..50166580ac
--- /dev/null
+++ b/examples/oft-main/.eslintignore
@@ -0,0 +1,13 @@
+.anchor
+.turbo
+node_modules
+target
+artifacts
+cache
+dist
+out
+*.log
+*.sol
+*.yaml
+*.lock
+package-lock.json
\ No newline at end of file
diff --git a/examples/oft-main/.eslintrc.js b/examples/oft-main/.eslintrc.js
new file mode 100644
index 0000000000..bd7363593f
--- /dev/null
+++ b/examples/oft-main/.eslintrc.js
@@ -0,0 +1,12 @@
+require('@rushstack/eslint-patch/modern-module-resolution');
+
+module.exports = {
+ root: true,
+ extends: ['@layerzerolabs/eslint-config-next/recommended'],
+ rules: {
+ // @layerzerolabs/eslint-config-next defines rules for turborepo-based projects
+ // that are not relevant for this particular project
+ 'turbo/no-undeclared-env-vars': 'off',
+ 'import/no-unresolved': 'warn',
+ },
+};
diff --git a/examples/oft-main/.gitignore b/examples/oft-main/.gitignore
new file mode 100644
index 0000000000..a97e3207a9
--- /dev/null
+++ b/examples/oft-main/.gitignore
@@ -0,0 +1,44 @@
+.anchor
+node_modules
+.env
+coverage
+coverage.json
+target
+typechain
+typechain-types
+
+# Hardhat files
+cache
+artifacts
+
+# LayerZero specific files
+.layerzero
+
+# foundry test compilation files
+out
+
+# pnpm
+pnpm-error.log
+
+# Editor and OS files
+.DS_Store
+.idea
+
+# Deployment artifacts (user-specific, created during deploy)
+deployments/
+
+# Sui build artifacts and deployment info
+sui/*/build/
+sui/deploy.json
+sui/**/oft_deploy.json
+sui/**/token_deploy.json
+
+# Starknet deployment info
+starknet/deploy.json
+
+# Aptos deployment info
+aptos/deploy.json
+
+# Move build artifacts
+build/
+.aptos/
diff --git a/examples/oft-main/.nvmrc b/examples/oft-main/.nvmrc
new file mode 100644
index 0000000000..549a5d7006
--- /dev/null
+++ b/examples/oft-main/.nvmrc
@@ -0,0 +1 @@
+v20.19.5
\ No newline at end of file
diff --git a/examples/oft-main/.prettierignore b/examples/oft-main/.prettierignore
new file mode 100644
index 0000000000..638b9f31f7
--- /dev/null
+++ b/examples/oft-main/.prettierignore
@@ -0,0 +1,14 @@
+.anchor
+.turbo
+node_modules/
+target
+artifacts/
+cache/
+dist/
+out/
+*.log
+*ignore
+*.yaml
+*.lock
+package-lock.json
+package.json
\ No newline at end of file
diff --git a/examples/oft-main/.prettierrc.js b/examples/oft-main/.prettierrc.js
new file mode 100644
index 0000000000..6f55b4019a
--- /dev/null
+++ b/examples/oft-main/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ ...require('@layerzerolabs/prettier-config-next'),
+};
diff --git a/examples/oft-main/.solhintrc.js b/examples/oft-main/.solhintrc.js
new file mode 100644
index 0000000000..102eae347a
--- /dev/null
+++ b/examples/oft-main/.solhintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['solhint:recommended', require.resolve('@layerzerolabs/solhint-config')],
+};
diff --git a/examples/oft-main/Anchor.toml b/examples/oft-main/Anchor.toml
new file mode 100644
index 0000000000..dfd19e5a98
--- /dev/null
+++ b/examples/oft-main/Anchor.toml
@@ -0,0 +1,20 @@
+[toolchain]
+anchor_version = "0.31.1"
+
+[features]
+seeds = false
+resolution = false
+skip-lint = false
+
+[programs.localnet]
+oft = "G2BYTnfGCMQAErMZkTBCFSapKevzf6QCjizjXi8hFEtJ"
+
+[registry]
+url = "https://api.apr.dev"
+
+[provider]
+cluster = "Localnet"
+wallet = "./junk-id.json"
+
+[scripts]
+test = "npx jest test/anchor"
diff --git a/examples/oft-main/CHANGELOG.md b/examples/oft-main/CHANGELOG.md
new file mode 100644
index 0000000000..8ba26f063d
--- /dev/null
+++ b/examples/oft-main/CHANGELOG.md
@@ -0,0 +1,352 @@
+# @layerzerolabs/oft-main-example
+
+## 0.12.11
+
+### Patch Changes
+
+- ba9762f: update debug script
+
+## 0.12.10
+
+### Patch Changes
+
+- 7dbac78: update nodejs version
+
+## 0.12.9
+
+### Patch Changes
+
+- 9ec1a69: oft-solana example: add rate limit print and add support for token2022 metadata
+- d720011: oft-solana: require user to confirm max total token supply given a local decimals value
+- d720011: print max supply given solana local decimals
+
+## 0.12.8
+
+### Patch Changes
+
+- ccc14e0: fix default ALTs not used
+
+## 0.12.7
+
+### Patch Changes
+
+- 7ef51d7: bump up versions for anchor, solana, rust
+
+## 0.12.6
+
+### Patch Changes
+
+- 39ddee8: remove usage of MyOFTMock
+
+## 0.12.5
+
+### Patch Changes
+
+- 77ba155: update links
+- 87dd61e: updateMetadata supports when Update Authority is a Multisig
+
+## 0.12.4
+
+### Patch Changes
+
+- 002caa2: Add support for multiple ALTs when sending OFTs from Solana, fix extra options and compose message parsing bugs
+
+## 0.12.3
+
+### Patch Changes
+
+- d34cbbd: add nonce account check to debug script
+- d34cbbd: debug script displays dvn name
+
+## 0.12.2
+
+### Patch Changes
+
+- e415855: rename retryPayload to retryMessage
+- d48633e: fix oft-solana's debug script when peers are checked
+- c44e657: update evm network used
+
+## 0.12.1
+
+### Patch Changes
+
+- 5e15a8d: Add lockfiles to example packages
+
+## 0.12.0
+
+### Minor Changes
+
+- 5c0a0a1: created tasks for endpoint methods
+
+## 0.11.4
+
+### Patch Changes
+
+- 2358dd5: Add prompt when sending tokens without extra options and no enforced options.
+
+## 0.11.3
+
+### Patch Changes
+
+- 49f5dcd: Fix the handling of initSendLibrary and initReceiveLibrary to properly initialize in the init step rather than during setPeer
+
+## 0.11.2
+
+### Patch Changes
+
+- 368b4b4: oft-solana: introduce named variables and use exact value for sending to Solana
+
+## 0.11.1
+
+### Patch Changes
+
+- 5542063: Adding ability to wire Solana to Aptos
+
+## 0.11.0
+
+### Minor Changes
+
+- f228dfe: refactor(solana): internalize account checker and priority fee getter
+
+## 0.10.0
+
+### Minor Changes
+
+- bb62f09: Moved logging info to io-devtools package
+
+## 0.9.0
+
+### Minor Changes
+
+- 1596719: fix(solana examples): fix bug where evm contract object is treated as solana
+- 27cdcb4: feat(solana examples): support freeze authority param for createOFT script
+
+### Patch Changes
+
+- eb6d163: refactor logger helpers; export `DebugLogger` from `io-devtools`; update example imports
+
+## 0.8.0
+
+### Minor Changes
+
+- f5980f4: Normalized the send task so that EVM and Solana share identical send logic, along with logging
+
+## 0.7.15
+
+### Patch Changes
+
+- 74ac06c: Adds a lookup table address to the quote instruction in sendOFT. While not breaking, errors can be thrown due to tx size if the OFT uses more than the standard 2 DVNs.
+
+## 0.7.14
+
+### Patch Changes
+
+- eba3669: Rename clear script to retry-payload
+
+## 0.7.13
+
+### Patch Changes
+
+- 4ff1db8: feat(oft-solana): remove need for manual solana endpoint ID input
+- 28eb8be: feat(oft-solana): support loading keypair via path
+- 0385135: fix import in setInboundRateLimit
+
+## 0.7.12
+
+### Patch Changes
+
+- 292803d: introduce fix suggestions, starting with when Solana init-config is skipped
+
+## 0.7.11
+
+### Patch Changes
+
+- 8817095: Add the ability to filter out connections from specified EndpointIds
+
+## 0.7.10
+
+### Patch Changes
+
+- 8b6c422: Bump monorepo dependencies to latest patch version
+
+## 0.7.9
+
+### Patch Changes
+
+- a843edf: Debugging Hardhat tasks
+
+## 0.7.8
+
+### Patch Changes
+
+- ce3a36b: introduce getSolanaDeploymentFunction and simplify solana task params
+
+## 0.7.7
+
+### Patch Changes
+
+- e4f8538: feat(oft-solana): remove need to pass in solana secret key flag
+
+## 0.7.6
+
+### Patch Changes
+
+- e256387: Updating packages
+
+## 0.7.5
+
+### Patch Changes
+
+- fe71c0e: fix typo and mention how to transfer ownership
+
+## 0.7.4
+
+### Patch Changes
+
+- 6bbe466: move solana init to own script and update task name
+
+## 0.7.3
+
+### Patch Changes
+
+- e5fffc3: fix import in createOFT.ts
+- fcf924d: docs: default to using solana 1.18
+
+## 0.7.2
+
+### Patch Changes
+
+- 274b8aa: Add task to get Solana rate limits
+
+## 0.7.1
+
+### Patch Changes
+
+- 213a76b: Enable optimizer explicitly
+
+## 0.7.0
+
+### Minor Changes
+
+- 57a80a8: added script to update metaplex metadata
+
+## 0.6.0
+
+### Minor Changes
+
+- 1ce802a: oft-solana - throw if trying to send more than owned
+
+## 0.5.1
+
+### Patch Changes
+
+- 12eaa61: oft-solana(getSimulationComputeUnits): increase backoff max delay from 3s to 10s
+
+## 0.5.0
+
+### Minor Changes
+
+- 4af9800: fallback for getSimulationComputeUnits
+
+## 0.4.9
+
+### Patch Changes
+
+- a2ecefd: fix missing return statement when user chooses no to 'continue with onlyOftStore'
+
+## 0.4.8
+
+### Patch Changes
+
+- af91805: Bump to lz-definitions 3.0.59+
+
+## 0.4.7
+
+### Patch Changes
+
+- ce03876: Get latest EndpointIds by bumping lz-definitions
+
+## 0.4.6
+
+### Patch Changes
+
+- d1d51ef: Bump ua-devtools-evm-hardhat dependency to 6.0.6+
+
+## 0.4.5
+
+### Patch Changes
+
+- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions
+
+## 0.4.4
+
+### Patch Changes
+
+- 1bb0524: Upgraded dependency (@layerzerolabs/lz-definitions 3.0.12->3.0.21)
+
+## 0.4.3
+
+### Patch Changes
+
+- 447af65: Use concurrently for parallel compilation task
+
+## 0.4.2
+
+### Patch Changes
+
+- 59cd485: Fix add additional minters to createOFT
+
+## 0.4.1
+
+### Patch Changes
+
+- 63238e9: Add ability to swap out the mint authority with a new SPL multisig
+
+## 0.4.0
+
+### Minor Changes
+
+- e2395b5: Add OApp Read Example
+
+## 0.3.1
+
+### Patch Changes
+
+- 2540bb1: solana support for lz:oapp:config:get
+
+## 0.3.0
+
+### Minor Changes
+
+- aa37daf: Update layerzerolabs packages to 3.0.12
+
+## 0.2.1
+
+### Patch Changes
+
+- ff5972b: Fix createOFT should allow 0 amount
+
+## 0.2.0
+
+### Minor Changes
+
+- ccba37b: Bump for solana oftv2
+
+### Patch Changes
+
+- 019cd52: Bump for new Solana Implementation Version
+- 4ca5233: Enable squadsv4 CLI support
+
+## 0.1.5
+
+### Patch Changes
+
+- f34f4fe: Add support for Token2022 and housecleaning
+- 33ff07d: Fix refund address for EVM send script
+- e59f693: Resolves Issue 926, allowing createOFT to have amount=0
+
+## 0.1.4
+
+### Patch Changes
+
+- 6a07bb7: New solana OFT reference
diff --git a/examples/oft-main/Cargo.lock b/examples/oft-main/Cargo.lock
new file mode 100644
index 0000000000..84f26dc083
--- /dev/null
+++ b/examples/oft-main/Cargo.lock
@@ -0,0 +1,2989 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm-siv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "polyval",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "ahash"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anchor-attribute-access-control"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f70fd141a4d18adf11253026b32504f885447048c7494faf5fa83b01af9c0cf"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-account"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715a261c57c7679581e06f07a74fa2af874ac30f86bd8ea07cca4a7e5388a064"
+dependencies = [
+ "anchor-syn",
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-constant"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "730d6df8ae120321c5c25e0779e61789e4b70dc8297102248902022f286102e4"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-error"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27e6e449cc3a37b2880b74dcafb8e5a17b954c0e58e376432d7adc646fb333ef"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-event"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7710e4c54adf485affcd9be9adec5ef8846d9c71d7f31e16ba86ff9fc1dd49f"
+dependencies = [
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-attribute-program"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ecfd49b2aeadeb32f35262230db402abed76ce87e27562b34f61318b2ec83c"
+dependencies = [
+ "anchor-lang-idl",
+ "anchor-syn",
+ "anyhow",
+ "bs58",
+ "heck",
+ "proc-macro2",
+ "quote",
+ "serde_json",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-accounts"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be89d160793a88495af462a7010b3978e48e30a630c91de47ce2c1d3cb7a6149"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-serde"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abc6ee78acb7bfe0c2dd2abc677aaa4789c0281a0c0ef01dbf6fe85e0fd9e6e4"
+dependencies = [
+ "anchor-syn",
+ "borsh-derive-internal",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-space"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "134a01c0703f6fd355a0e472c033f6f3e41fac1ef6e370b20c50f4c8d022cea7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-lang"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6bab117055905e930f762c196e08f861f8dfe7241b92cee46677a3b15561a0a"
+dependencies = [
+ "anchor-attribute-access-control",
+ "anchor-attribute-account",
+ "anchor-attribute-constant",
+ "anchor-attribute-error",
+ "anchor-attribute-event",
+ "anchor-attribute-program",
+ "anchor-derive-accounts",
+ "anchor-derive-serde",
+ "anchor-derive-space",
+ "anchor-lang-idl",
+ "base64 0.21.7",
+ "bincode",
+ "borsh 0.10.4",
+ "bytemuck",
+ "solana-program",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "anchor-lang-idl"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e8599d21995f68e296265aa5ab0c3cef582fd58afec014d01bd0bce18a4418"
+dependencies = [
+ "anchor-lang-idl-spec",
+ "anyhow",
+ "heck",
+ "regex",
+ "serde",
+ "serde_json",
+ "sha2 0.10.9",
+]
+
+[[package]]
+name = "anchor-lang-idl-spec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838"
+dependencies = [
+ "anyhow",
+ "serde",
+]
+
+[[package]]
+name = "anchor-spl"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c08cb5d762c0694f74bd02c9a5b04ea53cefc496e2c27b3234acffca5cd076b"
+dependencies = [
+ "anchor-lang",
+ "spl-associated-token-account",
+ "spl-pod",
+ "spl-token",
+ "spl-token-2022",
+ "spl-token-group-interface",
+ "spl-token-metadata-interface",
+]
+
+[[package]]
+name = "anchor-syn"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dc7a6d90cc643df0ed2744862cdf180587d1e5d28936538c18fc8908489ed67"
+dependencies = [
+ "anyhow",
+ "bs58",
+ "cargo_toml",
+ "heck",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "sha2 0.10.9",
+ "syn 1.0.109",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.99"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100"
+
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "base64"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d"
+
+[[package]]
+name = "blake3"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "borsh"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee"
+dependencies = [
+ "borsh-derive 0.10.4",
+ "hashbrown 0.13.2",
+]
+
+[[package]]
+name = "borsh"
+version = "1.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce"
+dependencies = [
+ "borsh-derive 1.5.7",
+ "cfg_aliases",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89"
+dependencies = [
+ "borsh-derive-internal",
+ "borsh-schema-derive-internal",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "1.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3"
+dependencies = [
+ "once_cell",
+ "proc-macro-crate 3.3.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "borsh-derive-internal"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-schema-derive-internal"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bs58"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+
+[[package]]
+name = "bv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340"
+dependencies = [
+ "feature-probe",
+ "serde",
+]
+
+[[package]]
+name = "bytemuck"
+version = "1.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cargo_toml"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be"
+dependencies = [
+ "serde",
+ "toml 0.8.23",
+]
+
+[[package]]
+name = "cc"
+version = "1.2.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "console_log"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f"
+dependencies = [
+ "log",
+ "web-sys",
+]
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
+
+[[package]]
+name = "cpi-helper"
+version = "0.1.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=34321ac15e47e0dafd25d66659e2f3d1b9b6db8f#34321ac15e47e0dafd25d66659e2f3d1b9b6db8f"
+dependencies = [
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "cpi-helper"
+version = "0.1.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a#c09287a8b1f236fcc057f474d8a773a0fb7758df"
+dependencies = [
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "rand_core 0.6.4",
+ "typenum",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "4.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "curve25519-dalek-derive",
+ "digest 0.10.7",
+ "fiat-crypto",
+ "rand_core 0.6.4",
+ "rustc_version",
+ "serde",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "derivation-path"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0"
+
+[[package]]
+name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer 0.10.4",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "endpoint-interface"
+version = "0.1.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a#c09287a8b1f236fcc057f474d8a773a0fb7758df"
+dependencies = [
+ "anchor-lang",
+ "cpi-helper 0.1.0 (git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a)",
+ "messagelib-interface-latest",
+ "solana-helper",
+ "utils-latest",
+]
+
+[[package]]
+name = "endpoint-mock"
+version = "0.1.0"
+dependencies = [
+ "anchor-lang",
+ "cpi-helper 0.1.0 (git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=34321ac15e47e0dafd25d66659e2f3d1b9b6db8f)",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "feature-probe"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da"
+
+[[package]]
+name = "fiat-crypto"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
+
+[[package]]
+name = "five8"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875"
+dependencies = [
+ "five8_core",
+]
+
+[[package]]
+name = "five8_const"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b"
+dependencies = [
+ "five8_core",
+]
+
+[[package]]
+name = "five8_core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+dependencies = [
+ "ahash",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.15.5",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keccak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654"
+dependencies = [
+ "cpufeatures",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "libc"
+version = "0.2.175"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+
+[[package]]
+name = "libsecp256k1"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73"
+dependencies = [
+ "arrayref",
+ "base64 0.12.3",
+ "digest 0.9.0",
+ "libsecp256k1-core",
+ "libsecp256k1-gen-ecmult",
+ "libsecp256k1-gen-genmult",
+ "rand 0.7.3",
+ "serde",
+ "sha2 0.9.9",
+]
+
+[[package]]
+name = "libsecp256k1-core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80"
+dependencies = [
+ "crunchy",
+ "digest 0.9.0",
+ "subtle",
+]
+
+[[package]]
+name = "libsecp256k1-gen-ecmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "libsecp256k1-gen-genmult"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "merlin"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d"
+dependencies = [
+ "byteorder",
+ "keccak",
+ "rand_core 0.6.4",
+ "zeroize",
+]
+
+[[package]]
+name = "messagelib-interface-latest"
+version = "0.1.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a#c09287a8b1f236fcc057f474d8a773a0fb7758df"
+dependencies = [
+ "anchor-lang",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a"
+dependencies = [
+ "num_enum_derive",
+ "rustversion",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d"
+dependencies = [
+ "proc-macro-crate 3.3.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "oapp-latest"
+version = "0.2.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a#c09287a8b1f236fcc057f474d8a773a0fb7758df"
+dependencies = [
+ "anchor-lang",
+ "endpoint-interface",
+]
+
+[[package]]
+name = "oft"
+version = "0.1.0"
+dependencies = [
+ "anchor-lang",
+ "anchor-spl",
+ "oapp-latest",
+ "solana-helper",
+ "utils-latest",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "polyval"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "qstring"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.16",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.143"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "sha2"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "sha3"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest 0.10.7",
+ "keccak",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "solana-account"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258"
+dependencies = [
+ "solana-account-info",
+ "solana-clock",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-account-info"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da"
+dependencies = [
+ "bincode",
+ "serde",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-address-lookup-table-interface"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395"
+dependencies = [
+ "bincode",
+ "bytemuck",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-slot-hashes",
+]
+
+[[package]]
+name = "solana-atomic-u64"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2"
+dependencies = [
+ "parking_lot",
+]
+
+[[package]]
+name = "solana-big-mod-exp"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-bincode"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc"
+dependencies = [
+ "bincode",
+ "serde",
+ "solana-instruction",
+]
+
+[[package]]
+name = "solana-blake3-hasher"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672"
+dependencies = [
+ "blake3",
+ "solana-define-syscall",
+ "solana-hash",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-borsh"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.7",
+]
+
+[[package]]
+name = "solana-clock"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-cpi"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11"
+dependencies = [
+ "solana-account-info",
+ "solana-define-syscall",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-stable-layout",
+]
+
+[[package]]
+name = "solana-curve25519"
+version = "2.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b162f50499b391b785d57b2f2c73e3b9754d88fd4894bef444960b00bda8dcca"
+dependencies = [
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "solana-define-syscall",
+ "subtle",
+ "thiserror 2.0.16",
+]
+
+[[package]]
+name = "solana-decode-error"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "solana-define-syscall"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2"
+
+[[package]]
+name = "solana-derivation-path"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b"
+dependencies = [
+ "derivation-path",
+ "qstring",
+ "uriparse",
+]
+
+[[package]]
+name = "solana-epoch-rewards"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-hash",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-epoch-schedule"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-example-mocks"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-address-lookup-table-interface",
+ "solana-clock",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keccak-hasher",
+ "solana-message",
+ "solana-nonce",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+ "thiserror 2.0.16",
+]
+
+[[package]]
+name = "solana-feature-gate-interface"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d"
+dependencies = [
+ "bincode",
+ "serde",
+ "serde_derive",
+ "solana-account",
+ "solana-account-info",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-fee-calculator"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d"
+dependencies = [
+ "log",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "solana-hash"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63"
+dependencies = [
+ "borsh 1.5.7",
+ "bytemuck",
+ "bytemuck_derive",
+ "five8",
+ "js-sys",
+ "serde",
+ "serde_derive",
+ "solana-atomic-u64",
+ "solana-sanitize",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-helper"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09c6deff8c48efb84b5828db064ad9873ef3445f129f888b4b6a664bd5220e35"
+dependencies = [
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "solana-instruction"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47298e2ce82876b64f71e9d13a46bc4b9056194e7f9937ad3084385befa50885"
+dependencies = [
+ "bincode",
+ "borsh 1.5.7",
+ "getrandom 0.2.16",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-define-syscall",
+ "solana-pubkey",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-instructions-sysvar"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57"
+dependencies = [
+ "bitflags",
+ "solana-account-info",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-serialize-utils",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-keccak-hasher"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79"
+dependencies = [
+ "sha3",
+ "solana-define-syscall",
+ "solana-hash",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-last-restart-slot"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-loader-v2-interface"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-loader-v3-interface"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-loader-v4-interface"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e"
+dependencies = [
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-message"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b"
+dependencies = [
+ "bincode",
+ "blake3",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "solana-bincode",
+ "solana-hash",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-short-vec",
+ "solana-system-interface",
+ "solana-transaction-error",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-msg"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092"
+dependencies = [
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-native-token"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9"
+
+[[package]]
+name = "solana-nonce"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-pubkey",
+ "solana-sha256-hasher",
+]
+
+[[package]]
+name = "solana-program"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05"
+dependencies = [
+ "bincode",
+ "blake3",
+ "borsh 0.10.4",
+ "borsh 1.5.7",
+ "bs58",
+ "bytemuck",
+ "console_error_panic_hook",
+ "console_log",
+ "getrandom 0.2.16",
+ "lazy_static",
+ "log",
+ "memoffset",
+ "num-bigint",
+ "num-derive",
+ "num-traits",
+ "rand 0.8.5",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "solana-account-info",
+ "solana-address-lookup-table-interface",
+ "solana-atomic-u64",
+ "solana-big-mod-exp",
+ "solana-bincode",
+ "solana-blake3-hasher",
+ "solana-borsh",
+ "solana-clock",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-define-syscall",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-example-mocks",
+ "solana-feature-gate-interface",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-keccak-hasher",
+ "solana-last-restart-slot",
+ "solana-loader-v2-interface",
+ "solana-loader-v3-interface",
+ "solana-loader-v4-interface",
+ "solana-message",
+ "solana-msg",
+ "solana-native-token",
+ "solana-nonce",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-program-option",
+ "solana-program-pack",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-secp256k1-recover",
+ "solana-serde-varint",
+ "solana-serialize-utils",
+ "solana-sha256-hasher",
+ "solana-short-vec",
+ "solana-slot-hashes",
+ "solana-slot-history",
+ "solana-stable-layout",
+ "solana-stake-interface",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-sysvar-id",
+ "solana-vote-interface",
+ "thiserror 2.0.16",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-program-entrypoint"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd"
+dependencies = [
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-program-error"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775"
+dependencies = [
+ "borsh 1.5.7",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-program-memory"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712"
+dependencies = [
+ "solana-define-syscall",
+]
+
+[[package]]
+name = "solana-program-option"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0"
+
+[[package]]
+name = "solana-program-pack"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b"
+dependencies = [
+ "solana-program-error",
+]
+
+[[package]]
+name = "solana-pubkey"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.7",
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "five8",
+ "five8_const",
+ "getrandom 0.2.16",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-atomic-u64",
+ "solana-decode-error",
+ "solana-define-syscall",
+ "solana-sanitize",
+ "solana-sha256-hasher",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-rent"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-sanitize"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf"
+
+[[package]]
+name = "solana-sdk-ids"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f"
+dependencies = [
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-sdk-macro"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df"
+dependencies = [
+ "bs58",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "solana-secp256k1-recover"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496"
+dependencies = [
+ "libsecp256k1",
+ "solana-define-syscall",
+ "thiserror 2.0.16",
+]
+
+[[package]]
+name = "solana-security-txt"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183"
+
+[[package]]
+name = "solana-seed-derivable"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f"
+dependencies = [
+ "solana-derivation-path",
+]
+
+[[package]]
+name = "solana-seed-phrase"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15"
+dependencies = [
+ "hmac",
+ "pbkdf2",
+ "sha2 0.10.9",
+]
+
+[[package]]
+name = "solana-serde-varint"
+version = "2.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "solana-serialize-utils"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-sha256-hasher"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44"
+dependencies = [
+ "sha2 0.10.9",
+ "solana-define-syscall",
+ "solana-hash",
+]
+
+[[package]]
+name = "solana-short-vec"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "solana-signature"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c"
+dependencies = [
+ "five8",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-signer"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b"
+dependencies = [
+ "solana-pubkey",
+ "solana-signature",
+ "solana-transaction-error",
+]
+
+[[package]]
+name = "solana-slot-hashes"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "solana-hash",
+ "solana-sdk-ids",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-slot-history"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e"
+dependencies = [
+ "bv",
+ "serde",
+ "serde_derive",
+ "solana-sdk-ids",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-stable-layout"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "solana-stake-interface"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c"
+dependencies = [
+ "borsh 0.10.4",
+ "borsh 1.5.7",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-system-interface",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-system-interface"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90"
+dependencies = [
+ "js-sys",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-pubkey",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-sysvar"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db"
+dependencies = [
+ "base64 0.22.1",
+ "bincode",
+ "bytemuck",
+ "bytemuck_derive",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "solana-account-info",
+ "solana-clock",
+ "solana-define-syscall",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-fee-calculator",
+ "solana-hash",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-last-restart-slot",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sanitize",
+ "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-slot-hashes",
+ "solana-slot-history",
+ "solana-stake-interface",
+ "solana-sysvar-id",
+]
+
+[[package]]
+name = "solana-sysvar-id"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1"
+dependencies = [
+ "solana-pubkey",
+ "solana-sdk-ids",
+]
+
+[[package]]
+name = "solana-transaction-error"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1"
+dependencies = [
+ "solana-instruction",
+ "solana-sanitize",
+]
+
+[[package]]
+name = "solana-vote-interface"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3"
+dependencies = [
+ "bincode",
+ "num-derive",
+ "num-traits",
+ "serde",
+ "serde_derive",
+ "solana-clock",
+ "solana-decode-error",
+ "solana-hash",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-rent",
+ "solana-sdk-ids",
+ "solana-serde-varint",
+ "solana-serialize-utils",
+ "solana-short-vec",
+ "solana-system-interface",
+]
+
+[[package]]
+name = "solana-zk-sdk"
+version = "2.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bb171c0f76c420a7cb6aabbe5fa85a1a009d5bb4009189c43e1a03aff9446d7"
+dependencies = [
+ "aes-gcm-siv",
+ "base64 0.22.1",
+ "bincode",
+ "bytemuck",
+ "bytemuck_derive",
+ "curve25519-dalek",
+ "itertools",
+ "js-sys",
+ "merlin",
+ "num-derive",
+ "num-traits",
+ "rand 0.8.5",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "sha3",
+ "solana-derivation-path",
+ "solana-instruction",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-seed-derivable",
+ "solana-seed-phrase",
+ "solana-signature",
+ "solana-signer",
+ "subtle",
+ "thiserror 2.0.16",
+ "wasm-bindgen",
+ "zeroize",
+]
+
+[[package]]
+name = "spl-associated-token-account"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3"
+dependencies = [
+ "borsh 1.5.7",
+ "num-derive",
+ "num-traits",
+ "solana-program",
+ "spl-associated-token-account-client",
+ "spl-token",
+ "spl-token-2022",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-associated-token-account-client"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb"
+dependencies = [
+ "solana-instruction",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "spl-discriminator"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3"
+dependencies = [
+ "bytemuck",
+ "solana-program-error",
+ "solana-sha256-hasher",
+ "spl-discriminator-derive",
+]
+
+[[package]]
+name = "spl-discriminator-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750"
+dependencies = [
+ "quote",
+ "spl-discriminator-syn",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "spl-discriminator-syn"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.9",
+ "syn 2.0.106",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-elgamal-registry"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "solana-zk-sdk",
+ "spl-pod",
+ "spl-token-confidential-transfer-proof-extraction",
+]
+
+[[package]]
+name = "spl-memo"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb"
+dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+]
+
+[[package]]
+name = "spl-pod"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799"
+dependencies = [
+ "borsh 1.5.7",
+ "bytemuck",
+ "bytemuck_derive",
+ "num-derive",
+ "num-traits",
+ "solana-decode-error",
+ "solana-msg",
+ "solana-program-error",
+ "solana-program-option",
+ "solana-pubkey",
+ "solana-zk-sdk",
+ "thiserror 2.0.16",
+]
+
+[[package]]
+name = "spl-program-error"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1"
+dependencies = [
+ "num-derive",
+ "num-traits",
+ "solana-program",
+ "spl-program-error-derive",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-program-error-derive"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.9",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "spl-tlv-account-resolution"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token"
+version = "7.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "num_enum",
+ "solana-program",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-2022"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "num_enum",
+ "solana-program",
+ "solana-security-txt",
+ "solana-zk-sdk",
+ "spl-elgamal-registry",
+ "spl-memo",
+ "spl-pod",
+ "spl-token",
+ "spl-token-confidential-transfer-ciphertext-arithmetic",
+ "spl-token-confidential-transfer-proof-extraction",
+ "spl-token-confidential-transfer-proof-generation",
+ "spl-token-group-interface",
+ "spl-token-metadata-interface",
+ "spl-transfer-hook-interface",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-ciphertext-arithmetic"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd"
+dependencies = [
+ "base64 0.22.1",
+ "bytemuck",
+ "solana-curve25519",
+ "solana-zk-sdk",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-proof-extraction"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96"
+dependencies = [
+ "bytemuck",
+ "solana-curve25519",
+ "solana-program",
+ "solana-zk-sdk",
+ "spl-pod",
+ "thiserror 2.0.16",
+]
+
+[[package]]
+name = "spl-token-confidential-transfer-proof-generation"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d"
+dependencies = [
+ "curve25519-dalek",
+ "solana-zk-sdk",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-group-interface"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-token-metadata-interface"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb"
+dependencies = [
+ "borsh 1.5.7",
+ "num-derive",
+ "num-traits",
+ "solana-borsh",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-transfer-hook-interface"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-cpi",
+ "solana-decode-error",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-error",
+ "solana-pubkey",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-tlv-account-resolution",
+ "spl-type-length-value",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "spl-type-length-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9"
+dependencies = [
+ "bytemuck",
+ "num-derive",
+ "num-traits",
+ "solana-account-info",
+ "solana-decode-error",
+ "solana-msg",
+ "solana-program-error",
+ "spl-discriminator",
+ "spl-pod",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
+dependencies = [
+ "thiserror-impl 2.0.16",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_write",
+ "winnow",
+]
+
+[[package]]
+name = "toml_write"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+
+[[package]]
+name = "typenum"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "uriparse"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff"
+dependencies = [
+ "fnv",
+ "lazy_static",
+]
+
+[[package]]
+name = "utils-latest"
+version = "0.1.0"
+source = "git+https://github.com/LayerZero-Labs/LayerZero-v2.git?rev=c09287a#c09287a8b1f236fcc057f474d8a773a0fb7758df"
+dependencies = [
+ "anchor-lang",
+]
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.7.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
diff --git a/examples/oft-main/Cargo.toml b/examples/oft-main/Cargo.toml
new file mode 100644
index 0000000000..ae8c8729ca
--- /dev/null
+++ b/examples/oft-main/Cargo.toml
@@ -0,0 +1,16 @@
+[workspace]
+members = ["programs/*"]
+resolver = "2"
+
+# [features]
+# idl-build = ["anchor-lang/idl-build"]
+
+[profile.release]
+overflow-checks = true
+lto = "fat"
+codegen-units = 1
+
+[profile.release.build-override]
+opt-level = 3
+incremental = false
+codegen-units = 1
diff --git a/examples/oft-main/README.md b/examples/oft-main/README.md
new file mode 100644
index 0000000000..66a9e7da55
--- /dev/null
+++ b/examples/oft-main/README.md
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+
+OFT Multi-VM Example
+
+
+A complete example for deploying and wiring an Omnichain Fungible Token (OFT) across EVM, Solana, Sui, and Starknet.
+
+
+## Quick Start
+
+```bash
+# 1. Install dependencies
+pnpm install
+
+# 2. Copy and configure environment
+cp .env.example .env
+# Edit .env with your keys and RPC URLs
+
+# 3. Deploy on each VM (see Deploy sections below)
+
+# 4. Wire all chains together
+npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts
+
+# 5. Send tokens cross-chain
+npx hardhat lz:oft:send --src-eid --dst-eid --amount 1 --to
+```
+
+## Supported VMs
+
+| VM | Endpoint ID (Mainnet) | Endpoint ID (Testnet) | Status |
+|----|----------------------|----------------------|--------|
+| Arbitrum | 30110 | 40231 | ✅ |
+| Solana | 30168 | 40168 | ✅ |
+| Sui | 30280 | 40245 | ✅ |
+| Starknet | 30500 | 40253 | ✅ |
+
+## Environment Setup
+
+Create `.env` from the example and configure:
+
+```bash
+cp .env.example .env
+```
+
+### Required Variables
+
+```bash
+# EVM (Arbitrum)
+PRIVATE_KEY=0x... # EVM deployer private key
+RPC_URL_ARBITRUM=... # Arbitrum RPC URL
+
+# Solana (optional)
+SOLANA_PRIVATE_KEY=... # Base58 or [1,2,3...] array format
+RPC_URL_SOLANA=... # Solana RPC URL
+
+# Sui (optional)
+SUI_PRIVATE_KEY=... # Base64 or hex format
+RPC_URL_SUI=... # Sui RPC URL
+
+# Starknet (optional)
+STARKNET_ACCOUNT_ADDRESS=0x... # Deployed account contract address
+STARKNET_PRIVATE_KEY=0x... # Account private key
+RPC_URL_STARKNET=... # Starknet RPC URL
+```
+
+## Deploy
+
+### EVM (Arbitrum)
+
+```bash
+npx hardhat lz:deploy
+# Select: arbitrum-mainnet (or arbitrum-sepolia for testnet)
+# Select: MyOFT
+```
+
+### Solana
+
+```bash
+# 1. Build the program
+anchor build -v -e OFT_ID=$(anchor keys list | grep oft | awk '{print $2}')
+
+# 2. Deploy the program
+solana program deploy --program-id target/deploy/oft-keypair.json target/verifiable/oft.so -u mainnet-beta
+
+# 3. Create OFT store
+npx hardhat lz:oft:solana:create --eid 30168 --program-id --only-oft-store true --amount 100000000000
+```
+
+### Sui
+
+```bash
+# 1. Deploy token package
+cd sui/token
+sui client publish --gas-budget 500000000 --json > token_deploy.json
+
+# 2. Deploy OFT package
+cd ../oft
+sui client publish --gas-budget 1000000000 --json > oft_deploy.json
+
+# 3. Initialize OFT (see sui/README.md for full details)
+# Creates sui/deploy.json with oftPackageId
+```
+
+### Starknet
+
+```bash
+# Deploy ERC20 + OFT adapter (creates starknet/deploy.json)
+node starknet/deploy-starknet-mainnet.js
+```
+
+## Configure
+
+Edit `layerzero.config.ts` to enable/disable VMs:
+
+```typescript
+const INCLUDE_EVM = true
+const INCLUDE_SOLANA = false // Set true after deploying
+const INCLUDE_SUI = true
+const INCLUDE_STARKNET = true
+```
+
+The config automatically:
+- Loads deployment addresses from `./sui/deploy.json` and `./starknet/deploy.json`
+- Generates full mesh pathways between all enabled VMs
+- Sets appropriate enforced options for each destination chain
+
+## Wire
+
+Connect all deployed OFTs:
+
+```bash
+npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts
+```
+
+This sets:
+- Peers (bidirectional address registration)
+- Send/Receive libraries
+- DVN and Executor configurations
+- Enforced options (gas limits for each destination)
+
+## Send Tokens
+
+### EVM → Any
+
+```bash
+# To Sui
+npx hardhat lz:oft:send --src-eid 30110 --dst-eid 30280 --amount 1 --to
+
+# To Starknet
+npx hardhat lz:oft:send --src-eid 30110 --dst-eid 30500 --amount 1 --to
+
+# To Solana
+npx hardhat lz:oft:send --src-eid 30110 --dst-eid 30168 --amount 1 --to
+```
+
+### Sui → Any
+
+```bash
+npx hardhat lz:oft:send \
+ --src-eid 30280 \
+ --dst-eid 30110 \
+ --amount 1 \
+ --to \
+ --sui-oft-package-id \
+ --sui-oft-object-id \
+ --sui-oapp-object-id \
+ --sui-token-type
+```
+
+### Starknet → Any
+
+```bash
+npx hardhat lz:oft:send \
+ --src-eid 30500 \
+ --dst-eid 30110 \
+ --amount 1 \
+ --to \
+ --oft-address
+```
+
+### Solana → Any
+
+```bash
+npx hardhat lz:oft:send --src-eid 30168 --dst-eid 30110 --amount 1 --to
+```
+
+## Deployment Files
+
+| VM | Deployment File | Key Fields |
+|----|-----------------|------------|
+| EVM | `deployments//MyOFT.json` | Auto-loaded by hardhat-deploy |
+| Solana | `deployments/solana-mainnet/OFT.json` | `oftStore` |
+| Sui | `sui/deploy.json` | `oftPackageId` |
+| Starknet | `starknet/deploy.json` | `oftAddress` |
+
+## Enforced Options
+
+Gas/compute limits for `lzReceive` on each destination:
+
+| Destination | Gas | Value | Notes |
+|-------------|-----|-------|-------|
+| EVM | 80,000 | 0 | Standard EVM gas |
+| Solana | 200,000 | 2,039,280 | CU limit + rent for token account |
+| Sui | 5,000 | 0 | Sui gas budget |
+| Starknet | 500,000 | 0 | Cairo steps |
+
+## Troubleshooting
+
+### "Missing required deployment file"
+Deploy on that VM first, or disable it in `layerzero.config.ts`.
+
+### "Cannot find module '@layerzerolabs/devtools-sui'"
+```bash
+pnpm install
+pnpm build
+```
+
+### "Insufficient balance" on Starknet send
+Ensure your Starknet account has:
+1. Tokens to send (check ERC20 balance)
+2. STRK for gas fees
+
+### "LZ_OAPP_CORE_NOT_ENOUGH_NATIVE_ALLOWANCE" on Starknet
+The send task automatically approves STRK for fees. Ensure you have enough STRK in your account.
+
+### Wire task shows "0 transactions needed"
+All pathways are already configured. Run with `--dry-run` to see current state.
+
+## Architecture
+
+```
+┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
+│ Arbitrum │────▶│ Solana │────▶│ Sui │────▶│ Starknet │
+│ (EVM) │◀────│ (SVM) │◀────│ (Move) │◀────│ (Cairo) │
+└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
+ │ │ │ │
+ └──────────────────┴───────────────────┴───────────────────┘
+ Full Mesh
+```
+
+Each OFT is connected to every other OFT via LayerZero, enabling direct transfers between any pair of chains.
+
+## Resources
+
+- [LayerZero Docs](https://docs.layerzero.network/)
+- [OFT Standard](https://docs.layerzero.network/v2/concepts/applications/oft-standard)
+- [Endpoint IDs](https://docs.layerzero.network/v2/deployments/deployed-contracts)
+- [LayerZero Scan](https://layerzeroscan.com/) - Track cross-chain messages
diff --git a/examples/oft-main/contracts/MyOFT.sol b/examples/oft-main/contracts/MyOFT.sol
new file mode 100644
index 0000000000..b3bce4c9a5
--- /dev/null
+++ b/examples/oft-main/contracts/MyOFT.sol
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
+import { OFT } from "@layerzerolabs/oft-evm/contracts/OFT.sol";
+
+contract MyOFT is OFT {
+ constructor(
+ string memory _name,
+ string memory _symbol,
+ address _lzEndpoint,
+ address _delegate
+ ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {
+ _mint(msg.sender, 100000 * (10 ** 18));
+ }
+}
diff --git a/examples/oft-main/contracts/mocks/MyOFTMock.sol b/examples/oft-main/contracts/mocks/MyOFTMock.sol
new file mode 100644
index 0000000000..3ebb888d4c
--- /dev/null
+++ b/examples/oft-main/contracts/mocks/MyOFTMock.sol
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { MyOFT } from "../MyOFT.sol";
+
+// @dev WARNING: This is for testing purposes only
+contract MyOFTMock is MyOFT {
+ constructor(
+ string memory _name,
+ string memory _symbol,
+ address _lzEndpoint,
+ address _delegate
+ ) MyOFT(_name, _symbol, _lzEndpoint, _delegate) {}
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+}
diff --git a/examples/oft-main/deploy/MyOFT.ts b/examples/oft-main/deploy/MyOFT.ts
new file mode 100644
index 0000000000..5e1685ae1e
--- /dev/null
+++ b/examples/oft-main/deploy/MyOFT.ts
@@ -0,0 +1,53 @@
+import assert from 'assert'
+
+import { type DeployFunction } from 'hardhat-deploy/types'
+
+const contractName = 'MyOFT'
+
+const deploy: DeployFunction = async (hre) => {
+ const { getNamedAccounts, deployments } = hre
+
+ const { deploy } = deployments
+ const { deployer } = await getNamedAccounts()
+
+ assert(deployer, 'Missing named deployer account')
+
+ console.log(`Network: ${hre.network.name}`)
+ console.log(`Deployer: ${deployer}`)
+
+ // This is an external deployment pulled in from @layerzerolabs/lz-evm-sdk-v2
+ //
+ // @layerzerolabs/toolbox-hardhat takes care of plugging in the external deployments
+ // from @layerzerolabs packages based on the configuration in your hardhat config
+ //
+ // For this to work correctly, your network config must define an eid property
+ // set to `EndpointId` as defined in @layerzerolabs/lz-definitions
+ //
+ // For example:
+ //
+ // networks: {
+ // 'arbitrum-sepolia': {
+ // ...
+ // eid: 40231 // Arbitrum Sepolia
+ // }
+ // }
+ const endpointV2Deployment = await hre.deployments.get('EndpointV2')
+
+ const { address } = await deploy(contractName, {
+ from: deployer,
+ args: [
+ 'MyOFT', // name
+ 'MOFT', // symbol
+ endpointV2Deployment.address, // LayerZero's EndpointV2 address
+ deployer, // owner
+ ],
+ log: true,
+ skipIfAlreadyDeployed: false,
+ })
+
+ console.log(`Deployed contract: ${contractName}, network: ${hre.network.name}, address: ${address}`)
+}
+
+deploy.tags = [contractName]
+
+export default deploy
diff --git a/examples/oft-main/docs/move.layerzero.config.ts b/examples/oft-main/docs/move.layerzero.config.ts
new file mode 100644
index 0000000000..ac5091bb12
--- /dev/null
+++ b/examples/oft-main/docs/move.layerzero.config.ts
@@ -0,0 +1,121 @@
+// NOTE: This config is an example for wiring Solana -> Aptos.
+// See wiring-to-aptos.md for more information.
+import { EndpointId } from '@layerzerolabs/lz-definitions'
+import { ExecutorOptionType } from '@layerzerolabs/lz-v2-utilities'
+import { OAppOmniGraphHardhat, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat'
+
+enum MsgType {
+ SEND = 1,
+ SEND_AND_CALL = 2,
+}
+const aptosContract: OmniPointHardhat = {
+ eid: EndpointId.APTOS_V2_TESTNET as EndpointId,
+ address: 'YOUR_DEPLOYED_APTOS_OFT_ADDRESS',
+}
+const solanaContract: OmniPointHardhat = {
+ eid: EndpointId.SOLANA_V2_TESTNET as EndpointId,
+ address: 'YOUR_DEPLOYED_SOLANA_OAPP_ADDRESS',
+}
+
+const layerZeroDVNAptosAddress = '0x756f8ab056688d22687740f4a9aeec3b361170b28d08b719e28c4d38eed1043e'
+const layerZeroDVNSolanaAddress = '4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb'
+
+const config: OAppOmniGraphHardhat = {
+ contracts: [
+ {
+ contract: solanaContract,
+ config: {
+ owner: 'YOUR_SOLANA_OWNER_ADDRESS',
+ delegate: 'YOUR_SOLANA_OWNER_ADDRESS',
+ },
+ },
+ {
+ contract: aptosContract,
+ config: {
+ owner: 'YOUR_APTOS_ACCOUNT_ADDRESS',
+ delegate: 'YOUR_APTOS_ACCOUNT_ADDRESS',
+ },
+ },
+ ],
+ connections: [
+ {
+ from: aptosContract,
+ to: solanaContract,
+ config: {
+ enforcedOptions: [
+ {
+ msgType: MsgType.SEND_AND_CALL,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 5_000,
+ value: 0,
+ },
+ ],
+ sendLibrary: '0xcc1c03aed42e2841211865758b5efe93c0dde2cb7a2a5dc6cf25a4e33ad23690',
+ receiveLibraryConfig: {
+ receiveLibrary: '0xcc1c03aed42e2841211865758b5efe93c0dde2cb7a2a5dc6cf25a4e33ad23690',
+ gracePeriod: BigInt(0),
+ },
+ sendConfig: {
+ executorConfig: {
+ maxMessageSize: 10_000,
+ executor: '0x93353700091200ef9fdc536ce6a86182cc7e62da25f94356be9421c6310b9585',
+ },
+ ulnConfig: {
+ confirmations: BigInt(10),
+ requiredDVNs: [layerZeroDVNAptosAddress],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ receiveConfig: {
+ ulnConfig: {
+ confirmations: BigInt(15),
+ requiredDVNs: [layerZeroDVNAptosAddress],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ },
+ },
+ {
+ from: solanaContract,
+ to: aptosContract,
+ config: {
+ enforcedOptions: [
+ {
+ msgType: 1,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 200_000,
+ value: 0,
+ },
+ ],
+ sendLibrary: '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH',
+ receiveLibraryConfig: {
+ receiveLibrary: '7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH',
+ gracePeriod: BigInt(0),
+ },
+ sendConfig: {
+ executorConfig: {
+ maxMessageSize: 10_000,
+ executor: 'AwrbHeCyniXaQhiJZkLhgWdUCteeWSGaSN1sTfLiY7xK',
+ },
+ ulnConfig: {
+ confirmations: BigInt(15),
+ requiredDVNs: [layerZeroDVNSolanaAddress],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ receiveConfig: {
+ ulnConfig: {
+ confirmations: BigInt(10),
+ requiredDVNs: [layerZeroDVNSolanaAddress],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ },
+ },
+ ],
+}
+export default config
diff --git a/examples/oft-main/docs/wiring-to-aptos.md b/examples/oft-main/docs/wiring-to-aptos.md
new file mode 100644
index 0000000000..79a6ce17b4
--- /dev/null
+++ b/examples/oft-main/docs/wiring-to-aptos.md
@@ -0,0 +1,63 @@
+### Wiring Solana to Move-VM (Aptos, Initia, Movement, etc.)
+
+:warning: **Important Limitations for Solana ↔ Move-VM Pathways**
+
+Currently, you can only perform **one-way wiring from Solana → Move-VM** using this example. For the reverse pathway (Move-VM → Solana), you must use the [OFT Aptos Move example](https://github.com/LayerZero-Labs/devtools/tree/main/examples/oft-aptos-move). Please follow the deployment instructions in the README.md of the `oft-aptos-move` example for deploying to Move-VM and configuring the Move-VM → Solana pathway.
+
+#### Configuration Steps for Solana → Aptos
+
+:information_source: **For bidirectional Solana ↔ Aptos communication, deploy both examples:**
+
+- **Solana → Aptos**: Use this example
+- **Aptos → Solana**: Use the [OFT Aptos Move example](https://github.com/LayerZero-Labs/devtools/tree/main/examples/oft-aptos-move)
+
+#### Deployment Process
+
+1. **Create and Deploy Solana Example**
+
+ - Create the Solana example: `LZ_ENABLE_SOLANA_OAPP_EXAMPLE=1 npx create-lz-oapp@latest`
+ - Deploy to Solana following the deployment instructions in the Solana example README
+
+2. **Create and Deploy Aptos Move Example**
+
+ - Create the Aptos Move example: `LZ_ENABLE_EXPERIMENTAL_MOVE_VM_EXAMPLES=1 npx create-lz-oapp@latest`
+ - Deploy to Aptos following the deployment and initialization instructions in the Aptos example README
+
+ Your directory structure should look like this:
+
+ ```
+ your-folder/
+ ├── your-aptos-example/
+ └── your-solana-example/
+ ```
+
+3. **Configure Solana Example**
+
+ - Navigate to the Solana example directory
+ - Use the example configuration at `./docs/move.layerzero.config.ts`
+ - Fill out the configuration with your desired values
+ - Replace `./layerzero.config.ts` with the completed `move.layerzero.config.ts` file
+
+4. **Wire Solana to Aptos**
+
+ Execute the following commands in the Solana example directory:
+
+ ```bash
+ npx hardhat lz:oapp:solana:init-config --oapp-config move.layerzero.config.ts
+ ```
+
+ ```bash
+ npx hardhat lz:oapp:wire --oapp-config move.layerzero.config.ts
+ ```
+
+ If these commands succeed, you have successfully wired the Solana contract to the Aptos Move contract.
+
+5. **Wire Aptos to Solana**
+
+ - Transfer the `move.layerzero.config.ts` file from the Solana example to the Aptos Move example directory
+ - In the Aptos Move example directory, run:
+ ```bash
+ pnpm run lz:sdk:move:wire --oapp-config move.layerzero.config.ts
+ ```
+
+ If this command succeeds, you are ready to test the bidirectional pathway.
diff --git a/examples/oft-main/foundry.toml b/examples/oft-main/foundry.toml
new file mode 100644
index 0000000000..9819f073e1
--- /dev/null
+++ b/examples/oft-main/foundry.toml
@@ -0,0 +1,30 @@
+[profile.default]
+solc-version = '0.8.22'
+src = 'contracts'
+out = 'out'
+test = 'test/foundry'
+cache_path = 'cache/foundry'
+optimizer = true
+optimizer_runs = 20_000
+
+libs = [
+ # We provide a set of useful contract utilities
+ # in the lib directory of @layerzerolabs/toolbox-foundry:
+ #
+ # - forge-std
+ # - ds-test
+ # - solidity-bytes-utils
+ 'node_modules/@layerzerolabs/toolbox-foundry/lib',
+ 'node_modules',
+]
+
+remappings = [
+ # Due to a misconfiguration of solidity-bytes-utils, an outdated version
+ # of forge-std is being dragged in
+ #
+ # To remedy this, we'll remap the ds-test and forge-std imports to our own versions
+ 'ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test',
+ 'forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std',
+ '@layerzerolabs/=node_modules/@layerzerolabs/',
+ '@openzeppelin/=node_modules/@openzeppelin/',
+]
diff --git a/examples/oft-main/hardhat.config.ts b/examples/oft-main/hardhat.config.ts
new file mode 100644
index 0000000000..e9e2c1d626
--- /dev/null
+++ b/examples/oft-main/hardhat.config.ts
@@ -0,0 +1,91 @@
+// Force ts-node to use CommonJS mode
+// This must be set before any imports
+process.env.TS_NODE_COMPILER_OPTIONS = JSON.stringify({
+ module: 'commonjs',
+ esModuleInterop: true,
+})
+
+// Get the environment configuration from .env file
+//
+// To make use of automatic environment setup:
+// - Duplicate .env.example file and name it .env
+// - Fill in the environment variables
+import 'dotenv/config'
+
+import 'hardhat-deploy'
+import '@nomicfoundation/hardhat-ethers'
+import '@nomiclabs/hardhat-waffle'
+import 'hardhat-deploy-ethers'
+import 'hardhat-contract-sizer'
+import '@nomiclabs/hardhat-ethers'
+import '@layerzerolabs/toolbox-hardhat'
+
+import { HardhatUserConfig, HttpNetworkAccountsUserConfig } from 'hardhat/types'
+
+import { EndpointId } from '@layerzerolabs/lz-definitions'
+
+import './tasks/index'
+
+// Set your preferred authentication method
+//
+// If you prefer using a mnemonic, set a MNEMONIC environment variable
+// to a valid mnemonic
+const MNEMONIC = process.env.MNEMONIC
+
+// If you prefer to be authenticated using a private key, set a PRIVATE_KEY environment variable
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+
+const accounts: HttpNetworkAccountsUserConfig | undefined = MNEMONIC
+ ? { mnemonic: MNEMONIC }
+ : PRIVATE_KEY
+ ? [PRIVATE_KEY]
+ : undefined
+
+if (accounts == null) {
+ console.warn(
+ 'Could not find MNEMONIC or PRIVATE_KEY environment variables. It will not be possible to execute transactions in your example.'
+ )
+}
+
+const config: HardhatUserConfig = {
+ paths: {
+ cache: 'cache/hardhat',
+ tests: 'test/hardhat',
+ },
+ solidity: {
+ compilers: [
+ {
+ version: '0.8.22',
+ settings: {
+ optimizer: {
+ enabled: true,
+ runs: 200,
+ },
+ },
+ },
+ ],
+ },
+ networks: {
+ arbitrum: {
+ eid: EndpointId.ARBITRUM_V2_MAINNET,
+ url: process.env.RPC_URL_ARBITRUM || 'https://arb1.arbitrum.io/rpc',
+ accounts,
+ },
+ 'arbitrum-sepolia': {
+ eid: EndpointId.ARBSEP_V2_TESTNET,
+ url: process.env.RPC_URL_ARB_SEPOLIA || 'https://arbitrum-sepolia.gateway.tenderly.co',
+ accounts,
+ },
+ hardhat: {
+ // Need this for testing because TestHelperOz5.sol is exceeding the compiled contract size limit
+ allowUnlimitedContractSize: true,
+ },
+ },
+ namedAccounts: {
+ deployer: {
+ default: 0, // wallet address of index[0], of the mnemonic in .env
+ },
+ },
+}
+
+export default config
diff --git a/examples/oft-main/jest.config.ts b/examples/oft-main/jest.config.ts
new file mode 100644
index 0000000000..a5634529d9
--- /dev/null
+++ b/examples/oft-main/jest.config.ts
@@ -0,0 +1,12 @@
+/** @type {import('ts-jest').JestConfigWithTsJest} */
+module.exports = {
+ reporters: [['github-actions', { silent: false }], 'default'],
+ testEnvironment: 'node',
+ testTimeout: 15000,
+ moduleNameMapper: {
+ '^@/(.*)$': '/src/$1',
+ },
+ transform: {
+ '^.+\\.(t|j)sx?$': '@swc/jest',
+ },
+}
diff --git a/examples/oft-main/junk-id.json b/examples/oft-main/junk-id.json
new file mode 100644
index 0000000000..8ccf579ceb
--- /dev/null
+++ b/examples/oft-main/junk-id.json
@@ -0,0 +1,6 @@
+[
+ 101, 96, 5, 237, 143, 245, 198, 118, 241, 242, 185, 196, 246, 72, 152, 231,
+ 30, 170, 168, 48, 19, 92, 179, 54, 175, 98, 167, 177, 62, 91, 162, 83, 255,
+ 175, 71, 42, 217, 187, 228, 197, 222, 137, 131, 197, 89, 69, 190, 209, 113,
+ 186, 78, 149, 158, 115, 255, 26, 162, 25, 122, 247, 1, 33, 92, 96
+]
diff --git a/examples/oft-main/layerzero.config.ts b/examples/oft-main/layerzero.config.ts
new file mode 100644
index 0000000000..f1a46f788e
--- /dev/null
+++ b/examples/oft-main/layerzero.config.ts
@@ -0,0 +1,219 @@
+import fs from 'node:fs'
+import path from 'node:path'
+
+import { EndpointId } from '@layerzerolabs/lz-definitions'
+import { ExecutorOptionType } from '@layerzerolabs/lz-v2-utilities'
+import { generateConnectionsConfig } from '@layerzerolabs/metadata-tools'
+import { OAppEnforcedOption, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat'
+
+// =============================================================================
+// CONFIGURATION
+// =============================================================================
+// Toggle which VMs to include in your deployment.
+// Set to false if you haven't deployed on that VM yet.
+
+const INCLUDE_EVM = true
+const INCLUDE_SOLANA = false // Set to true when you deploy Solana OFT
+const INCLUDE_SUI = true
+const INCLUDE_STARKNET = true
+
+// =============================================================================
+// ENFORCED OPTIONS
+// =============================================================================
+// These define the gas/compute limits for lzReceive on each destination chain.
+// The options array order in pathways is [TO_CHAIN_A_OPTIONS, TO_CHAIN_B_OPTIONS].
+
+const EVM_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
+ {
+ msgType: 1, // SEND
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 80000, // EVM gas units for lzReceive
+ value: 0,
+ },
+]
+
+const SOLANA_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
+ {
+ msgType: 1,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 200000, // Compute units for lzReceive on Solana
+ value: 2039280, // Lamports for SPL token account rent (required for new recipients)
+ },
+]
+
+const SUI_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
+ {
+ msgType: 1,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 5000, // Sui gas budget for lzReceive
+ value: 0,
+ },
+]
+
+const STARKNET_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
+ {
+ msgType: 1,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 500000, // Cairo steps for lzReceive on Starknet
+ value: 0,
+ },
+]
+
+// =============================================================================
+// DEPLOYMENT TYPES
+// =============================================================================
+
+type SolanaDeployment = { oftStore: string }
+type SuiDeployment = { oftPackageId: string }
+type StarknetDeployment = { oftAddress: string }
+
+// =============================================================================
+// HELPER FUNCTIONS
+// =============================================================================
+
+/**
+ * Safely load a JSON deployment file. Returns null if file doesn't exist.
+ */
+const loadJsonOptional = (relativePath: string): T | null => {
+ const fullPath = path.join(__dirname, relativePath)
+ if (!fs.existsSync(fullPath)) {
+ return null
+ }
+ return JSON.parse(fs.readFileSync(fullPath, 'utf8')) as T
+}
+
+/**
+ * Get Solana OFT store address from deployment file.
+ */
+const getSolanaOftStore = (): string | null => {
+ // Check mainnet first, then testnet
+ const mainnet = loadJsonOptional('./deployments/solana-mainnet/OFT.json')
+ if (mainnet?.oftStore) return mainnet.oftStore
+
+ const testnet = loadJsonOptional('./deployments/solana-testnet/OFT.json')
+ return testnet?.oftStore ?? null
+}
+
+// =============================================================================
+// CONTRACT DEFINITIONS
+// =============================================================================
+
+// EVM Contract (loaded via hardhat-deploy, no address needed)
+const arbitrumContract: OmniPointHardhat = {
+ eid: EndpointId.ARBITRUM_V2_MAINNET,
+ contractName: 'MyOFT',
+}
+
+// Solana Contract
+const solanaDeployment = getSolanaOftStore()
+const solanaContract: OmniPointHardhat | null =
+ INCLUDE_SOLANA && solanaDeployment
+ ? {
+ eid: EndpointId.SOLANA_V2_MAINNET,
+ address: solanaDeployment,
+ }
+ : null
+
+// Sui Contract
+const suiDeployment = loadJsonOptional('./sui/deploy.json')
+const suiContract: OmniPointHardhat | null =
+ INCLUDE_SUI && suiDeployment?.oftPackageId
+ ? {
+ eid: EndpointId.SUI_V2_MAINNET,
+ address: suiDeployment.oftPackageId,
+ }
+ : null
+
+// Starknet Contract
+const starknetDeployment = loadJsonOptional('./starknet/deploy.json')
+const starknetContract: OmniPointHardhat | null =
+ INCLUDE_STARKNET && starknetDeployment?.oftAddress
+ ? {
+ eid: EndpointId.STARKNET_V2_MAINNET,
+ address: starknetDeployment.oftAddress,
+ }
+ : null
+
+// =============================================================================
+// PATHWAY GENERATION
+// =============================================================================
+
+/**
+ * Generate all pathways between enabled contracts.
+ * Pathways are bidirectional - declaring A↔B covers both directions.
+ *
+ * Pathway tuple format:
+ * [contractA, contractB, dvnConfig, confirmations, enforcedOptions]
+ *
+ * enforcedOptions order: [TO_B_OPTIONS, TO_A_OPTIONS]
+ * - First element: options when sending FROM A TO B
+ * - Second element: options when sending FROM B TO A
+ */
+type Pathway = readonly [
+ OmniPointHardhat,
+ OmniPointHardhat,
+ readonly [readonly string[], readonly string[]],
+ readonly [number, number],
+ readonly [OAppEnforcedOption[], OAppEnforcedOption[]],
+]
+
+const generatePathways = (): Pathway[] => {
+ const pathways: Pathway[] = []
+ const contracts: Array<{
+ contract: OmniPointHardhat
+ options: OAppEnforcedOption[]
+ dvns: readonly string[]
+ }> = []
+
+ // Add enabled contracts
+ if (INCLUDE_EVM) {
+ contracts.push({ contract: arbitrumContract, options: EVM_ENFORCED_OPTIONS, dvns: ['LayerZero Labs'] })
+ }
+ if (solanaContract) {
+ contracts.push({ contract: solanaContract, options: SOLANA_ENFORCED_OPTIONS, dvns: ['LayerZero Labs'] })
+ }
+ if (suiContract) {
+ contracts.push({ contract: suiContract, options: SUI_ENFORCED_OPTIONS, dvns: [] })
+ }
+ if (starknetContract) {
+ contracts.push({ contract: starknetContract, options: STARKNET_ENFORCED_OPTIONS, dvns: [] })
+ }
+
+ // Generate full mesh pathways
+ for (let i = 0; i < contracts.length; i++) {
+ for (let j = i + 1; j < contracts.length; j++) {
+ const a = contracts[i]!
+ const b = contracts[j]!
+ pathways.push([
+ a.contract,
+ b.contract,
+ [a.dvns, b.dvns] as const,
+ [15, 15] as const, // confirmations
+ [b.options, a.options] as const, // [TO_B, TO_A]
+ ])
+ }
+ }
+
+ return pathways
+}
+
+// =============================================================================
+// EXPORT CONFIG
+// =============================================================================
+
+export default async function () {
+ const pathways = generatePathways()
+ const connections = await generateConnectionsConfig(pathways as any)
+
+ // Build contracts array from enabled contracts
+ const contracts: Array<{ contract: OmniPointHardhat }> = []
+ if (INCLUDE_EVM) contracts.push({ contract: arbitrumContract })
+ if (solanaContract) contracts.push({ contract: solanaContract })
+ if (suiContract) contracts.push({ contract: suiContract })
+ if (starknetContract) contracts.push({ contract: starknetContract })
+
+ console.log(`LayerZero Config: ${contracts.length} contracts, ${pathways.length} pathways`)
+ console.log(` Contracts: ${contracts.map((c) => c.contract.eid).join(', ')}`)
+
+ return { contracts, connections }
+}
diff --git a/examples/oft-main/package.json b/examples/oft-main/package.json
new file mode 100644
index 0000000000..cd372f9f0e
--- /dev/null
+++ b/examples/oft-main/package.json
@@ -0,0 +1,130 @@
+{
+ "name": "@layerzerolabs/oft-main-example",
+ "version": "0.12.11",
+ "private": true,
+ "scripts": {
+ "clean": "rm -rf target artifacts cache out .anchor",
+ "compile": "concurrently -c auto --names forge,hardhat,anchor '$npm_execpath run compile:forge' '$npm_execpath run compile:hardhat' '$npm_execpath run compile:anchor'",
+ "compile:anchor": "anchor build",
+ "compile:forge": "forge build",
+ "compile:hardhat": "hardhat compile",
+ "lint": "$npm_execpath run lint:js && $npm_execpath run lint:sol",
+ "lint:fix": "eslint --fix '**/*.{js,ts,json}' && prettier --write . && solhint 'contracts/**/*.sol' --fix --noPrompt",
+ "lint:js": "eslint '**/*.{js,ts,json}' && prettier --check .",
+ "lint:sol": "solhint 'contracts/**/*.sol'",
+ "test": "$npm_execpath run test:forge && $npm_execpath run test:hardhat",
+ "test:anchor": "anchor test",
+ "test:forge": "forge test",
+ "test:hardhat": "hardhat test",
+ "test:scripts": "jest --config jest.config.ts --runInBand --testMatch \"**/*.script.test.ts\""
+ },
+ "resolutions": {
+ "@solana/web3.js": "^1.98.0",
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ },
+ "devDependencies": {
+ "@coral-xyz/anchor": "^0.31.1",
+ "@ethersproject/abi": "^5.7.0",
+ "@ethersproject/abstract-signer": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/contracts": "^5.7.0",
+ "@ethersproject/providers": "^5.7.0",
+ "@layerzerolabs/devtools": "~2.0.5",
+ "@layerzerolabs/devtools-evm": "~3.0.0",
+ "@layerzerolabs/devtools-evm-hardhat": "^4.0.0",
+ "@layerzerolabs/devtools-solana": "~3.0.6",
+ "@layerzerolabs/eslint-config-next": "~2.3.39",
+ "@layerzerolabs/io-devtools": "~0.3.0",
+ "@layerzerolabs/lz-definitions": "^3.0.86",
+ "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.86",
+ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.86",
+ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.86",
+ "@layerzerolabs/lz-solana-sdk-v2": "^3.0.136",
+ "@layerzerolabs/lz-sui-oft-sdk-v2": "^3.0.156",
+ "@layerzerolabs/lz-sui-sdk-v2": "^3.0.156",
+ "@layerzerolabs/lz-v2-utilities": "^3.0.86",
+ "@layerzerolabs/metadata-tools": "~3.0.2",
+ "@layerzerolabs/oapp-evm": "^0.4.0",
+ "@layerzerolabs/oft-evm": "^4.0.0",
+ "@layerzerolabs/oft-mint-burn-starknet": "^0.2.19",
+ "@layerzerolabs/oft-v2-solana-sdk": "^3.0.136",
+ "@layerzerolabs/prettier-config-next": "^2.3.39",
+ "@layerzerolabs/protocol-devtools": "^3.0.0",
+ "@layerzerolabs/protocol-devtools-evm": "~5.0.0",
+ "@layerzerolabs/protocol-devtools-solana": "^8.0.3",
+ "@layerzerolabs/protocol-starknet-v2": "^0.2.19",
+ "@layerzerolabs/solhint-config": "^3.0.12",
+ "@layerzerolabs/test-devtools-evm-foundry": "~8.0.0",
+ "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.2",
+ "@layerzerolabs/toolbox-foundry": "~0.1.12",
+ "@layerzerolabs/toolbox-hardhat": "~0.6.12",
+ "@layerzerolabs/ua-devtools": "~5.0.0",
+ "@layerzerolabs/ua-devtools-evm": "~7.0.0",
+ "@layerzerolabs/ua-devtools-evm-hardhat": "~9.0.0",
+ "@layerzerolabs/ua-devtools-solana": "~8.0.2",
+ "@metaplex-foundation/mpl-token-metadata": "^3.2.1",
+ "@metaplex-foundation/mpl-toolbox": "^0.9.4",
+ "@metaplex-foundation/umi": "^0.9.2",
+ "@metaplex-foundation/umi-bundle-defaults": "^0.9.2",
+ "@metaplex-foundation/umi-eddsa-web3js": "^0.9.2",
+ "@metaplex-foundation/umi-public-keys": "^0.8.9",
+ "@metaplex-foundation/umi-web3js-adapters": "^0.9.2",
+ "@mysten/bcs": "^1.9.2",
+ "@mysten/sui": "^1.45.2",
+ "@nomicfoundation/hardhat-ethers": "^3.0.5",
+ "@nomiclabs/hardhat-ethers": "^2.2.3",
+ "@nomiclabs/hardhat-waffle": "^2.0.6",
+ "@openzeppelin/contracts": "^5.0.2",
+ "@openzeppelin/contracts-upgradeable": "^5.0.2",
+ "@rushstack/eslint-patch": "^1.7.0",
+ "@safe-global/safe-core-sdk-types": "^2.3.0",
+ "@solana-developers/helpers": "~2.8.1",
+ "@solana/spl-token": "^0.4.8",
+ "@solana/web3.js": "~1.95.8",
+ "@sqds/sdk": "^2.0.4",
+ "@swc/core": "^1.4.0",
+ "@swc/jest": "^0.2.36",
+ "@types/chai": "^4.3.11",
+ "@types/jest": "^29.5.12",
+ "@types/mocha": "^10.0.6",
+ "@types/node": "~18.18.14",
+ "bs58": "^6.0.0",
+ "chai": "^4.4.1",
+ "concurrently": "~9.1.0",
+ "dotenv": "^16.4.5",
+ "eslint": "^8.55.0",
+ "eslint-plugin-jest-extended": "~2.0.0",
+ "ethereumjs-util": "^7.1.5",
+ "ethers": "^5.7.2",
+ "exponential-backoff": "~3.1.1",
+ "fp-ts": "^2.16.2",
+ "hardhat": "^2.22.10",
+ "hardhat-contract-sizer": "^2.10.0",
+ "hardhat-deploy": "^0.12.1",
+ "hardhat-deploy-ethers": "^0.4.2",
+ "jest": "^29.7.0",
+ "mocha": "^10.2.0",
+ "prettier": "^3.2.5",
+ "solhint": "^4.1.1",
+ "solidity-bytes-utils": "^0.8.2",
+ "starknet": "^8.9.0",
+ "ts-node": "^10.9.2",
+ "typescript": "^5.4.4"
+ },
+ "engines": {
+ "node": ">=20.19.5"
+ },
+ "pnpm": {
+ "overrides": {
+ "@solana/web3.js": "^1.98.0",
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ }
+ },
+ "overrides": {
+ "@solana/web3.js": "^1.98.0",
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ }
+}
diff --git a/examples/oft-main/pnpm-lock.yaml b/examples/oft-main/pnpm-lock.yaml
new file mode 100644
index 0000000000..eca25dd76b
--- /dev/null
+++ b/examples/oft-main/pnpm-lock.yaml
@@ -0,0 +1,15122 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+overrides:
+ '@solana/web3.js': ^1.98.0
+ ethers: ^5.7.2
+ hardhat-deploy: ^0.12.1
+
+importers:
+
+ .:
+ devDependencies:
+ '@coral-xyz/anchor':
+ specifier: ^0.31.1
+ version: 0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@ethersproject/abi':
+ specifier: ^5.7.0
+ version: 5.8.0
+ '@ethersproject/abstract-signer':
+ specifier: ^5.7.0
+ version: 5.8.0
+ '@ethersproject/bytes':
+ specifier: ^5.7.0
+ version: 5.8.0
+ '@ethersproject/contracts':
+ specifier: ^5.7.0
+ version: 5.8.0
+ '@ethersproject/providers':
+ specifier: ^5.7.0
+ version: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/devtools':
+ specifier: ~2.0.5
+ version: 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm':
+ specifier: ~3.0.0
+ version: 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/devtools-evm-hardhat':
+ specifier: ^4.0.0
+ version: 4.0.4(bd17817fbe618b486ab39186dfd61b3d)
+ '@layerzerolabs/devtools-solana':
+ specifier: ~3.0.6
+ version: 3.0.6(7bcaf507b8ccf147de34f5c81d15d234)
+ '@layerzerolabs/eslint-config-next':
+ specifier: ~2.3.39
+ version: 2.3.44(typescript@5.9.3)
+ '@layerzerolabs/io-devtools':
+ specifier: ~0.3.0
+ version: 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions':
+ specifier: ^3.0.86
+ version: 3.0.156
+ '@layerzerolabs/lz-evm-messagelib-v2':
+ specifier: ^3.0.86
+ version: 3.0.156(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4))(@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-protocol-v2':
+ specifier: ^3.0.86
+ version: 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-v1-0.7':
+ specifier: ^3.0.86
+ version: 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@layerzerolabs/lz-solana-sdk-v2':
+ specifier: ^3.0.136
+ version: 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-sui-oft-sdk-v2':
+ specifier: ^3.0.156
+ version: 3.0.156(typescript@5.9.3)
+ '@layerzerolabs/lz-sui-sdk-v2':
+ specifier: ^3.0.156
+ version: 3.0.156(typescript@5.9.3)
+ '@layerzerolabs/lz-v2-utilities':
+ specifier: ^3.0.86
+ version: 3.0.156
+ '@layerzerolabs/metadata-tools':
+ specifier: ~3.0.2
+ version: 3.0.3(@layerzerolabs/devtools-evm-hardhat@4.0.4(bd17817fbe618b486ab39186dfd61b3d))(@layerzerolabs/ua-devtools@5.0.2(2fd617c273bebe4d9e9cb36131e29510))
+ '@layerzerolabs/oapp-evm':
+ specifier: ^0.4.0
+ version: 0.4.1(c1ec61c2fa4e9839f312831737d13b53)
+ '@layerzerolabs/oft-evm':
+ specifier: ^4.0.0
+ version: 4.0.1(3c0dd36ef62aad2617a6f8e84fa2fc5d)
+ '@layerzerolabs/oft-mint-burn-starknet':
+ specifier: ^0.2.19
+ version: 0.2.20(@layerzerolabs/protocol-starknet-v2@0.2.20)
+ '@layerzerolabs/oft-v2-solana-sdk':
+ specifier: ^3.0.136
+ version: 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/prettier-config-next':
+ specifier: ^2.3.39
+ version: 2.3.44
+ '@layerzerolabs/protocol-devtools':
+ specifier: ^3.0.0
+ version: 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/protocol-devtools-evm':
+ specifier: ~5.0.0
+ version: 5.0.2(33cc7f0bc733869899c8e881bf943c1c)
+ '@layerzerolabs/protocol-devtools-solana':
+ specifier: ^8.0.3
+ version: 8.0.6(9a31ec2be9bb6e9e04112b31f8500670)
+ '@layerzerolabs/protocol-starknet-v2':
+ specifier: ^0.2.19
+ version: 0.2.20
+ '@layerzerolabs/solhint-config':
+ specifier: ^3.0.12
+ version: 3.0.156(typescript@5.9.3)
+ '@layerzerolabs/test-devtools-evm-foundry':
+ specifier: ~8.0.0
+ version: 8.0.1(128b5fb4e94e2e1bbbe3bdce7ddbf0b9)
+ '@layerzerolabs/test-devtools-evm-hardhat':
+ specifier: ~0.5.2
+ version: 0.5.3(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/toolbox-foundry':
+ specifier: ~0.1.12
+ version: 0.1.13
+ '@layerzerolabs/toolbox-hardhat':
+ specifier: ~0.6.12
+ version: 0.6.13(e174733816a20ea8b7a0ccb42b2ef14b)
+ '@layerzerolabs/ua-devtools':
+ specifier: ~5.0.0
+ version: 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ '@layerzerolabs/ua-devtools-evm':
+ specifier: ~7.0.0
+ version: 7.0.1(92ebb0c070cf4b1b3ffeb57cc8992705)
+ '@layerzerolabs/ua-devtools-evm-hardhat':
+ specifier: ~9.0.0
+ version: 9.0.2(72d215c29c4022f28081b04b7c4ee7d4)
+ '@layerzerolabs/ua-devtools-solana':
+ specifier: ~8.0.2
+ version: 8.0.7(46edc29d709e8246275b097e2042fcad)
+ '@metaplex-foundation/mpl-token-metadata':
+ specifier: ^3.2.1
+ version: 3.4.0(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/mpl-toolbox':
+ specifier: ^0.9.4
+ version: 0.9.4(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi':
+ specifier: ^0.9.2
+ version: 0.9.2
+ '@metaplex-foundation/umi-bundle-defaults':
+ specifier: ^0.9.2
+ version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-eddsa-web3js':
+ specifier: ^0.9.2
+ version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-public-keys':
+ specifier: ^0.8.9
+ version: 0.8.9
+ '@metaplex-foundation/umi-web3js-adapters':
+ specifier: ^0.9.2
+ version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@mysten/bcs':
+ specifier: ^1.9.2
+ version: 1.9.2
+ '@mysten/sui':
+ specifier: ^1.45.2
+ version: 1.45.2(typescript@5.9.3)
+ '@nomicfoundation/hardhat-ethers':
+ specifier: ^3.0.5
+ version: 3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@nomiclabs/hardhat-ethers':
+ specifier: ^2.2.3
+ version: 2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@nomiclabs/hardhat-waffle':
+ specifier: ^2.0.6
+ version: 2.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)))(@types/sinon-chai@3.2.12)(ethereum-waffle@4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@openzeppelin/contracts':
+ specifier: ^5.0.2
+ version: 5.4.0
+ '@openzeppelin/contracts-upgradeable':
+ specifier: ^5.0.2
+ version: 5.4.0(@openzeppelin/contracts@5.4.0)
+ '@rushstack/eslint-patch':
+ specifier: ^1.7.0
+ version: 1.15.0
+ '@safe-global/safe-core-sdk-types':
+ specifier: ^2.3.0
+ version: 2.3.0
+ '@solana-developers/helpers':
+ specifier: ~2.8.1
+ version: 2.8.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token':
+ specifier: ^0.4.8
+ version: 0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/web3.js':
+ specifier: ^1.98.0
+ version: 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@sqds/sdk':
+ specifier: ^2.0.4
+ version: 2.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@swc/core':
+ specifier: ^1.4.0
+ version: 1.15.10(@swc/helpers@0.5.18)
+ '@swc/jest':
+ specifier: ^0.2.36
+ version: 0.2.39(@swc/core@1.15.10(@swc/helpers@0.5.18))
+ '@types/chai':
+ specifier: ^4.3.11
+ version: 4.3.20
+ '@types/jest':
+ specifier: ^29.5.12
+ version: 29.5.14
+ '@types/mocha':
+ specifier: ^10.0.6
+ version: 10.0.10
+ '@types/node':
+ specifier: ~18.18.14
+ version: 18.18.14
+ bs58:
+ specifier: ^6.0.0
+ version: 6.0.0
+ chai:
+ specifier: ^4.4.1
+ version: 4.5.0
+ concurrently:
+ specifier: ~9.1.0
+ version: 9.1.2
+ dotenv:
+ specifier: ^16.4.5
+ version: 16.6.1
+ eslint:
+ specifier: ^8.55.0
+ version: 8.57.1
+ eslint-plugin-jest-extended:
+ specifier: ~2.0.0
+ version: 2.0.3(eslint@8.57.1)(typescript@5.9.3)
+ ethereumjs-util:
+ specifier: ^7.1.5
+ version: 7.1.5
+ ethers:
+ specifier: ^5.7.2
+ version: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ exponential-backoff:
+ specifier: ~3.1.1
+ version: 3.1.3
+ fp-ts:
+ specifier: ^2.16.2
+ version: 2.16.11
+ hardhat:
+ specifier: ^2.22.10
+ version: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ hardhat-contract-sizer:
+ specifier: ^2.10.0
+ version: 2.10.1(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ hardhat-deploy:
+ specifier: ^0.12.1
+ version: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ hardhat-deploy-ethers:
+ specifier: ^0.4.2
+ version: 0.4.2(@nomicfoundation/hardhat-ethers@3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)))(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ mocha:
+ specifier: ^10.2.0
+ version: 10.8.2
+ prettier:
+ specifier: ^3.2.5
+ version: 3.8.1
+ solhint:
+ specifier: ^4.1.1
+ version: 4.5.4(typescript@5.9.3)
+ solidity-bytes-utils:
+ specifier: ^0.8.2
+ version: 0.8.4
+ starknet:
+ specifier: ^8.9.0
+ version: 8.9.2
+ ts-node:
+ specifier: ^10.9.2
+ version: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)
+ typescript:
+ specifier: ^5.4.4
+ version: 5.9.3
+
+packages:
+
+ '@0no-co/graphql.web@1.2.0':
+ resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==}
+ peerDependencies:
+ graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
+ peerDependenciesMeta:
+ graphql:
+ optional: true
+
+ '@0no-co/graphqlsp@1.15.2':
+ resolution: {integrity: sha512-Ys031WnS3sTQQBtRTkQsYnw372OlW72ais4sp0oh2UMPRNyxxnq85zRfU4PIdoy9kWriysPT5BYAkgIxhbonFA==}
+ peerDependencies:
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+
+ '@adraffy/ens-normalize@1.11.1':
+ resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==}
+
+ '@aptos-labs/aptos-client@2.1.0':
+ resolution: {integrity: sha512-ttdY0qclRvbYAAwzijkFeipuqTfLFJnoXlNIm58tIw3DKhIlfYdR6iLqTeCpI23oOPghnO99FZecej/0MTrtuA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ got: ^11.8.6
+
+ '@axelar-network/axelar-gmp-sdk-solidity@5.10.0':
+ resolution: {integrity: sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==}
+ engines: {node: '>=18'}
+
+ '@babel/code-frame@7.28.6':
+ resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.28.6':
+ resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.28.6':
+ resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.6':
+ resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.28.6':
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.28.6':
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.6':
+ resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-async-generators@7.8.4':
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-bigint@7.8.3':
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ 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-import-attributes@7.28.6':
+ resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==}
+ 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.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ 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.28.6':
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.28.6':
+ resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.6':
+ resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.6':
+ resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ '@bitcoinerlab/secp256k1@1.2.0':
+ resolution: {integrity: sha512-jeujZSzb3JOZfmJYI0ph1PVpCRV5oaexCgy+RvCXV8XlY+XFB/2n3WOcvBsKLsOw78KYgnQrQWb2HrKE4be88Q==}
+
+ '@chainlink/contracts-ccip@0.7.6':
+ resolution: {integrity: sha512-yNbCBFpLs3R+ALymto9dQYKz3vatnjqYGu1pnMD0i2fHEMthiXe0+otaNCGNht6n8k7ruNaA0DNpz3F+2jHQXw==}
+
+ '@colors/colors@1.5.0':
+ resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
+ engines: {node: '>=0.1.90'}
+
+ '@colors/colors@1.6.0':
+ resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
+ engines: {node: '>=0.1.90'}
+
+ '@coral-xyz/anchor-errors@0.30.1':
+ resolution: {integrity: sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ==}
+ engines: {node: '>=10'}
+
+ '@coral-xyz/anchor-errors@0.31.1':
+ resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==}
+ engines: {node: '>=10'}
+
+ '@coral-xyz/anchor@0.26.0':
+ resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==}
+ engines: {node: '>=11'}
+
+ '@coral-xyz/anchor@0.29.0':
+ resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==}
+ engines: {node: '>=11'}
+
+ '@coral-xyz/anchor@0.30.1':
+ resolution: {integrity: sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ==}
+ engines: {node: '>=11'}
+
+ '@coral-xyz/anchor@0.31.1':
+ resolution: {integrity: sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==}
+ engines: {node: '>=17'}
+
+ '@coral-xyz/borsh@0.26.0':
+ resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@coral-xyz/borsh@0.29.0':
+ resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@coral-xyz/borsh@0.30.1':
+ resolution: {integrity: sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@coral-xyz/borsh@0.31.1':
+ resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@cspotcode/source-map-support@0.8.1':
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+
+ '@dabh/diagnostics@2.0.8':
+ resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==}
+
+ '@emnapi/core@1.8.1':
+ resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
+
+ '@emnapi/runtime@1.8.1':
+ resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
+
+ '@emnapi/wasi-threads@1.1.0':
+ resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+
+ '@ensdomains/ens@0.4.5':
+ resolution: {integrity: sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==}
+ deprecated: Please use @ensdomains/ens-contracts
+
+ '@ensdomains/resolver@0.2.4':
+ resolution: {integrity: sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==}
+ deprecated: Please use @ensdomains/ens-contracts
+
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ 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.12.2':
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.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.1':
+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eth-optimism/contracts@0.5.40':
+ resolution: {integrity: sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ '@eth-optimism/contracts@0.6.0':
+ resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ '@eth-optimism/core-utils@0.12.0':
+ resolution: {integrity: sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==}
+
+ '@ethereum-waffle/chai@4.0.10':
+ resolution: {integrity: sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ '@ethereum-waffle/compiler@4.0.3':
+ resolution: {integrity: sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ ethers: ^5.7.2
+ solc: '*'
+ typechain: ^8.0.0
+
+ '@ethereum-waffle/ens@4.0.3':
+ resolution: {integrity: sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ '@ensdomains/ens': ^0.4.4
+ '@ensdomains/resolver': ^0.2.4
+ ethers: ^5.7.2
+
+ '@ethereum-waffle/mock-contract@4.0.4':
+ resolution: {integrity: sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ '@ethereum-waffle/provider@4.0.5':
+ resolution: {integrity: sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ '@ethereumjs/block@3.6.3':
+ resolution: {integrity: sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==}
+
+ '@ethereumjs/blockchain@5.5.3':
+ resolution: {integrity: sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==}
+
+ '@ethereumjs/common@2.6.0':
+ resolution: {integrity: sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==}
+
+ '@ethereumjs/common@2.6.5':
+ resolution: {integrity: sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==}
+
+ '@ethereumjs/ethash@1.1.0':
+ resolution: {integrity: sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==}
+
+ '@ethereumjs/rlp@4.0.1':
+ resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ '@ethereumjs/rlp@5.0.2':
+ resolution: {integrity: sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ '@ethereumjs/tx@3.4.0':
+ resolution: {integrity: sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==}
+
+ '@ethereumjs/tx@3.5.2':
+ resolution: {integrity: sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==}
+
+ '@ethereumjs/util@8.1.0':
+ resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==}
+ engines: {node: '>=14'}
+
+ '@ethereumjs/util@9.1.0':
+ resolution: {integrity: sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==}
+ engines: {node: '>=18'}
+
+ '@ethereumjs/vm@5.6.0':
+ resolution: {integrity: sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==}
+
+ '@ethersproject/abi@5.8.0':
+ resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==}
+
+ '@ethersproject/abstract-provider@5.8.0':
+ resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==}
+
+ '@ethersproject/abstract-signer@5.8.0':
+ resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==}
+
+ '@ethersproject/address@5.7.0':
+ resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==}
+
+ '@ethersproject/address@5.8.0':
+ resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==}
+
+ '@ethersproject/base64@5.8.0':
+ resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==}
+
+ '@ethersproject/basex@5.8.0':
+ resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==}
+
+ '@ethersproject/bignumber@5.8.0':
+ resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==}
+
+ '@ethersproject/bytes@5.8.0':
+ resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==}
+
+ '@ethersproject/constants@5.8.0':
+ resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==}
+
+ '@ethersproject/contracts@5.8.0':
+ resolution: {integrity: sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==}
+
+ '@ethersproject/hash@5.8.0':
+ resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==}
+
+ '@ethersproject/hdnode@5.8.0':
+ resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==}
+
+ '@ethersproject/json-wallets@5.8.0':
+ resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==}
+
+ '@ethersproject/keccak256@5.8.0':
+ resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==}
+
+ '@ethersproject/logger@5.8.0':
+ resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==}
+
+ '@ethersproject/networks@5.8.0':
+ resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==}
+
+ '@ethersproject/pbkdf2@5.8.0':
+ resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==}
+
+ '@ethersproject/properties@5.8.0':
+ resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==}
+
+ '@ethersproject/providers@5.8.0':
+ resolution: {integrity: sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==}
+
+ '@ethersproject/random@5.8.0':
+ resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==}
+
+ '@ethersproject/rlp@5.8.0':
+ resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==}
+
+ '@ethersproject/sha2@5.8.0':
+ resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==}
+
+ '@ethersproject/signing-key@5.8.0':
+ resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==}
+
+ '@ethersproject/solidity@5.8.0':
+ resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==}
+
+ '@ethersproject/strings@5.8.0':
+ resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==}
+
+ '@ethersproject/transactions@5.8.0':
+ resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==}
+
+ '@ethersproject/units@5.8.0':
+ resolution: {integrity: sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==}
+
+ '@ethersproject/wallet@5.8.0':
+ resolution: {integrity: sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==}
+
+ '@ethersproject/web@5.8.0':
+ resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==}
+
+ '@ethersproject/wordlists@5.8.0':
+ resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==}
+
+ '@fastify/busboy@2.1.1':
+ resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
+ engines: {node: '>=14'}
+
+ '@ganache/ethereum-address@0.1.4':
+ resolution: {integrity: sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw==}
+
+ '@ganache/ethereum-options@0.1.4':
+ resolution: {integrity: sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw==}
+
+ '@ganache/ethereum-utils@0.1.4':
+ resolution: {integrity: sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg==}
+
+ '@ganache/options@0.1.4':
+ resolution: {integrity: sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw==}
+
+ '@ganache/rlp@0.1.4':
+ resolution: {integrity: sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ==}
+
+ '@ganache/utils@0.1.4':
+ resolution: {integrity: sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w==}
+
+ '@gql.tada/cli-utils@1.7.2':
+ resolution: {integrity: sha512-Qbc7hbLvCz6IliIJpJuKJa9p05b2Jona7ov7+qofCsMRxHRZE1kpAmZMvL8JCI4c0IagpIlWNaMizXEQUe8XjQ==}
+ peerDependencies:
+ '@0no-co/graphqlsp': ^1.12.13
+ '@gql.tada/svelte-support': 1.0.1
+ '@gql.tada/vue-support': 1.0.1
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ '@gql.tada/svelte-support':
+ optional: true
+ '@gql.tada/vue-support':
+ optional: true
+
+ '@gql.tada/internal@1.0.8':
+ resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==}
+ peerDependencies:
+ graphql: ^15.5.0 || ^16.0.0 || ^17.0.0
+ typescript: ^5.0.0
+
+ '@graphql-typed-document-node/core@3.2.0':
+ resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
+ peerDependencies:
+ graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+
+ '@humanwhocodes/config-array@0.13.0':
+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ 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/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@improbable-eng/grpc-web@0.15.0':
+ resolution: {integrity: sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==}
+ peerDependencies:
+ google-protobuf: ^3.14.0
+
+ '@initia/initia.js@1.0.4':
+ resolution: {integrity: sha512-oFfj8heWUFxK/OFAAa8A9NzcBB3M7r6hG1lMLHwGbMLPRbhK4iVY/V1FxcBjspKAuLNsdsb/k+Oc/JUl0iyixQ==}
+ engines: {node: '>=20'}
+
+ '@initia/initia.proto@0.2.6':
+ resolution: {integrity: sha512-khiCPUxZTkyAl+SQbQCOlcJId/a0ToUhG+ChrVXN9a+1ypPz5355j2UP2IvnUf+lAix/+zzdekcqO/Lig7htAQ==}
+
+ '@initia/opinit.proto@0.0.11':
+ resolution: {integrity: sha512-Op9GIlXiV1xhUIjVQ2TFE9a3X8iyFVNtJNHCM34gwLQHJktDNm2KCoW4eHh6pkn4//ECRVH7zuKgV8TdZWogCw==}
+
+ '@iota/bcs@1.4.0':
+ resolution: {integrity: sha512-Bpg8uPB3UTweJyFS3G+aycGcTCxaJQi2a9bEy2QXWMBM8a/tLN1KCg4IzKWkAJ4FyMNrZZrdXiBqAzmNK6xdVQ==}
+
+ '@iota/iota-sdk@1.10.1':
+ resolution: {integrity: sha512-q0GxOCFzPqIcaw1lFuFljmMDj1ajIK6UZFzOYnnPqfs/nufOZrJQ9Bg/hLj23xbMno/tdND+aIjDWY6GG8MAXw==}
+ engines: {node: '>=20'}
+
+ '@istanbuljs/load-nyc-config@1.1.0':
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+
+ '@istanbuljs/schema@0.1.3':
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ '@jest/console@29.7.0':
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/core@29.7.0':
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@jest/create-cache-key-function@30.2.0':
+ resolution: {integrity: sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/expect@29.7.0':
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ 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/globals@29.7.0':
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/pattern@30.0.1':
+ resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
+ '@jest/reporters@29.7.0':
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@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@30.0.5':
+ resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
+ '@jest/source-map@29.6.3':
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-result@29.7.0':
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-sequencer@29.7.0':
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/transform@29.7.0':
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@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@30.2.0':
+ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+
+ '@layerzerolabs/devtools-evm-hardhat@4.0.4':
+ resolution: {integrity: sha512-EnP2dWk9G2PdDP2R30O0Bs85J+4nvBmGlT86QhvhhUqbg2NCZ51h/TQLBWPX6mri7wVMbGMZesNo68xnMntoyQ==}
+ peerDependencies:
+ '@ethersproject/abi': ^5.7.0
+ '@ethersproject/abstract-signer': ^5.7.0
+ '@ethersproject/contracts': ^5.7.0
+ '@ethersproject/providers': ^5.7.0
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/devtools-evm': ~3.0.2
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@nomiclabs/hardhat-ethers': ^2.2.3
+ fp-ts: ^2.16.2
+ hardhat: ^2.22.10
+ hardhat-deploy: ^0.12.1
+
+ '@layerzerolabs/devtools-evm@3.0.2':
+ resolution: {integrity: sha512-3GukwiJQ1HYI5MwFQUVH7cK0z1AqKjnAyO/e8McUE9TFNjcwvRinFklrFlAy1euy6DTy1vf6BwNA49mK3N6EkA==}
+ peerDependencies:
+ '@ethersproject/abi': ^5.7.0
+ '@ethersproject/abstract-provider': ^5.7.0
+ '@ethersproject/abstract-signer': ^5.7.0
+ '@ethersproject/address': ~5.7.0
+ '@ethersproject/bignumber': ^5.7.0
+ '@ethersproject/constants': ^5.7.0
+ '@ethersproject/contracts': ^5.7.0
+ '@ethersproject/providers': ^5.7.0
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ fp-ts: ^2.16.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/devtools-solana@3.0.6':
+ resolution: {integrity: sha512-QOcEIkof5BfAsRM3HiBlqieELA7rbQg5K+wDQJp6uk0OBkJtxWMBNDBYh58fwVMxILjKT1gKf49ElZYI7Sty8A==}
+ peerDependencies:
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@solana/web3.js': ^1.98.0
+ bn.js: ^5.2.0
+ fp-ts: ^2.16.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/devtools@2.0.5':
+ resolution: {integrity: sha512-NwujsVyduYnY5R5qNA4xnA8Dwxs88oX0Kk/GpotkTII+F6z6PnGqHjiBzo/42plAxOmktGYo21BigxSXjCnEaw==}
+ peerDependencies:
+ '@ethersproject/bytes': ~5.7.0
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ zod: ^3.22.4
+
+ '@layerzerolabs/eslint-config-next@2.3.44':
+ resolution: {integrity: sha512-WlBSy47LGPILdrNgzPiRtQf/hAY62IN37ncUsQwcr8T7cyX1HZREx2qljuXpvduLDAKn5otsm0XIqHuCRUHEFg==}
+
+ '@layerzerolabs/evm-sdks-core@3.0.156':
+ resolution: {integrity: sha512-9JwG5+MhGZqDQHOcQBZuGV2X4R+55NoMhwIVlUXCeTKu+JJHBcY2WWRa5EZ1Mx5KM0PsipF0eZ2/ixNfPIy67A==}
+
+ '@layerzerolabs/export-deployments@0.0.16':
+ resolution: {integrity: sha512-tI+mKMx51qCrj+G42mrVR+5jAiRaiLCpnXiogjW7E3krbNbJenI1eYYX7U62ssXWXwTZfYSJ1Bw/zLAbs59sqw==}
+ hasBin: true
+
+ '@layerzerolabs/io-devtools@0.3.2':
+ resolution: {integrity: sha512-BQzf1enHz2Inflycr52s6C+sjh8d90OpjLgO9EL9aKGfc1TYa786H+21MZBY5djX/nghkp69C/KwsWzhHIc65g==}
+ peerDependencies:
+ ink: ^3.2.0
+ ink-gradient: ^2.0.0
+ ink-table: ^3.1.0
+ react: ^17.0.2
+ yoga-layout-prebuilt: ^1.9.6
+ zod: ^3.22.4
+ peerDependenciesMeta:
+ ink:
+ optional: true
+ ink-gradient:
+ optional: true
+ ink-table:
+ optional: true
+ react:
+ optional: true
+ yoga-layout-prebuilt:
+ optional: true
+
+ '@layerzerolabs/lz-core@3.0.156':
+ resolution: {integrity: sha512-zGGJXQlJvjLw9hKPmFgUKYQv35Td+X/EHZHti3LXmFk52/3J6huWhlxmEhbTaa2bIISQfkGJJdn2eWsW5iYb9A==}
+
+ '@layerzerolabs/lz-corekit-solana@3.0.156':
+ resolution: {integrity: sha512-E7l143s/PKVzV9lhy5LtirXsOgrSF8kVXXg4RMIv8K88qye8g4GU7gQjAt8tSZD6Xl1b4Yc1HmBzyktEYdgp0A==}
+
+ '@layerzerolabs/lz-definitions@3.0.156':
+ resolution: {integrity: sha512-9gXF+C3LJ3mwrrkVBvVwXaeRnZNFNFeEuA0ykp881IRMFmmcVKLYOkidFgmaItm70MishMrrt4Lo+wWuzkqqUg==}
+
+ '@layerzerolabs/lz-evm-messagelib-v2@3.0.156':
+ resolution: {integrity: sha512-x7L09V8mnhipxOMQBidBECEMb9qKkwM9oT3hCDMXsxP2FsTGTLA2HpgdJlYqDFgJomhv5XCOLFeYXejOteOLtw==}
+ peerDependencies:
+ '@arbitrum/nitro-contracts': ^1.1.0
+ '@axelar-network/axelar-gmp-sdk-solidity': ^5.6.4
+ '@chainlink/contracts-ccip': ^0.7.6
+ '@eth-optimism/contracts': ^0.6.0
+ '@layerzerolabs/lz-evm-protocol-v2': ^3.0.156
+ '@layerzerolabs/lz-evm-v1-0.7': ^3.0.156
+ '@openzeppelin/contracts': ^4.8.1 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0
+ hardhat-deploy: ^0.12.1
+ solidity-bytes-utils: ^0.8.0
+ peerDependenciesMeta:
+ '@arbitrum/nitro-contracts':
+ optional: true
+
+ '@layerzerolabs/lz-evm-protocol-v2@3.0.156':
+ resolution: {integrity: sha512-KLh26P8J76Lty8STndABDIMcZqeOrc8vqAIYumvipsQASCDntm7f81VYzQM8G+LV7JY5LOlEcWvc2jEexexVqA==}
+ peerDependencies:
+ '@openzeppelin/contracts': ^4.8.1 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0
+ hardhat-deploy: ^0.12.1
+ solidity-bytes-utils: ^0.8.0
+
+ '@layerzerolabs/lz-evm-sdk-v1@3.0.156':
+ resolution: {integrity: sha512-1xPRlKqOsCmMa+1JHsuUtxLHKBKN+ZEHh1ZI//A2W5Dx2rb6cjVAiuQSNi61Vc0UUu5T3cY8+zARXgkRPApjNg==}
+
+ '@layerzerolabs/lz-evm-sdk-v2@3.0.156':
+ resolution: {integrity: sha512-0pYcjo4qCm5PnGvIes+bBwYh+SDHQbt4YlrpJ5wAMDjZdwbJgBPhhdwucIj86ACG9BZef0EcvRgfnLGnguwOrA==}
+
+ '@layerzerolabs/lz-evm-v1-0.7@3.0.156':
+ resolution: {integrity: sha512-y7FG7qQwl/v0FTn2HUZIpmkNew16lmRcCSQA31UnNsimwaqSxKvyWrncCrsO8gLlkuLoFDHWtFIlG2rbX+isJw==}
+ peerDependencies:
+ '@openzeppelin/contracts': 3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': 3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0
+ hardhat-deploy: ^0.12.1
+
+ '@layerzerolabs/lz-foundation@3.0.156':
+ resolution: {integrity: sha512-hZHAGFe5apNVUv8jJg7GJQw/KePR2pGj0uNe9aydJH0C0mvfi7pwhkteJoF1JbZ0iNHYCunAak0W8nRBeRg2mA==}
+
+ '@layerzerolabs/lz-serdes@3.0.156':
+ resolution: {integrity: sha512-9QCw5a8kAgDfhm5lZOHtkiWGYeheUIw98fZf0n/HKrCI5vOL8LVH5u4ks2OTD5sFVt/qkfiMcntqCV3SRMw9gQ==}
+
+ '@layerzerolabs/lz-solana-sdk-v2@3.0.156':
+ resolution: {integrity: sha512-5bWB5Kxk1VRiLprBsJMcORMDcDtOl+j5wdFvqs41ikt08ymGruYkACCfTzt0lacg490FXDUnAReODuvbduBqng==}
+
+ '@layerzerolabs/lz-sui-oft-sdk-v2@3.0.156':
+ resolution: {integrity: sha512-zOvWGOD9HT1WdnY2nvVaG5Zw4Cqx3XeSQqxJBobt6TP1rLVlFN226BE8LVxEws8IdoomLD2Yz3BkR0BJS7l8bw==}
+
+ '@layerzerolabs/lz-sui-sdk-v2@3.0.156':
+ resolution: {integrity: sha512-pQIl91brRk274hSiNS2NqUZ9U+l8zqPzeJ/1kOKPXZdiQIaz+/H2nwb0UXayxyAwXy3kl94ju/ecdOiKvHqAag==}
+
+ '@layerzerolabs/lz-utilities@3.0.156':
+ resolution: {integrity: sha512-2JmUO/Sm0M9x6SjMYRlWiy0i2L+IgEq0nYLyBipXngPozNqvJS1izhhIZf6jIkIYQJdF8QeWMZ42Rxqc5wNmyg==}
+
+ '@layerzerolabs/lz-v2-utilities@3.0.156':
+ resolution: {integrity: sha512-AV8TPMN2bqJ6fNoY5adX+GxYD3/RhoF9EjY1F1onUfuojcqRJ7O4PgbK5k+B9XzTN3HHA6HNZo4vHCrY26kKwA==}
+
+ '@layerzerolabs/metadata-tools@3.0.3':
+ resolution: {integrity: sha512-h78EwbgN84Zo0Wr5n7gQL5Zp1lkSUFTP+56BLF+H0ZaH9CLqHMjypVMtKu9oNMpTas4P072v7O6P3XdiS6VOLw==}
+ peerDependencies:
+ '@layerzerolabs/devtools-evm-hardhat': ~4.0.0
+ '@layerzerolabs/ua-devtools': ~5.0.1
+
+ '@layerzerolabs/oapp-evm@0.4.1':
+ resolution: {integrity: sha512-eOoDepVSrUlVNIlnkH0Vd5Vt4lXBkSBh6Bb16vsLbaN9AryBjy4GDpsE7K4c8iWTFL9BiBXGsV7nJTkgqi+xRQ==}
+ peerDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-protocol-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-v1-0.7': ^3.0.148
+ '@openzeppelin/contracts': ^4.8.1 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0
+
+ '@layerzerolabs/oft-evm@4.0.1':
+ resolution: {integrity: sha512-GjjfnUbx77TnFFKALVRXJYb1bt1jvarcyyx/AQo6sZfJng5DIqzI9wDxEGlUz03tEnsS6ZOOLBsH+e/hYsruiA==}
+ peerDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-protocol-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-v1-0.7': ^3.0.148
+ '@layerzerolabs/oapp-evm': ^0.4.1
+ '@openzeppelin/contracts': ^4.8.1 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0
+
+ '@layerzerolabs/oft-mint-burn-starknet@0.2.20':
+ resolution: {integrity: sha512-Hb2N+XZq7vak1JAiz/Wj5tP9qPrn8HzwfmIZw6QtFTIA9H24yby8Leew92CDh8wuHZn2Erc0bW8GRoqqxzGARg==}
+ peerDependencies:
+ '@layerzerolabs/protocol-starknet-v2': '>=0.2.0'
+
+ '@layerzerolabs/oft-v2-solana-sdk@3.0.156':
+ resolution: {integrity: sha512-vpbEJJFZCOHoA1arBpr0FfG5jzxJQta+7cTPN86/szkiGGji4LTSxGCWwMiDcMONt/jUfOx5f1PPXhK1tOK1nA==}
+
+ '@layerzerolabs/prettier-config-next@2.3.44':
+ resolution: {integrity: sha512-mIsxKLaelXHXXXvMEAE6Jc8IVydra0PesHquHYwvxFKwDhMhzfrnoRLLzbgCX/Zi1q0GGET/oMAKJTs6OWFPxQ==}
+
+ '@layerzerolabs/protocol-devtools-evm@5.0.2':
+ resolution: {integrity: sha512-KeBBqxupuJ2CchmjctHSs6IcGd4iWSgIvVnQ9EI662ScwMmESz3JMFMkUhsQQqDa/a4Hvf8rLYW+e7E7D1TuVw==}
+ peerDependencies:
+ '@ethersproject/abstract-provider': ^5.7.0
+ '@ethersproject/abstract-signer': ^5.7.0
+ '@ethersproject/bignumber': ^5.7.0
+ '@ethersproject/constants': ^5.7.0
+ '@ethersproject/contracts': ^5.7.0
+ '@ethersproject/providers': ^5.7.0
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/devtools-evm': ~3.0.2
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/protocol-devtools': ~3.0.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/protocol-devtools-solana@8.0.6':
+ resolution: {integrity: sha512-ovtpI8zfzs05p86lOZFsfb4BHq5SVO6tTDm52tloiGjLNYxOwvHwMea8y74LuPEf7CPw0sROqCOHZst8dN9Q7g==}
+ peerDependencies:
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/devtools-solana': ~3.0.5
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/lz-solana-sdk-v2': ^3.0.0
+ '@layerzerolabs/lz-v2-utilities': ^3.0.148
+ '@layerzerolabs/protocol-devtools': ^3.0.2
+ '@layerzerolabs/ua-devtools': ^5.0.2
+ '@solana/web3.js': ^1.98.0
+ fp-ts: ^2.16.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/protocol-devtools@3.0.2':
+ resolution: {integrity: sha512-HFlsMQJTEH7aSxeKtokp4h1bu7u/GkFHy4smBPgcY/OsRQSdtOxXJQzopFcEsikvnfPkpXplnf8IUwJi7YGyNg==}
+ peerDependencies:
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ zod: ^3.22.4
+
+ '@layerzerolabs/protocol-starknet-v2@0.2.20':
+ resolution: {integrity: sha512-iWueRZJfVcL622AAo9XZQ/RmAq15cuNNFmRGAEc6YQUPJrOFkgmwrh2Bosxc2cHSQGIZFT+k/ZUS/nTLG4ttVg==}
+
+ '@layerzerolabs/solhint-config@3.0.156':
+ resolution: {integrity: sha512-gpdQtyqj7ke607+9QT43I/CxNVuqUOhqPsg8oqHiZGNHNEsF/5GAPqJPOXtCAav5N9SL1JLrt0WC7RiyI6l09Q==}
+
+ '@layerzerolabs/test-devtools-evm-foundry@8.0.1':
+ resolution: {integrity: sha512-oih2mReJJsSjjxFyovcOefgMmHo22f9LocHPuHNV82aGI5Sw+RR+eP6bIOuKPt/8I5cMJfusMJzQJtuvDYQhDg==}
+ peerDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-protocol-v2': ^3.0.148
+ '@layerzerolabs/lz-evm-v1-0.7': ^3.0.148
+ '@layerzerolabs/oapp-evm': ^0.4.1
+ '@layerzerolabs/oft-evm': ^4.0.1
+ '@openzeppelin/contracts': ^4.9.5 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.9.5 || ^5.0.0
+
+ '@layerzerolabs/test-devtools-evm-hardhat@0.5.3':
+ resolution: {integrity: sha512-hqtwUAnq3U5I1FPUp0YHLYjEXPjP+8uuLPjG1B6AKGwOWswXE/9mE6CbYTk24fKOQgmgnt33Mem7TiHsSbz4vw==}
+ peerDependencies:
+ hardhat: ^2.22.10
+ solidity-bytes-utils: ^0.8.2
+
+ '@layerzerolabs/toolbox-foundry@0.1.13':
+ resolution: {integrity: sha512-3rC+BVEPgcHLHPO4qn3KqYUG1vhDtr1m/gsaI1S635MK+19475U8HYATznAzHKwi09cf9uEv5C7fdtHXgIw8sQ==}
+
+ '@layerzerolabs/toolbox-hardhat@0.6.13':
+ resolution: {integrity: sha512-RDpVqRbRPyDAlGsRVPpN0UdDVUfYkXq2qFIqkDxgIpNbWxwXPE0dJgC8D/O/gXxGMYUmljk2huNh9btWgU28bw==}
+ peerDependencies:
+ '@nomicfoundation/hardhat-ethers': ^3.0.2
+ ethers: ^5.7.2
+ hardhat: ^2.22.10
+ hardhat-deploy: ^0.12.1
+
+ '@layerzerolabs/tron-utilities@3.0.156':
+ resolution: {integrity: sha512-WbmldyR4ruo1zpmpJzJC7uVu6IuF3oqU/hhJo9yC+AYYzHf2SlAHsSIL/h+EeOLiCyIc+ZSX9/0I6d2Jq+e4Cw==}
+
+ '@layerzerolabs/ua-devtools-evm-hardhat@9.0.2':
+ resolution: {integrity: sha512-zI/8FwucBhmgyT7VhQhH091L8czZ6IBkXUNjMVDVQ7ueAmyvP8weSq/SRcve6EzeeDR0wxxHqQILPmKLKlP7zA==}
+ peerDependencies:
+ '@ethersproject/abi': ^5.7.0
+ '@ethersproject/bytes': ^5.7.0
+ '@ethersproject/contracts': ^5.7.0
+ '@ethersproject/hash': ^5.7.0
+ '@layerzerolabs/devtools': ~2.0.5
+ '@layerzerolabs/devtools-evm': ~3.0.2
+ '@layerzerolabs/devtools-evm-hardhat': ~4.0.4
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/protocol-devtools': ~3.0.2
+ '@layerzerolabs/protocol-devtools-evm': ~5.0.2
+ '@layerzerolabs/ua-devtools': ~5.0.2
+ '@layerzerolabs/ua-devtools-evm': ~7.0.1
+ ethers: ^5.7.2
+ hardhat: ^2.22.10
+ hardhat-deploy: ^0.12.1
+
+ '@layerzerolabs/ua-devtools-evm@7.0.1':
+ resolution: {integrity: sha512-YOZ2E2NCJrn/+wFXVPEb77US6OQ+gL3hThQK0xj+CFeATlXlPyDtMVg6dq5EHrY9luCClbf1WE2Iz/I0Tt2EvA==}
+ peerDependencies:
+ '@ethersproject/constants': ^5.7.0
+ '@ethersproject/contracts': ^5.7.0
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/devtools-evm': ~3.0.2
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/lz-v2-utilities': ^3.0.148
+ '@layerzerolabs/protocol-devtools': ~3.0.2
+ '@layerzerolabs/protocol-devtools-evm': ~5.0.2
+ '@layerzerolabs/ua-devtools': ~5.0.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/ua-devtools-solana@8.0.7':
+ resolution: {integrity: sha512-3qdsZhzX9Kf6WlxcJvlCFbh6Lh90ucL4kYUvsDYtGgiHR/DyZ/DXO1sJY2dPwvarBFD0SN90xd+y4OdOcXlaHQ==}
+ peerDependencies:
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/devtools-solana': ~3.0.5
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/lz-solana-sdk-v2': ^3.0.59
+ '@layerzerolabs/lz-v2-utilities': ^3.0.148
+ '@layerzerolabs/oft-v2-solana-sdk': ^3.0.59
+ '@layerzerolabs/protocol-devtools': ^3.0.2
+ '@layerzerolabs/protocol-devtools-solana': ~8.0.6
+ '@layerzerolabs/ua-devtools': ^5.0.2
+ '@solana/web3.js': ^1.98.0
+ fp-ts: ^2.16.2
+ zod: ^3.22.4
+
+ '@layerzerolabs/ua-devtools@5.0.2':
+ resolution: {integrity: sha512-CxYSKblpzb17z2lR+kZrLMz6LCE2CpML/Ypyi7MZoS0RCr8vTWZrHacRKbtNSwzjIJFUEHFxlktjfPeTlnMSAQ==}
+ peerDependencies:
+ '@layerzerolabs/devtools': ~2.0.4
+ '@layerzerolabs/io-devtools': ~0.3.2
+ '@layerzerolabs/lz-definitions': ^3.0.148
+ '@layerzerolabs/lz-v2-utilities': ^3.0.148
+ '@layerzerolabs/protocol-devtools': ~3.0.2
+ zod: ^3.22.4
+
+ '@ledgerhq/devices@8.10.0':
+ resolution: {integrity: sha512-ytT66KI8MizFX6dGJKthOzPDw5uNRmmg+RaMta62jbFePKYqfXtYTp6Wc0ErTXaL8nFS3IujHENwKthPmsj6jw==}
+
+ '@ledgerhq/errors@6.29.0':
+ resolution: {integrity: sha512-mmDsGN662zd0XGKyjzSKkg+5o1/l9pvV1HkVHtbzaydvHAtRypghmVoWMY9XAQDLXiUBXGIsLal84NgmGeuKWA==}
+
+ '@ledgerhq/hw-transport-webhid@6.31.0':
+ resolution: {integrity: sha512-XtCFOJ1ooaqCefB6WDfV/ie+GaO/7xQgezwRpyLroMBYboSpnEd3Diu3BAoptXKTNklwZEiUVRLVXlltTBzNvw==}
+
+ '@ledgerhq/hw-transport-webusb@6.30.0':
+ resolution: {integrity: sha512-GX5OJvNl0cRZyadxQjS+cnAxiD2irw4Cponp46r50WmirXOLR7hJYKfd1plmGlZOAgT6ayggOZkzahunYerPXw==}
+
+ '@ledgerhq/hw-transport@6.32.0':
+ resolution: {integrity: sha512-bf2nxzDQ21DV/bsmExfWI0tatoVeoqhu/ePWalD/nPgPnTn/ZIDq7VBU+TY5p0JZaE87NQwmRUAjm6C1Exe61A==}
+
+ '@ledgerhq/logs@6.14.0':
+ resolution: {integrity: sha512-kJFu1+asWQmU9XlfR1RM3lYR76wuEoPyZvkI/CNjpft78BQr3+MMf3Nu77ABzcKFnhIcmAkOLlDQ6B8L6hDXHA==}
+
+ '@mdn/browser-compat-data@5.7.6':
+ resolution: {integrity: sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==}
+
+ '@metaplex-foundation/beet-solana@0.4.1':
+ resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==}
+
+ '@metaplex-foundation/beet@0.7.2':
+ resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==}
+
+ '@metaplex-foundation/mpl-token-metadata@3.4.0':
+ resolution: {integrity: sha512-AxBAYCK73JWxY3g9//z/C9krkR0t1orXZDknUPS4+GjwGH2vgPfsk04yfZ31Htka2AdS9YE/3wH7sMUBHKn9Rg==}
+ peerDependencies:
+ '@metaplex-foundation/umi': '>= 0.8.2 <= 1'
+
+ '@metaplex-foundation/mpl-toolbox@0.10.0':
+ resolution: {integrity: sha512-84KD1L5cFyw5xnntHwL4uPwfcrkKSiwuDeypiVr92qCUFuF3ZENa2zlFVPu+pQcjTlod2LmEX3MhBmNjRMpdKg==}
+ peerDependencies:
+ '@metaplex-foundation/umi': '>= 0.8.2 <= 1'
+
+ '@metaplex-foundation/mpl-toolbox@0.9.4':
+ resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==}
+ peerDependencies:
+ '@metaplex-foundation/umi': '>= 0.8.2 < 1'
+
+ '@metaplex-foundation/umi-bundle-defaults@0.9.2':
+ resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+ '@solana/web3.js': ^1.98.0
+
+ '@metaplex-foundation/umi-downloader-http@0.9.2':
+ resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+
+ '@metaplex-foundation/umi-eddsa-web3js@0.9.2':
+ resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+ '@solana/web3.js': ^1.98.0
+
+ '@metaplex-foundation/umi-http-fetch@0.9.2':
+ resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+
+ '@metaplex-foundation/umi-options@0.8.9':
+ resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==}
+
+ '@metaplex-foundation/umi-program-repository@0.9.2':
+ resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+
+ '@metaplex-foundation/umi-public-keys@0.8.9':
+ resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==}
+
+ '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2':
+ resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+
+ '@metaplex-foundation/umi-rpc-web3js@0.9.2':
+ resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+ '@solana/web3.js': ^1.98.0
+
+ '@metaplex-foundation/umi-serializer-data-view@0.9.2':
+ resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+
+ '@metaplex-foundation/umi-serializers-core@0.8.9':
+ resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==}
+
+ '@metaplex-foundation/umi-serializers-encodings@0.8.9':
+ resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==}
+
+ '@metaplex-foundation/umi-serializers-numbers@0.8.9':
+ resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==}
+
+ '@metaplex-foundation/umi-serializers@0.9.0':
+ resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==}
+
+ '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2':
+ resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+ '@solana/web3.js': ^1.98.0
+
+ '@metaplex-foundation/umi-web3js-adapters@0.9.2':
+ resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==}
+ peerDependencies:
+ '@metaplex-foundation/umi': ^0.9.2
+ '@solana/web3.js': ^1.98.0
+
+ '@metaplex-foundation/umi@0.9.2':
+ resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==}
+
+ '@mysten/bcs@1.9.2':
+ resolution: {integrity: sha512-kBk5xrxV9OWR7i+JhL/plQrgQ2/KJhB2pB5gj+w6GXhbMQwS3DPpOvi/zN0Tj84jwPvHMllpEl0QHj6ywN7/eQ==}
+
+ '@mysten/sui@1.45.2':
+ resolution: {integrity: sha512-gftf7fNpFSiXyfXpbtP2afVEnhc7p2m/MEYc/SO5pov92dacGKOpQIF7etZsGDI1Wvhv+dpph+ulRNpnYSs7Bg==}
+ engines: {node: '>=18'}
+
+ '@mysten/utils@0.2.0':
+ resolution: {integrity: sha512-CM6kJcJHX365cK6aXfFRLBiuyXc5WSBHQ43t94jqlCAIRw8umgNcTb5EnEA9n31wPAQgLDGgbG/rCUISCTJ66w==}
+
+ '@napi-rs/wasm-runtime@0.2.12':
+ resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+
+ '@noble/ciphers@1.3.0':
+ resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.4.2':
+ resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==}
+
+ '@noble/curves@1.7.0':
+ resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.8.2':
+ resolution: {integrity: sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.1':
+ resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.4':
+ resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.7':
+ resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/ed25519@1.7.5':
+ resolution: {integrity: sha512-xuS0nwRMQBvSxDa7UxMb61xTiH3MxTgUfhyPUALVIe0FlOAz4sjELwyDRyUvqeEYfRSG9qNjFIycqLZppg4RSA==}
+
+ '@noble/hashes@1.2.0':
+ resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==}
+
+ '@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.6.0':
+ resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/hashes@1.6.1':
+ resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/hashes@1.7.2':
+ resolution: {integrity: sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/hashes@1.8.0':
+ resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/secp256k1@1.7.1':
+ resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
+
+ '@noble/secp256k1@1.7.2':
+ resolution: {integrity: sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ==}
+
+ '@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'}
+
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
+ '@nomicfoundation/edr-darwin-arm64@0.12.0-next.22':
+ resolution: {integrity: sha512-TpEBSKyMZJEPvYwBPYclC2b+qobKjn1YhVa7aJ1R7RMPy5dJ/PqsrUK5UuUFFybBqoIorru5NTcsyCMWP5T/Fg==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-darwin-x64@0.12.0-next.22':
+ resolution: {integrity: sha512-aK/+m8xUkR4u+czTVGU06nSFVH43AY6XCBoR2YjO8SglAAjCSTWK3WAfVb6FcsriMmKv4PrvoyHLMbMP+fXcGA==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.22':
+ resolution: {integrity: sha512-W5vXMleG14hVzRYGPEwlHLJ6iiQE8Qh63Uj538nAz4YUI6wWSgUOZE7K2Gt1EdujZGnrt7kfDslgJ96n4nKQZw==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.22':
+ resolution: {integrity: sha512-VDp7EB3iY8MH/fFVcgEzLDGYmtS6j2honNc0RNUCFECKPrdsngGrTG8p+YFxyVjq2m5GEsdyKo4e+BKhaUNPdg==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.22':
+ resolution: {integrity: sha512-XL6oA3ymRSQYyvg6hF1KIax6V/9vlWr5gJ8GPHVVODk1a/YfuEEY1osN5Zmo6aztUkSGKwSuac/3Ax7rfDDiSg==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.22':
+ resolution: {integrity: sha512-hmkRIXxWa9P0PwfXOAO6WUw11GyV5gpxcMunqWBTkwZ4QW/hi/CkXmlLo6VHd6ceCwpUNLhCGndBtrOPrNRi4A==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.22':
+ resolution: {integrity: sha512-X7f+7KUMm00trsXAHCHJa+x1fc3QAbk2sBctyOgpET+GLrfCXbxqrccKi7op8f0zTweAVGg1Hsc8SjjC7kwFLw==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/edr@0.12.0-next.22':
+ resolution: {integrity: sha512-JigYWf2stjpDxSndBsxRoobQHK8kz4SAVaHtTIKQLIHbsBwymE8i120Ejne6Jk+Ndc5CsNINXB8/bK6vLPe9jA==}
+ engines: {node: '>= 20'}
+
+ '@nomicfoundation/hardhat-ethers@3.1.3':
+ resolution: {integrity: sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA==}
+ peerDependencies:
+ ethers: ^5.7.2
+ hardhat: ^2.28.0
+
+ '@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'}
+
+ '@nomiclabs/hardhat-ethers@2.2.3':
+ resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==}
+ peerDependencies:
+ ethers: ^5.7.2
+ hardhat: ^2.0.0
+
+ '@nomiclabs/hardhat-waffle@2.0.6':
+ resolution: {integrity: sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg==}
+ peerDependencies:
+ '@nomiclabs/hardhat-ethers': ^2.0.0
+ '@types/sinon-chai': ^3.2.3
+ ethereum-waffle: '*'
+ ethers: ^5.7.2
+ hardhat: ^2.0.0
+
+ '@openzeppelin/contracts-upgradeable@4.7.3':
+ resolution: {integrity: sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==}
+
+ '@openzeppelin/contracts-upgradeable@5.4.0':
+ resolution: {integrity: sha512-STJKyDzUcYuB35Zub1JpWW58JxvrFFVgQ+Ykdr8A9PGXgtq/obF5uoh07k2XmFyPxfnZdPdBdhkJ/n2YxJ87HQ==}
+ peerDependencies:
+ '@openzeppelin/contracts': 5.4.0
+
+ '@openzeppelin/contracts@3.4.2':
+ resolution: {integrity: sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==}
+
+ '@openzeppelin/contracts@4.3.3':
+ resolution: {integrity: sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==}
+
+ '@openzeppelin/contracts@5.4.0':
+ resolution: {integrity: sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==}
+
+ '@peculiar/asn1-schema@2.6.0':
+ resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==}
+
+ '@pkgr/core@0.2.9':
+ resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@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@3.0.2':
+ resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==}
+ engines: {node: '>=12'}
+
+ '@protobuf-ts/grpcweb-transport@2.11.1':
+ resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==}
+
+ '@protobuf-ts/runtime-rpc@2.11.1':
+ resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==}
+
+ '@protobuf-ts/runtime@2.11.1':
+ resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==}
+
+ '@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==}
+
+ '@resolver-engine/core@0.3.3':
+ resolution: {integrity: sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==}
+
+ '@resolver-engine/fs@0.3.3':
+ resolution: {integrity: sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==}
+
+ '@resolver-engine/imports-fs@0.3.3':
+ resolution: {integrity: sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==}
+
+ '@resolver-engine/imports@0.3.3':
+ resolution: {integrity: sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==}
+
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
+ '@rushstack/eslint-patch@1.15.0':
+ resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==}
+
+ '@safe-global/api-kit@4.0.1':
+ resolution: {integrity: sha512-pNtDLgMHlCSr4Hwwe6jsnvMheAu2SZCTqjYlnNe4cKH2pSKINVRTiILoeJ0wOpixrMCH4NlgJ+9N3QruRNcCpQ==}
+
+ '@safe-global/protocol-kit@1.3.0':
+ resolution: {integrity: sha512-zBhwHpaUggywmnR1Xm5RV22DpyjmVWYP3pnOl4rcf9LAc1k7IVmw6WIt2YVhHRaWGxVYMd4RitJX8Dx2+8eLZQ==}
+
+ '@safe-global/protocol-kit@6.1.2':
+ resolution: {integrity: sha512-cTpPdUAS2AMfGCkD1T601rQNjT0rtMQLA2TH7L/C+iFPAC6WrrDFop2B9lzeHjczlnVzrRpfFe4cL1bLrJ9NZw==}
+
+ '@safe-global/safe-core-sdk-types@2.3.0':
+ resolution: {integrity: sha512-dU0KkDV1KJNf11ajbUjWiSi4ygdyWfhk1M50lTJWUdCn1/2Bsb/hICM8LoEk6DCoFumxaoCet02SmYakXsW2CA==}
+ deprecated: 'WARNING: This project has been renamed to @safe-global/types-kit. Please, migrate from @safe-global/safe-core-sdk-types@5.1.0 to @safe-global/types-kit@1.0.0.'
+
+ '@safe-global/safe-deployments@1.37.50':
+ resolution: {integrity: sha512-WUgH0YeVmHm0Uv5dQ8QW4nEAMs8Pm6DhObglBSUlW8ur+RGDd4/xmhFJKm8up/qbDVB/n5Skf+5d+eWZIPRClg==}
+
+ '@safe-global/safe-modules-deployments@2.2.22':
+ resolution: {integrity: sha512-HxVSX2F3yHvtwm85KlRpM4QXnnq1LDXZZKs5X2+Ip9DeQX+xXSRm9MjHED7ZdCdxXT/Sfga/2vmKsnoSU1t/lA==}
+
+ '@safe-global/types-kit@3.0.0':
+ resolution: {integrity: sha512-AZWIlR5MguDPdGiOj7BB4JQPY2afqmWQww1mu8m8Oi16HHBW99G01kFOu4NEHBwEU1cgwWOMY19hsI5KyL4W2w==}
+
+ '@scure/base@1.1.9':
+ resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==}
+
+ '@scure/base@1.2.6':
+ resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==}
+
+ '@scure/bip32@1.1.5':
+ resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==}
+
+ '@scure/bip32@1.4.0':
+ resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==}
+
+ '@scure/bip32@1.7.0':
+ resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==}
+
+ '@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==}
+
+ '@scure/bip39@1.6.0':
+ resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==}
+
+ '@scure/starknet@1.1.0':
+ resolution: {integrity: sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==}
+
+ '@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'}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@sinclair/typebox@0.34.48':
+ resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==}
+
+ '@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'}
+
+ '@sinonjs/commons@3.0.1':
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
+
+ '@sinonjs/fake-timers@10.3.0':
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+
+ '@so-ric/colorspace@1.1.6':
+ resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==}
+
+ '@solana-developers/helpers@2.8.0':
+ resolution: {integrity: sha512-K3SjX3f0NbCGBcbN40vIMfTicYFNj8bkImcF32JxiR1YmsXu2scb3449bG1CRk/5JBSA0pP4p+lhGU1nc2mEVg==}
+
+ '@solana-developers/helpers@2.8.1':
+ resolution: {integrity: sha512-xvoOj+ewL18+h6fMrXp1vTss0WBLnhQHnBb6mMPfEQE32w0THlxm8OPXNUY8g4tREX7ugU5cDEP7c2teye1Z7A==}
+
+ '@solana/buffer-layout-utils@0.2.0':
+ resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==}
+ engines: {node: '>= 10'}
+
+ '@solana/buffer-layout@4.0.1':
+ resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==}
+ engines: {node: '>=5.10'}
+
+ '@solana/codecs-core@2.0.0-rc.1':
+ resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-core@2.3.0':
+ resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/codecs-data-structures@2.0.0-rc.1':
+ resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-numbers@2.0.0-rc.1':
+ resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-numbers@2.3.0':
+ resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/codecs-strings@2.0.0-rc.1':
+ resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==}
+ peerDependencies:
+ fastestsmallesttextencoderdecoder: ^1.0.22
+ typescript: '>=5'
+
+ '@solana/codecs@2.0.0-rc.1':
+ resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/errors@2.0.0-rc.1':
+ resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/errors@2.3.0':
+ resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==}
+ engines: {node: '>=20.18.0'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/options@2.0.0-rc.1':
+ resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/spl-token-group@0.0.7':
+ resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@solana/spl-token-metadata@0.1.6':
+ resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@solana/spl-token@0.3.11':
+ resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@solana/spl-token@0.4.14':
+ resolution: {integrity: sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.98.0
+
+ '@solana/web3.js@1.98.4':
+ resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==}
+
+ '@solidity-parser/parser@0.18.0':
+ resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==}
+
+ '@solidity-parser/parser@0.20.2':
+ resolution: {integrity: sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==}
+
+ '@sqds/sdk@2.0.4':
+ resolution: {integrity: sha512-SmwqL55GW9teIPRqYBVUp1tNp3Tfd8olPShas/+5L48XaUHBDEFNuDA9E8KKbIZoB34WSLdgyq0tIJLlhMMHnA==}
+
+ '@starknet-io/types-js@0.8.4':
+ resolution: {integrity: sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==}
+
+ '@starknet-io/types-js@0.9.2':
+ resolution: {integrity: sha512-vWOc0FVSn+RmabozIEWcEny1I73nDGTvOrLYJsR1x7LGA3AZmqt4i/aW69o/3i2NN5CVP8Ok6G1ayRQJKye3Wg==}
+
+ '@suchipi/femver@1.0.0':
+ resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==}
+
+ '@swc/core-darwin-arm64@1.15.10':
+ resolution: {integrity: sha512-U72pGqmJYbjrLhMndIemZ7u9Q9owcJczGxwtfJlz/WwMaGYAV/g4nkGiUVk/+QSX8sFCAjanovcU1IUsP2YulA==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@swc/core-darwin-x64@1.15.10':
+ resolution: {integrity: sha512-NZpDXtwHH083L40xdyj1sY31MIwLgOxKfZEAGCI8xHXdHa+GWvEiVdGiu4qhkJctoHFzAEc7ZX3GN5phuJcPuQ==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@swc/core-linux-arm-gnueabihf@1.15.10':
+ resolution: {integrity: sha512-ioieF5iuRziUF1HkH1gg1r93e055dAdeBAPGAk40VjqpL5/igPJ/WxFHGvc6WMLhUubSJI4S0AiZAAhEAp1jDg==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@swc/core-linux-arm64-gnu@1.15.10':
+ resolution: {integrity: sha512-tD6BClOrxSsNus9cJL7Gxdv7z7Y2hlyvZd9l0NQz+YXzmTWqnfzLpg16ovEI7gknH2AgDBB5ywOsqu8hUgSeEQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-arm64-musl@1.15.10':
+ resolution: {integrity: sha512-4uAHO3nbfbrTcmO/9YcVweTQdx5fN3l7ewwl5AEK4yoC4wXmoBTEPHAVdKNe4r9+xrTgd4BgyPsy0409OjjlMw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-x64-gnu@1.15.10':
+ resolution: {integrity: sha512-W0h9ONNw1pVIA0cN7wtboOSTl4Jk3tHq+w2cMPQudu9/+3xoCxpFb9ZdehwCAk29IsvdWzGzY6P7dDVTyFwoqg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-linux-x64-musl@1.15.10':
+ resolution: {integrity: sha512-XQNZlLZB62S8nAbw7pqoqwy91Ldy2RpaMRqdRN3T+tAg6Xg6FywXRKCsLh6IQOadr4p1+lGnqM/Wn35z5a/0Vw==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-win32-arm64-msvc@1.15.10':
+ resolution: {integrity: sha512-qnAGrRv5Nj/DATxAmCnJQRXXQqnJwR0trxLndhoHoxGci9MuguNIjWahS0gw8YZFjgTinbTxOwzatkoySihnmw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@swc/core-win32-ia32-msvc@1.15.10':
+ resolution: {integrity: sha512-i4X/q8QSvzVlaRtv1xfnfl+hVKpCfiJ+9th484rh937fiEZKxZGf51C+uO0lfKDP1FfnT6C1yBYwHy7FLBVXFw==}
+ engines: {node: '>=10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@swc/core-win32-x64-msvc@1.15.10':
+ resolution: {integrity: sha512-HvY8XUFuoTXn6lSccDLYFlXv1SU/PzYi4PyUqGT++WfTnbw/68N/7BdUZqglGRwiSqr0qhYt/EhmBpULj0J9rA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@swc/core@1.15.10':
+ resolution: {integrity: sha512-udNofxftduMUEv7nqahl2nvodCiCDQ4Ge0ebzsEm6P8s0RC2tBM0Hqx0nNF5J/6t9uagFJyWIDjXy3IIWMHDJw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@swc/helpers': '>=0.5.17'
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+
+ '@swc/counter@0.1.3':
+ resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+
+ '@swc/helpers@0.5.18':
+ resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==}
+
+ '@swc/jest@0.2.39':
+ resolution: {integrity: sha512-eyokjOwYd0Q8RnMHri+8/FS1HIrIUKK/sRrFp8c1dThUOfNeCWbLmBP1P5VsKdvmkd25JaH+OKYwEYiAYg9YAA==}
+ engines: {npm: '>= 7.0.0'}
+ peerDependencies:
+ '@swc/core': '*'
+
+ '@swc/types@0.1.25':
+ resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==}
+
+ '@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'}
+
+ '@ton/core@0.59.1':
+ resolution: {integrity: sha512-SxFBAvutYJaIllTkv82vbHTJhJI6NxzqUhi499CDEjJEZ9i6i9lHJiK2df4dlLAb/4SiWX6+QUzESkK4DEdnCw==}
+ peerDependencies:
+ '@ton/crypto': '>=3.2.0'
+
+ '@ton/crypto-primitives@2.1.0':
+ resolution: {integrity: sha512-PQesoyPgqyI6vzYtCXw4/ZzevePc4VGcJtFwf08v10OevVJHVfW238KBdpj1kEDQkxWLeuNHEpTECNFKnP6tow==}
+
+ '@ton/crypto@3.3.0':
+ resolution: {integrity: sha512-/A6CYGgA/H36OZ9BbTaGerKtzWp50rg67ZCH2oIjV1NcrBaCK9Z343M+CxedvM7Haf3f/Ee9EhxyeTp0GKMUpA==}
+
+ '@ton/ton@15.1.0':
+ resolution: {integrity: sha512-almetcfTu7jLjcNcEEPB7wAc8yl90ES1M//sOr1QE+kv7RbmEvMkaPSc7kFxzs10qrjIPKxlodBJlMSWP5LuVQ==}
+ peerDependencies:
+ '@ton/core': '>=0.59.0'
+ '@ton/crypto': '>=3.2.0'
+
+ '@tronweb3/google-protobuf@3.21.4':
+ resolution: {integrity: sha512-joxgV4esCdyZ921AprMIG1T7HjkypquhbJ5qJti/priCBJhRE1z9GOxIEMvayxSVSRbMGIoJNE0Knrg3vpwM1w==}
+ deprecated: This package is deprecated. Please use the official package google-protobuf instead.
+
+ '@trufflesuite/bigint-buffer@1.1.9':
+ resolution: {integrity: sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==}
+ engines: {node: '>= 10.0.0'}
+
+ '@tsconfig/node10@1.0.12':
+ resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==}
+
+ '@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==}
+
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+
+ '@typechain/ethers-v5@10.2.1':
+ resolution: {integrity: sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==}
+ peerDependencies:
+ '@ethersproject/abi': ^5.0.0
+ '@ethersproject/providers': ^5.0.0
+ ethers: ^5.7.2
+ typechain: ^8.1.1
+ typescript: '>=4.3.0'
+
+ '@types/abstract-leveldown@7.2.5':
+ resolution: {integrity: sha512-/2B0nQF4UdupuxeKTJA2+Rj1D+uDemo6P4kMwKCpbfpnzeVaWSELTsAw4Lxn3VJD6APtRrZOCuYo+4nHUQfTfg==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.27.0':
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.28.0':
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+
+ '@types/bn.js@4.11.6':
+ resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==}
+
+ '@types/bn.js@5.2.0':
+ resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==}
+
+ '@types/cacheable-request@6.0.3':
+ resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
+
+ '@types/chai@4.3.20':
+ resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/graceful-fs@4.1.9':
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
+
+ '@types/http-cache-semantics@4.0.4':
+ resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+
+ '@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.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ '@types/keyv@3.1.4':
+ resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
+
+ '@types/level-errors@3.0.2':
+ resolution: {integrity: sha512-gyZHbcQ2X5hNXf/9KS2qGEmgDe9EN2WDM3rJ5Ele467C0nA1sLhtmv1bZiPMDYfAYCfPWft0uQIaTvXbASSTRA==}
+
+ '@types/levelup@4.3.3':
+ resolution: {integrity: sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==}
+
+ '@types/mkdirp@0.5.2':
+ resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==}
+
+ '@types/mocha@10.0.10':
+ resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==}
+
+ '@types/node-fetch@2.6.13':
+ resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==}
+
+ '@types/node@11.11.6':
+ resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==}
+
+ '@types/node@12.20.55':
+ resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+
+ '@types/node@18.18.14':
+ resolution: {integrity: sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==}
+
+ '@types/pbkdf2@3.1.2':
+ resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==}
+
+ '@types/prettier@2.7.3':
+ resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==}
+
+ '@types/qs@6.14.0':
+ resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
+
+ '@types/responselike@1.0.3':
+ resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
+
+ '@types/secp256k1@4.0.7':
+ resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==}
+
+ '@types/semver@7.7.1':
+ resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
+
+ '@types/sinon-chai@3.2.12':
+ resolution: {integrity: sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==}
+
+ '@types/sinon@21.0.0':
+ resolution: {integrity: sha512-+oHKZ0lTI+WVLxx1IbJDNmReQaIsQJjN2e7UUrJHEeByG7bFeKJYsv1E75JxTQ9QKJDp21bAa/0W2Xo4srsDnw==}
+
+ '@types/sinonjs__fake-timers@15.0.1':
+ resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==}
+
+ '@types/stack-utils@2.0.3':
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+
+ '@types/tinycolor2@1.4.6':
+ resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
+
+ '@types/triple-beam@1.3.5':
+ resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
+
+ '@types/uuid@8.3.4':
+ resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==}
+
+ '@types/ws@7.4.7':
+ resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
+
+ '@types/ws@8.18.1':
+ resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
+
+ '@types/yargs-parser@21.0.3':
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ '@types/yargs@17.0.35':
+ resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
+
+ '@types/yoga-layout@1.9.2':
+ resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==}
+
+ '@typescript-eslint/eslint-plugin@7.18.0':
+ resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==}
+ 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.18.0':
+ resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
+ 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.18.0':
+ resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/type-utils@7.18.0':
+ resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==}
+ 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.18.0':
+ resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
+ 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.18.0':
+ resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==}
+ 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.18.0':
+ resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
+ 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.18.0':
+ resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
+ cpu: [arm]
+ os: [android]
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
+ cpu: [arm64]
+ os: [android]
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
+ cpu: [x64]
+ os: [win32]
+
+ abi-wan-kanabi@2.2.4:
+ resolution: {integrity: sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==}
+ hasBin: true
+
+ abitype@1.2.3:
+ resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3.22.0 || ^4.0.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.8:
+ resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==}
+
+ abstract-leveldown@6.2.3:
+ resolution: {integrity: sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ abstract-leveldown@6.3.0:
+ resolution: {integrity: sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ 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.4:
+ resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ 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==}
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ agentkeepalive@4.6.0:
+ resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
+ engines: {node: '>= 8.0.0'}
+
+ aggregate-error@3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
+ 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-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@2.1.1:
+ resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+ engines: {node: '>=0.10.0'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ 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'}
+
+ ansicolors@0.3.2:
+ resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==}
+
+ antlr4@4.13.2:
+ resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==}
+ engines: {node: '>=16'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ aptos@1.22.1:
+ resolution: {integrity: sha512-zw8IbCkMOpXdeAxp106W6CLHR8i88QY+z5u912XIlwZ3AngUVKY55b3rG8KP3uKEeLAIcY9FVWzS5ndzV60grg==}
+ engines: {node: '>=20.0.0'}
+ deprecated: Please update to the newer '@aptos-labs/ts-sdk'. 'aptos' is deprecated
+
+ arg@4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-back@3.1.0:
+ resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==}
+ engines: {node: '>=6'}
+
+ array-back@4.0.2:
+ resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==}
+ engines: {node: '>=8'}
+
+ array-buffer-byte-length@1.0.2:
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+ engines: {node: '>= 0.4'}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ array-includes@3.1.9:
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
+ engines: {node: '>= 0.4'}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ array.prototype.findlastindex@1.2.6:
+ resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.3:
+ resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.3:
+ resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
+ engines: {node: '>= 0.4'}
+
+ arraybuffer.prototype.slice@1.0.4:
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+ engines: {node: '>= 0.4'}
+
+ asn1@0.2.6:
+ resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
+
+ asn1js@3.0.7:
+ resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==}
+ engines: {node: '>=12.0.0'}
+
+ assert-plus@1.0.0:
+ resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
+ engines: {node: '>=0.8'}
+
+ assert@2.1.0:
+ resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ ast-metadata-inferer@0.8.1:
+ resolution: {integrity: sha512-ht3Dm6Zr7SXv6t1Ra6gFo0+kLDglHGrEbYihTkcycrbHw7WCcuhBzPlJYHEsIpycaUwzsJHje+vUcxXUX4ztTA==}
+
+ ast-parents@0.0.1:
+ resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==}
+
+ astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+
+ async-eventemitter@0.2.4:
+ resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==}
+
+ async-function@1.0.0:
+ resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+ engines: {node: '>= 0.4'}
+
+ async-limiter@1.0.1:
+ resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
+
+ async@2.6.4:
+ resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ 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'}
+
+ auto-bind@4.0.0:
+ resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==}
+ engines: {node: '>=8'}
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ 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@0.21.4:
+ resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
+
+ axios@1.13.3:
+ resolution: {integrity: sha512-ERT8kdX7DZjtUm7IitEyV7InTHAF42iJuMArIiDIV5YtPanJkgw4hw5Dyg9fh0mihdWNn1GKaeIWErfe56UQ1g==}
+
+ babel-jest@29.7.0:
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+
+ babel-plugin-istanbul@6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
+
+ babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ babel-preset-current-node-syntax@1.2.0:
+ resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0 || ^8.0.0-0
+
+ babel-preset-jest@29.6.3:
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base-x@3.0.11:
+ resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==}
+
+ base-x@4.0.1:
+ resolution: {integrity: sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==}
+
+ base-x@5.0.1:
+ resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.9.18:
+ resolution: {integrity: sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==}
+ hasBin: true
+
+ bcrypt-pbkdf@1.0.2:
+ resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
+
+ bech32@1.1.4:
+ resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==}
+
+ bech32@2.0.0:
+ resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==}
+
+ bigint-buffer@1.1.5:
+ resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==}
+ engines: {node: '>= 10.0.0'}
+
+ bignumber.js@9.3.1:
+ resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ bip32@5.0.0:
+ resolution: {integrity: sha512-h043yQ9n3iU4WZ8KLRpEECMl3j1yx2DQ1kcPlzWg8VZC0PtukbDiyLDKbe6Jm79mL6Tfg+WFuZMYxnzVyr/Hyw==}
+ engines: {node: '>=18.0.0'}
+
+ bip39@3.0.4:
+ resolution: {integrity: sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==}
+
+ bip39@3.1.0:
+ resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==}
+
+ blakejs@1.2.1:
+ resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==}
+
+ bluebird@3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+
+ bn.js@4.11.6:
+ resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==}
+
+ bn.js@4.12.2:
+ resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==}
+
+ bn.js@5.2.2:
+ resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==}
+
+ body-parser@1.20.4:
+ resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ borsh@0.7.0:
+ resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==}
+
+ boxen@5.1.2:
+ resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
+ engines: {node: '>=10'}
+
+ brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ 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-headers@0.4.1:
+ resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==}
+
+ browser-stdout@1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+
+ browserify-aes@1.2.0:
+ resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
+
+ browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ 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==}
+
+ bs58@6.0.0:
+ resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==}
+
+ bs58check@2.1.2:
+ resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==}
+
+ bs58check@4.0.0:
+ resolution: {integrity: sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==}
+
+ bser@2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer-layout@1.2.2:
+ resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==}
+ engines: {node: '>=4.5'}
+
+ buffer-to-arraybuffer@0.0.5:
+ resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==}
+
+ buffer-xor@1.0.3:
+ resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
+
+ buffer-xor@2.0.2:
+ resolution: {integrity: sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bufferutil@4.0.5:
+ resolution: {integrity: sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==}
+ engines: {node: '>=6.14.2'}
+
+ bufferutil@4.1.0:
+ resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==}
+ engines: {node: '>=6.14.2'}
+
+ bufio@1.2.3:
+ resolution: {integrity: sha512-5Tt66bRzYUSlVZatc0E92uDenreJ+DpTBmSAUwL4VSxJn3e6cUyYwx+PoqML0GRZatgA/VX8ybhxItF8InZgqA==}
+ engines: {node: '>=8.0.0'}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.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'}
+
+ cacheable-request@10.2.14:
+ 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-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase@3.0.0:
+ resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==}
+ engines: {node: '>=0.10.0'}
+
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ caniuse-lite@1.0.30001766:
+ resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==}
+
+ cardinal@2.1.1:
+ resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
+ hasBin: true
+
+ caseless@0.12.0:
+ resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+
+ chai@4.5.0:
+ resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
+ engines: {node: '>=4'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+
+ 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'}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+
+ ci-info@2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
+ ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ 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.7:
+ resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==}
+ engines: {node: '>= 0.10'}
+
+ cjs-module-lexer@1.4.3:
+ resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+
+ 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-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-table3@0.6.5:
+ resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
+ engines: {node: 10.* || >= 12.*}
+
+ cli-truncate@2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+
+ cliui@3.2.0:
+ resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==}
+
+ 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'}
+
+ clone-response@1.0.3:
+ resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
+
+ co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ code-excerpt@3.0.0:
+ resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==}
+ engines: {node: '>=10'}
+
+ code-point-at@1.1.0:
+ resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
+ engines: {node: '>=0.10.0'}
+
+ collect-v8-coverage@1.0.3:
+ resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
+
+ 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-convert@3.1.3:
+ resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==}
+ engines: {node: '>=14.6'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color-name@2.1.0:
+ resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==}
+ engines: {node: '>=12.20'}
+
+ color-string@2.1.4:
+ resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==}
+ engines: {node: '>=18'}
+
+ color@5.0.3:
+ resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==}
+ engines: {node: '>=18'}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ command-exists@1.2.9:
+ resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
+
+ command-line-args@5.2.1:
+ resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==}
+ engines: {node: '>=4.0.0'}
+
+ command-line-usage@6.1.3:
+ resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==}
+ engines: {node: '>=8.0.0'}
+
+ commander@10.0.1:
+ resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
+ engines: {node: '>=14'}
+
+ commander@12.1.0:
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
+
+ commander@14.0.2:
+ resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==}
+ engines: {node: '>=20'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ concurrently@9.1.2:
+ resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ config-chain@1.1.13:
+ resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+
+ 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-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ convert-to-spaces@1.0.2:
+ resolution: {integrity: sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==}
+ engines: {node: '>= 4'}
+
+ cookie-signature@1.0.7:
+ resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
+
+ cookie@0.4.2:
+ resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
+ engines: {node: '>= 0.6'}
+
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
+ core-js-pure@3.48.0:
+ resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==}
+
+ 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.6:
+ resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
+ engines: {node: '>= 0.10'}
+
+ 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-jest@29.7.0:
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+
+ create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ cross-fetch@3.2.0:
+ resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
+
+ cross-fetch@4.1.0:
+ resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ crypto-hash@1.3.0:
+ resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==}
+ engines: {node: '>=8'}
+
+ d@1.0.2:
+ resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
+ engines: {node: '>=0.12'}
+
+ dashdash@1.14.1:
+ resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
+ engines: {node: '>=0.10'}
+
+ data-view-buffer@1.0.2:
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.2:
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.1:
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+ engines: {node: '>= 0.4'}
+
+ dataloader@2.2.3:
+ resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==}
+
+ dayjs@1.11.19:
+ resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
+
+ 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.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ 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'}
+
+ decamelize@4.0.0:
+ resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
+ engines: {node: '>=10'}
+
+ decode-uri-component@0.2.2:
+ 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'}
+
+ dedent@1.7.1:
+ resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
+ 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'}
+
+ defer-to-connect@2.0.1:
+ resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
+ engines: {node: '>=10'}
+
+ deferred-leveldown@5.3.0:
+ resolution: {integrity: sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ delay@5.0.0:
+ resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==}
+ engines: {node: '>=10'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ detect-indent@7.0.2:
+ resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==}
+ engines: {node: '>=12.20'}
+
+ detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ detect-newline@4.0.1:
+ resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ diff@4.0.4:
+ resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==}
+ engines: {node: '>=0.3.1'}
+
+ diff@5.2.2:
+ resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==}
+ engines: {node: '>=0.3.1'}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ 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-walk@0.1.2:
+ resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
+
+ dot-case@3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+
+ dotenv@16.6.1:
+ resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
+ engines: {node: '>=12'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ ecc-jsbn@0.1.2:
+ resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
+
+ ed25519-hd-key@1.3.0:
+ resolution: {integrity: sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.279:
+ resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==}
+
+ elliptic@6.6.1:
+ resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
+
+ emittery@0.10.0:
+ resolution: {integrity: sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==}
+ engines: {node: '>=12'}
+
+ emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ enabled@2.0.0:
+ resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==}
+
+ encode-utf8@1.0.3:
+ resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ encoding-down@6.3.0:
+ resolution: {integrity: sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+
+ enquirer@2.4.1:
+ resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
+ engines: {node: '>=8.6'}
+
+ env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
+ errno@0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+
+ error-ex@1.3.4:
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
+
+ es-abstract@1.24.1:
+ resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.1.0:
+ resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
+ engines: {node: '>= 0.4'}
+
+ es-to-primitive@1.3.0:
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+ 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@4.2.8:
+ resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
+
+ es6-promisify@5.0.0:
+ resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
+
+ 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==}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ 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'}
+
+ eslint-config-prettier@9.1.2:
+ resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+
+ eslint-import-resolver-typescript@3.10.1:
+ resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.12.1:
+ resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
+ 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-autofix@2.2.0:
+ resolution: {integrity: sha512-lu8+0r+utyTroROqXIL+a8sUpICi6za22hIzlpb0+x0tQGRnOjhOKU7v8mC/NS/faDoVsw6xW3vUpc+Mcz5NWA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ eslint: '>=8'
+
+ eslint-plugin-compat@4.2.0:
+ resolution: {integrity: sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==}
+ engines: {node: '>=14.x'}
+ peerDependencies:
+ eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ eslint-plugin-import@2.32.0:
+ resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-jest-extended@2.0.3:
+ resolution: {integrity: sha512-gPhanMUyClZHj4UqvtavRA2s7FqaMdNZQvKLz12gwkxikIKEwr4FgrnFne7/obd0bEIdpHgc0b2zwLK7BGWurw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ eslint-plugin-prettier@5.5.5:
+ resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
+ eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0'
+ prettier: '>=3.0.0'
+ peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-unused-imports@3.2.0:
+ resolution: {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': 6 - 7
+ eslint: '8'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+
+ eslint-rule-composer@0.3.0:
+ resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==}
+ engines: {node: '>=4.0.0'}
+
+ 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-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.57.1:
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+
+ esniff@2.0.1:
+ resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
+ engines: {node: '>=0.10'}
+
+ 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.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ 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'}
+
+ 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-ens-namehash@2.0.8:
+ resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==}
+
+ eth-lib@0.1.29:
+ resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==}
+
+ eth-lib@0.2.8:
+ resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==}
+
+ ethereum-bloom-filters@1.2.0:
+ resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==}
+
+ 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==}
+
+ ethereum-waffle@4.0.10:
+ resolution: {integrity: sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==}
+ engines: {node: '>=10.0'}
+ hasBin: true
+ peerDependencies:
+ ethers: ^5.7.2
+
+ 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==}
+
+ ethereumjs-util@7.1.3:
+ resolution: {integrity: sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==}
+ engines: {node: '>=10.0.0'}
+
+ ethereumjs-util@7.1.5:
+ resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==}
+ engines: {node: '>=10.0.0'}
+
+ ethers@5.8.0:
+ resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==}
+
+ ethjs-unit@0.1.6:
+ 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==}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ eventemitter3@3.1.2:
+ resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==}
+
+ eventemitter3@4.0.4:
+ resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==}
+
+ eventemitter3@4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
+ eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+
+ eventemitter3@5.0.4:
+ resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
+
+ 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'}
+
+ exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ exponential-backoff@3.1.3:
+ resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
+
+ express@4.22.1:
+ resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
+ engines: {node: '>= 0.10.0'}
+
+ ext@1.7.0:
+ resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ 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-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-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ 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-stable-stringify@1.0.0:
+ resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==}
+
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+
+ fastestsmallesttextencoderdecoder@1.0.22:
+ resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==}
+
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fb-watchman@2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ fecha@4.2.3:
+ resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.3.2:
+ resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==}
+ engines: {node: '>= 0.8'}
+
+ find-replace@3.0.0:
+ resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==}
+ engines: {node: '>=4.0.0'}
+
+ find-up@1.1.2:
+ resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==}
+ engines: {node: '>=0.10.0'}
+
+ 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'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
+ flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+
+ fmix@0.1.0:
+ resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==}
+
+ fn.name@1.1.0:
+ resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
+
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+
+ forever-agent@0.6.1:
+ resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
+
+ 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.5:
+ resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+ engines: {node: '>= 6'}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fp-ts@1.19.3:
+ resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==}
+
+ fp-ts@2.16.11:
+ resolution: {integrity: sha512-LaI+KaX2NFkfn1ZGHoKCmcfv7yrZsC3b8NtWsTVQeHkq4F27vI5igUuO53sxqDEa2gNQMHFPmpojDw/1zmUK7w==}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-extra@0.30.0:
+ resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==}
+
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
+ 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'}
+
+ fs-minipass@1.2.7:
+ resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ 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.8:
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+ 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==}
+
+ ganache@7.4.3:
+ resolution: {integrity: sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA==}
+ hasBin: true
+ bundledDependencies:
+ - '@trufflesuite/bigint-buffer'
+ - emittery
+ - keccak
+ - leveldown
+ - secp256k1
+ - '@types/bn.js'
+ - '@types/lru-cache'
+ - '@types/seedrandom'
+
+ generator-function@2.0.1:
+ resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+ engines: {node: '>= 0.4'}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@1.0.3:
+ resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-package-type@0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ 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'}
+
+ get-symbol-description@1.1.0:
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+ engines: {node: '>= 0.4'}
+
+ get-tsconfig@4.13.0:
+ resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
+
+ getpass@0.1.7:
+ resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
+
+ git-hooks-list@4.2.1:
+ resolution: {integrity: sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==}
+
+ 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@7.1.7:
+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
+ 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
+
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ global@4.4.0:
+ resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
+
+ 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'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ google-protobuf@3.21.4:
+ resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ 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'}
+
+ gql.tada@1.9.0:
+ resolution: {integrity: sha512-1LMiA46dRs5oF7Qev6vMU32gmiNvM3+3nHoQZA9K9j2xQzH8xOAWnnJrLSbZOFHTSdFxqn86TL6beo1/7ja/aA==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+
+ 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==}
+
+ gradient-string@1.2.0:
+ resolution: {integrity: sha512-Lxog7IDMMWNjwo4O0KbdBvSewk4vW6kQe5XaLuuPCyCE65AGQ1P8YqKJa5dq8TYf/Ge31F+KjWzPR5mAJvjlAg==}
+ engines: {node: '>=4'}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ graphql@16.12.0:
+ resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+
+ har-schema@2.0.0:
+ resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
+ engines: {node: '>=4'}
+
+ har-validator@5.1.5:
+ resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
+ engines: {node: '>=6'}
+ deprecated: this library is no longer supported
+
+ hardhat-contract-sizer@2.10.1:
+ resolution: {integrity: sha512-/PPQQbUMgW6ERzk8M0/DA8/v2TEM9xRRAnF9qKPNMYF6FX5DFWcnxBsQvtp8uBz+vy7rmLyV9Elti2wmmhgkbg==}
+ peerDependencies:
+ hardhat: ^2.0.0
+
+ hardhat-deploy-ethers@0.4.2:
+ resolution: {integrity: sha512-AskNH/XRYYYqPT94MvO5s1yMi+/QvoNjS4oU5VcVqfDU99kgpGETl+uIYHIrSXtH5sy7J6gyVjpRMf4x0tjLSQ==}
+ peerDependencies:
+ '@nomicfoundation/hardhat-ethers': ^3.0.2
+ hardhat: ^2.16.0
+ hardhat-deploy: ^0.12.1
+
+ hardhat-deploy@0.12.4:
+ resolution: {integrity: sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ==}
+
+ hardhat@2.28.3:
+ resolution: {integrity: sha512-f1WxpCJCXzxDc12MgIIxxkvB2QK40g/atsW4Az5WQFhUXpZx4VFoSfvwYBIRsRbq6xIrgxef+tXuWda5wTLlgA==}
+ hasBin: true
+ peerDependencies:
+ ts-node: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ ts-node:
+ optional: true
+ typescript:
+ optional: true
+
+ has-bigints@1.1.0:
+ resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+ engines: {node: '>= 0.4'}
+
+ 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.2.0:
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hash-base@3.1.2:
+ resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==}
+ engines: {node: '>= 0.8'}
+
+ hash.js@1.1.7:
+ resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ 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-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
+ http-https@1.0.0:
+ resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==}
+
+ 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@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ 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==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ immediate@3.2.3:
+ resolution: {integrity: sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==}
+
+ immediate@3.3.0:
+ resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==}
+
+ immutable@4.3.7:
+ resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==}
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ import-local@3.2.0:
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ imul@1.0.1:
+ resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==}
+ engines: {node: '>=0.10.0'}
+
+ 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==}
+
+ injectpromise@1.0.0:
+ resolution: {integrity: sha512-qNq5wy4qX4uWHcVFOEU+RqZkoVG65FhvGkyDWbuBxILMjK6A1LFf5A1mgXZkD4nRx5FCorD81X/XvPKp/zVfPA==}
+
+ ink-gradient@2.0.0:
+ resolution: {integrity: sha512-d2BK/EzzBRoDL54NWkS3JGE4J8xtzwRVWxDAIkQ/eQ60XIzrFMtT5JlUqgV05Qlt32Jvk50qW51YqxGJggTuqA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ink: '>=3.0.0'
+ react: '>=16.8.0'
+
+ ink-table@3.1.0:
+ resolution: {integrity: sha512-qxVb4DIaEaJryvF9uZGydnmP9Hkmas3DCKVpEcBYC0E4eJd3qNgNe+PZKuzgCERFe9LfAS1TNWxCr9+AU4v3YA==}
+ peerDependencies:
+ ink: '>=3.0.0'
+ react: '>=16.8.0'
+
+ ink@3.2.0:
+ resolution: {integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '>=16.8.0'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ internal-slot@1.1.0:
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+ engines: {node: '>= 0.4'}
+
+ invert-kv@1.0.0:
+ resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==}
+ engines: {node: '>=0.10.0'}
+
+ io-ts@1.10.4:
+ resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-arguments@1.2.0:
+ resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
+ engines: {node: '>= 0.4'}
+
+ is-array-buffer@3.0.5:
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+ engines: {node: '>= 0.4'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-async-function@2.1.1:
+ resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.1.0:
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-boolean-object@1.2.2:
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+ engines: {node: '>= 0.4'}
+
+ is-bun-module@2.0.0:
+ resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-ci@2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.2:
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.1.0:
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.1.1:
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
+
+ is-fullwidth-code-point@1.0.0:
+ resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ 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-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+
+ is-generator-function@1.1.2:
+ resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+ 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-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ 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.1.1:
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+ 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-promise@2.2.2:
+ resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+
+ is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+
+ is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ is-shared-array-buffer@1.0.4:
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+ engines: {node: '>= 0.4'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-string@1.1.1:
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.1.1:
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+ engines: {node: '>= 0.4'}
+
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ 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'}
+
+ is-url@1.2.4:
+ resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
+
+ is-utf8@0.2.1:
+ resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
+
+ is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ is-weakref@1.1.1:
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
+
+ is-weakset@2.0.4:
+ resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+ engines: {node: '>= 0.4'}
+
+ 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==}
+
+ isomorphic-ws@4.0.1:
+ resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==}
+ peerDependencies:
+ ws: '*'
+
+ isows@1.0.7:
+ resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==}
+ 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'}
+
+ istanbul-lib-instrument@5.2.1:
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+
+ istanbul-reports@3.2.0:
+ resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
+ engines: {node: '>=8'}
+
+ jayson@4.3.0:
+ resolution: {integrity: sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-cli@29.7.0:
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ jest-config@29.7.0:
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+
+ jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ 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-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ 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-pnp-resolver@1.2.3:
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+
+ jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-regex-util@30.0.1:
+ resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
+ jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ 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-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ 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}
+
+ jest@29.7.0:
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ js-sha256@0.9.0:
+ resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==}
+
+ js-sha3@0.5.7:
+ resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==}
+
+ js-sha3@0.8.0:
+ resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@3.14.2:
+ resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
+ hasBin: true
+
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
+ jsbn@0.1.1:
+ resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
+
+ jscrypto@1.0.3:
+ resolution: {integrity: sha512-lryZl0flhodv4SZHOqyb1bx5sKcJxj0VBo0Kzb4QMAg3L021IC9uGpl0RCZa+9KJwlRGSK2C80ITcwbe19OKLQ==}
+ hasBin: true
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-bigint@1.0.0:
+ resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ 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-schema@0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+
+ 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==}
+
+ 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@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
+ jsonfile@2.4.0:
+ resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==}
+
+ jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+
+ jsonfile@6.2.0:
+ resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
+
+ jsprim@1.4.2:
+ resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
+ engines: {node: '>=0.6.0'}
+
+ jssha@3.2.0:
+ resolution: {integrity: sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==}
+
+ keccak256@1.0.6:
+ resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==}
+
+ keccak@3.0.1:
+ resolution: {integrity: sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==}
+ engines: {node: '>=10.0.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==}
+
+ klaw@1.3.1:
+ resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==}
+
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
+ kuler@2.0.0:
+ resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
+
+ latest-version@7.0.0:
+ resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
+ engines: {node: '>=14.16'}
+
+ lcid@1.0.0:
+ resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==}
+ engines: {node: '>=0.10.0'}
+
+ level-codec@9.0.2:
+ resolution: {integrity: sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by level-transcoder (https://github.com/Level/community#faq)
+
+ level-concat-iterator@2.0.1:
+ resolution: {integrity: sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ level-errors@2.0.1:
+ resolution: {integrity: sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ level-iterator-stream@4.0.2:
+ resolution: {integrity: sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==}
+ engines: {node: '>=6'}
+
+ level-mem@5.0.1:
+ resolution: {integrity: sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by memory-level (https://github.com/Level/community#faq)
+
+ level-packager@5.1.1:
+ resolution: {integrity: sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ level-supports@1.0.1:
+ resolution: {integrity: sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==}
+ engines: {node: '>=6'}
+
+ level-ws@2.0.0:
+ resolution: {integrity: sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==}
+ engines: {node: '>=6'}
+
+ levelup@4.4.0:
+ resolution: {integrity: sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by abstract-level (https://github.com/Level/community#faq)
+
+ 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'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ load-json-file@1.1.0:
+ resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
+ engines: {node: '>=0.10.0'}
+
+ 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'}
+
+ lodash.assign@4.2.0:
+ resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==}
+
+ lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+
+ lodash.isequal@4.5.0:
+ resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+ deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
+
+ lodash.memoize@4.1.2:
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash.truncate@4.4.2:
+ resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
+
+ lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ logform@2.7.0:
+ resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==}
+ engines: {node: '>= 12.0.0'}
+
+ long@5.3.2:
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lossless-json@4.3.0:
+ resolution: {integrity: sha512-ToxOC+SsduRmdSuoLZLYAr5zy1Qu7l5XhmPWM3zefCZ5IcrzW/h108qbJUKfOlDlhvhjUK84+8PSVX0kxnit0g==}
+
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+
+ 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@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lru-queue@0.1.0:
+ resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==}
+
+ lru_map@0.3.3:
+ resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==}
+
+ ltgt@2.2.1:
+ resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==}
+
+ 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-age-cleaner@0.1.3:
+ resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==}
+ engines: {node: '>=6'}
+
+ match-all@1.2.7:
+ resolution: {integrity: sha512-qSpsBKarh55r9KyXzFC3xBLRf2GlGasba2em9kbpRsSlGvdTAqjx3QD0r3FKSARiW+OE4iMHYsolM3aX9n5djw==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ mcl-wasm@0.7.9:
+ resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==}
+ engines: {node: '>=8.9.0'}
+
+ md5.js@1.3.5:
+ resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ memdown@5.1.0:
+ resolution: {integrity: sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==}
+ engines: {node: '>=6'}
+ deprecated: Superseded by memory-level (https://github.com/Level/community#faq)
+
+ memoizee@0.4.17:
+ resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==}
+ engines: {node: '>=0.12'}
+
+ memorystream@0.3.1:
+ resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
+ engines: {node: '>= 0.10.0'}
+
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
+ 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'}
+
+ merkle-patricia-tree@4.2.4:
+ resolution: {integrity: sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ micro-eth-signer@0.14.0:
+ resolution: {integrity: sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==}
+
+ micro-ftch@0.3.1:
+ resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==}
+
+ micro-memoize@4.1.3:
+ resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==}
+
+ micro-packed@0.7.3:
+ resolution: {integrity: sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ miller-rabin@4.0.1:
+ resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
+ hasBin: true
+
+ 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
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-fn@3.1.0:
+ resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==}
+ engines: {node: '>=8'}
+
+ 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'}
+
+ 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-document@2.19.2:
+ resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==}
+
+ 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@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@2.9.0:
+ resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==}
+
+ minizlib@1.3.3:
+ resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==}
+
+ 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==}
+ hasBin: true
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mnemonist@0.38.5:
+ resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==}
+
+ mocha@10.8.2:
+ resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==}
+ engines: {node: '>= 14.0.0'}
+ hasBin: true
+
+ mock-fs@4.14.0:
+ resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ 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
+
+ multihashes@0.4.21:
+ resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==}
+
+ murmur-128@0.2.1:
+ resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==}
+
+ nano-json-stream-parser@0.1.2:
+ resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==}
+
+ napi-postinstall@0.3.4:
+ resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ hasBin: true
+
+ 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'}
+
+ next-tick@1.1.0:
+ resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
+
+ no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+
+ 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-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-gyp-build@4.3.0:
+ resolution: {integrity: sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==}
+ hasBin: true
+
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
+ node-int64@0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
+ node-releases@2.0.27:
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
+ 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-url@6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+
+ normalize-url@8.1.1:
+ resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==}
+ engines: {node: '>=14.16'}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ number-is-nan@1.0.1:
+ resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
+ engines: {node: '>=0.10.0'}
+
+ number-to-bn@1.7.0:
+ resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==}
+ engines: {node: '>=6.5.0', npm: '>=3'}
+
+ oauth-sign@0.9.0:
+ resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@2.2.0:
+ resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
+ engines: {node: '>= 6'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ 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.7:
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+ 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.1:
+ resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
+ engines: {node: '>= 0.4'}
+
+ obliterator@2.0.5:
+ resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==}
+
+ oboe@2.1.5:
+ resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==}
+
+ on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ one-time@1.0.0:
+ resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ os-locale@1.4.0:
+ resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==}
+ engines: {node: '>=0.10.0'}
+
+ os-tmpdir@1.0.2:
+ resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+
+ own-keys@1.0.1:
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
+
+ ox@0.11.3:
+ resolution: {integrity: sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ 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'}
+
+ p-defer@1.0.0:
+ resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==}
+ engines: {node: '>=4'}
+
+ 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-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-map@4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+
+ p-memoize@4.0.4:
+ resolution: {integrity: sha512-ijdh0DP4Mk6J4FXlOM6vPPoCjPytcEseW8p/k5SDTSSfGV3E9bpt9Yzfifvzp6iohIieoLTkXRb32OWV0fB2Lw==}
+ engines: {node: '>=10'}
+
+ p-reflect@2.1.0:
+ resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==}
+ engines: {node: '>=8'}
+
+ p-settle@4.1.1:
+ resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==}
+ engines: {node: '>=10'}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ package-json@8.1.1:
+ resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
+ engines: {node: '>=14.16'}
+
+ pako@2.1.0:
+ resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-headers@2.0.6:
+ resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==}
+
+ parse-json@2.2.0:
+ resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
+ engines: {node: '>=0.10.0'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ patch-console@1.0.0:
+ resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==}
+ engines: {node: '>=10'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@2.1.0:
+ resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==}
+ engines: {node: '>=0.10.0'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ 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-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
+ path-type@1.1.0:
+ resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
+ engines: {node: '>=0.10.0'}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ pbkdf2@3.1.5:
+ resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==}
+ engines: {node: '>= 0.10'}
+
+ performance-now@2.1.0:
+ resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+
+ picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pinkie-promise@2.0.1:
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
+ engines: {node: '>=0.10.0'}
+
+ pinkie@2.0.4:
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
+ engines: {node: '>=0.10.0'}
+
+ pino-abstract-transport@1.2.0:
+ resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
+
+ pino-std-serializers@6.2.2:
+ resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
+
+ pino@8.21.0:
+ resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==}
+ hasBin: true
+
+ pirates@4.0.7:
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+ engines: {node: '>= 6'}
+
+ pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
+ poseidon-lite@0.2.1:
+ resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==}
+
+ possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-linter-helpers@1.0.1:
+ resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
+ engines: {node: '>=6.0.0'}
+
+ prettier-plugin-packagejson@2.5.22:
+ resolution: {integrity: sha512-G6WalmoUssKF8ZXkni0+n4324K+gG143KPysSQNW+FrR0XyNb3BdRxchGC/Q1FE/F702p7/6KU7r4mv0WSWbzA==}
+ peerDependencies:
+ prettier: '>= 1.16.0'
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
+ prettier-plugin-solidity@1.4.3:
+ resolution: {integrity: sha512-Mrr/iiR9f9IaeGRMZY2ApumXcn/C5Gs3S7B7hWB3gigBFML06C0yEyW86oLp0eqiA0qg+46FaChgLPJCj/pIlg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ prettier: '>=2.3.0'
+
+ prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ prettier@3.8.1:
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
+ engines: {node: '>=14'}
+ hasBin: 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}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process-warning@3.0.0:
+ resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.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==}
+
+ proto-list@1.2.4:
+ resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+
+ protobufjs@7.5.4:
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+ 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-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
+ prr@1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+
+ psl@1.15.0:
+ resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
+
+ punycode@1.4.1:
+ resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
+
+ 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==}
+ engines: {node: '>=6'}
+
+ pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+
+ pvtsutils@1.3.6:
+ resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}
+
+ pvutils@1.1.5:
+ resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==}
+ engines: {node: '>=16.0.0'}
+
+ qs@6.14.1:
+ resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
+ engines: {node: '>=0.6'}
+
+ 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'}
+
+ querystring-es3@0.2.1:
+ resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==}
+ engines: {node: '>=0.4.x'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ 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'}
+
+ 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.3:
+ resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
+ engines: {node: '>= 0.8'}
+
+ rc@1.2.8:
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ hasBin: true
+
+ react-devtools-core@4.28.5:
+ resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==}
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+
+ react-reconciler@0.26.2:
+ resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ react: ^17.0.2
+
+ react@17.0.2:
+ resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg-up@1.0.1:
+ resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg@1.1.0:
+ resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==}
+ engines: {node: '>=0.10.0'}
+
+ 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'}
+
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
+
+ real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
+
+ redeyed@2.1.1:
+ resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==}
+
+ reduce-flatten@2.0.0:
+ resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==}
+ engines: {node: '>=6'}
+
+ reflect.getprototypeof@1.0.10:
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+ engines: {node: '>= 0.4'}
+
+ regexp.prototype.flags@1.5.4:
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+ engines: {node: '>= 0.4'}
+
+ registry-auth-token@5.1.1:
+ resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==}
+ engines: {node: '>=14'}
+
+ registry-url@6.0.1:
+ resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
+ engines: {node: '>=12'}
+
+ 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'}
+
+ require-from-string@1.2.1:
+ resolution: {integrity: sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==}
+ 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@1.0.1:
+ resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==}
+
+ resolve-alpn@1.2.1:
+ resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+
+ resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+
+ 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.exports@2.0.3:
+ resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
+ engines: {node: '>=10'}
+
+ resolve@1.17.0:
+ resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==}
+
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
+ 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'}
+
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ 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.3:
+ resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==}
+ engines: {node: '>= 0.8'}
+
+ rlp@2.2.6:
+ resolution: {integrity: sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==}
+ hasBin: true
+
+ rlp@2.2.7:
+ resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==}
+ hasBin: true
+
+ rpc-websockets@9.3.3:
+ resolution: {integrity: sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rustbn.js@0.2.0:
+ resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==}
+
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
+ safe-array-concat@1.1.3:
+ resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+ 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-push-apply@1.0.0:
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
+
+ safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.20.2:
+ resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==}
+
+ scrypt-js@3.0.1:
+ resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==}
+
+ secp256k1@4.0.4:
+ resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==}
+ engines: {node: '>=18.0.0'}
+
+ secp256k1@5.0.1:
+ resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==}
+ engines: {node: '>=18.0.0'}
+
+ seedrandom@3.0.5:
+ resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
+
+ semaphore-async-await@1.5.1:
+ resolution: {integrity: sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==}
+ engines: {node: '>=4.1'}
+
+ 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.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.19.2:
+ resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
+ engines: {node: '>= 0.8.0'}
+
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
+ serve-static@1.16.3:
+ resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
+ engines: {node: '>= 0.8.0'}
+
+ 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-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'}
+
+ set-proto@1.0.0:
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ 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.12:
+ resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==}
+ engines: {node: '>= 0.10'}
+ hasBin: true
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.8.3:
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ 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==}
+
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ slice-ansi@3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+
+ 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==}
+
+ solc@0.4.26:
+ resolution: {integrity: sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==}
+ hasBin: true
+
+ solc@0.8.15:
+ resolution: {integrity: sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w==}
+ 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
+
+ solidity-bytes-utils@0.8.4:
+ resolution: {integrity: sha512-/bjac5YR12i0plOKvGlhE51F5IWGP6rI8DJetCQlXcnwKWz/Hgf/vr+Qlk1BWz56xVcwVhmhCaDkTMnx5xvt0g==}
+
+ sonic-boom@3.8.1:
+ resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
+
+ sort-object-keys@2.1.0:
+ resolution: {integrity: sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==}
+
+ sort-package-json@3.6.0:
+ resolution: {integrity: sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==}
+ engines: {node: '>=20'}
+ hasBin: true
+
+ source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ 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.22:
+ resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ 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
+
+ stable-hash@0.0.5:
+ resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
+
+ 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'}
+
+ stacktrace-parser@0.1.11:
+ resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==}
+ engines: {node: '>=6'}
+
+ starknet@8.9.2:
+ resolution: {integrity: sha512-+dp+o2w67fV6JyVOVkYeM1Ec71aORHc/JrF4VHLlfeGee0nLilooCQLE2u6hUcSGQG2x2/fvzkxYpIN+k1JBvA==}
+ engines: {node: '>=22'}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
+ stop-iteration-iterator@1.1.0:
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
+
+ stream-chain@2.2.5:
+ resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==}
+
+ stream-json@1.9.1:
+ resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==}
+
+ strict-uri-encode@1.1.0:
+ resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
+ engines: {node: '>=0.10.0'}
+
+ string-format@2.0.0:
+ resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==}
+
+ string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+
+ string-similarity@4.0.4:
+ resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+
+ string-width@1.0.2:
+ resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
+ engines: {node: '>=0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string.prototype.trim@1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
+
+ 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==}
+
+ strip-ansi@3.0.1:
+ resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+ engines: {node: '>=0.10.0'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-bom@2.0.0:
+ resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
+ engines: {node: '>=0.10.0'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-hex-prefix@1.0.0:
+ resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==}
+ engines: {node: '>=6.5.0', npm: '>=3'}
+
+ 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'}
+
+ superstruct@0.15.5:
+ resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==}
+
+ superstruct@2.0.2:
+ resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==}
+ 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'}
+
+ swarm-js@0.1.42:
+ resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==}
+
+ symbol.inspect@1.0.1:
+ resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==}
+
+ synckit@0.11.12:
+ resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ table-layout@1.0.2:
+ resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==}
+ engines: {node: '>=8.0.0'}
+
+ table@6.8.2:
+ resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
+ engines: {node: '>=10.0.0'}
+
+ table@6.9.0:
+ resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
+ engines: {node: '>=10.0.0'}
+
+ tar@4.4.19:
+ resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==}
+ engines: {node: '>=4.5'}
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
+
+ teslabot@1.5.0:
+ resolution: {integrity: sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==}
+
+ test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+
+ testrpc@0.0.1:
+ resolution: {integrity: sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==}
+ deprecated: testrpc has been renamed to ganache-cli, please use this package from now on.
+
+ text-encoding-utf-8@1.0.2:
+ resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==}
+
+ text-hex@1.0.0:
+ resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ thread-stream@2.7.0:
+ resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
+
+ timed-out@4.0.1:
+ resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==}
+ engines: {node: '>=0.10.0'}
+
+ timers-ext@0.1.8:
+ resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==}
+ engines: {node: '>=0.12'}
+
+ tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+
+ tinycolor2@1.6.0:
+ resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
+
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
+
+ tinygradient@0.4.3:
+ resolution: {integrity: sha512-tBPYQSs6eWukzzAITBSmqcOwZCKACvRa/XjPPh1mj4mnx4G3Drm51HxyCTU/TKnY8kG4hmTe5QlOh9O82aNtJQ==}
+
+ 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-buffer@1.2.2:
+ resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
+ engines: {node: '>= 0.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'}
+
+ toml@3.0.0:
+ resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+
+ tough-cookie@2.5.0:
+ resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
+ engines: {node: '>=0.8'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
+ triple-beam@1.4.1:
+ resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==}
+ engines: {node: '>= 14.0.0'}
+
+ tronweb@5.3.4:
+ resolution: {integrity: sha512-79HEnwSAqyCKrT7QB8dkxad0RqYx3dSulEg4dfBQQVwzhRr+AqdE1yz+nfTUpftu54RejqaHjqz40ZzWNy077w==}
+
+ ts-api-utils@1.4.3:
+ resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+
+ ts-command-line-args@2.5.1:
+ resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==}
+ hasBin: true
+
+ ts-essentials@7.0.3:
+ resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==}
+ peerDependencies:
+ typescript: '>=3.7.0'
+
+ ts-mixer@6.0.4:
+ resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==}
+
+ 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
+
+ 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.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tsort@0.0.1:
+ resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==}
+
+ 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'
+
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
+ 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'}
+
+ type-detect@4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
+ type-fest@0.12.0:
+ resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==}
+ engines: {node: '>=10'}
+
+ type-fest@0.20.2:
+ 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'}
+
+ 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==}
+
+ typechain@8.3.2:
+ resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=4.3.0'
+
+ typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.3:
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.7:
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+ engines: {node: '>= 0.4'}
+
+ typedarray-to-buffer@3.1.5:
+ resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
+
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ typical@4.0.0:
+ resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==}
+ engines: {node: '>=8'}
+
+ typical@5.2.0:
+ resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==}
+ engines: {node: '>=8'}
+
+ uint8array-tools@0.0.8:
+ resolution: {integrity: sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==}
+ engines: {node: '>=14.0.0'}
+
+ ultron@1.1.1:
+ resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==}
+
+ unbox-primitive@1.1.0:
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ undici@5.29.0:
+ resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
+ engines: {node: '>=14.0'}
+
+ universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ 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'}
+
+ unrs-resolver@1.11.1:
+ resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ url-set-query@1.0.0:
+ resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==}
+
+ url@0.11.4:
+ resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
+ engines: {node: '>= 0.4'}
+
+ utf-8-validate@5.0.10:
+ resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
+ engines: {node: '>=6.14.2'}
+
+ utf-8-validate@5.0.7:
+ resolution: {integrity: sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==}
+ 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@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
+
+ 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-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
+
+ valibot@0.37.0:
+ resolution: {integrity: sha512-FQz52I8RXgFgOHym3XHYSREbNtkgSjF9prvMFH1nBsRyfL6SfCzoT1GuSDTlbsuPubM7/6Kbw0ZMQb8A+V+VsQ==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ valibot@1.2.0:
+ resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ validator@13.15.26:
+ resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==}
+ engines: {node: '>= 0.10'}
+
+ varint@5.0.2:
+ resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==}
+
+ vary@1.1.2:
+ 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}
+
+ viem@2.45.0:
+ resolution: {integrity: sha512-iVA9qrAgRdtpWa80lCZ6Jri6XzmLOwwA1wagX2HnKejKeliFLpON0KOdyfqvcy+gUpBVP59LBxP2aKiL3aj8fg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ walker@1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+
+ 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'}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ websocket@1.0.35:
+ resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==}
+ engines: {node: '>=4.0.0'}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which-boxed-primitive@1.1.1:
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
+
+ which-builtin-type@1.2.1:
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+
+ which-module@1.0.0:
+ resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==}
+
+ which-typed-array@1.1.20:
+ resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
+ engines: {node: '>= 0.4'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ widest-line@3.1.0:
+ resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
+ engines: {node: '>=8'}
+
+ wif@5.0.0:
+ resolution: {integrity: sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA==}
+
+ window-size@0.2.0:
+ resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==}
+ engines: {node: '>= 0.10.0'}
+ hasBin: true
+
+ winston-transport@4.9.0:
+ resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
+ engines: {node: '>= 12.0.0'}
+
+ winston@3.19.0:
+ resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==}
+ engines: {node: '>= 12.0.0'}
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wordwrapjs@4.0.1:
+ resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==}
+ engines: {node: '>=8.0.0'}
+
+ workerpool@6.5.1:
+ resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
+
+ wrap-ansi@2.1.0:
+ resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==}
+ 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'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ write-file-atomic@4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ 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@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.18.0:
+ resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
+ 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.18.3:
+ resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
+ 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.19.0:
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+ 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
+
+ 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==}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ y18n@3.2.2:
+ resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==}
+
+ y18n@5.0.8:
+ 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'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yargs-parser@2.4.1:
+ resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==}
+
+ 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@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'}
+
+ yargs@4.8.1:
+ resolution: {integrity: sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==}
+
+ 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'}
+
+ yoga-layout-prebuilt@1.10.0:
+ resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==}
+ engines: {node: '>=8'}
+
+ zksync-ethers@5.11.1:
+ resolution: {integrity: sha512-Znl2p0gporGnHbAO0KKM1TIQpyRQKCi8nf1kOlZuTVCvlgBwhweWjTy53le96ZOoR3J5LUXAk7aYil2czSLJZw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ ethers: ^5.7.2
+
+ zksync-web3@0.14.4:
+ resolution: {integrity: sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==}
+ deprecated: This package has been deprecated in favor of zksync-ethers@5.0.0
+ peerDependencies:
+ ethers: ^5.7.2
+
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
+snapshots:
+
+ '@0no-co/graphql.web@1.2.0(graphql@16.12.0)':
+ optionalDependencies:
+ graphql: 16.12.0
+
+ '@0no-co/graphqlsp@1.15.2(graphql@16.12.0)(typescript@5.9.3)':
+ dependencies:
+ '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3)
+ graphql: 16.12.0
+ typescript: 5.9.3
+
+ '@adraffy/ens-normalize@1.11.1': {}
+
+ '@aptos-labs/aptos-client@2.1.0(got@12.6.1)':
+ dependencies:
+ got: 12.6.1
+
+ '@axelar-network/axelar-gmp-sdk-solidity@5.10.0': {}
+
+ '@babel/code-frame@7.28.6':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.28.6': {}
+
+ '@babel/core@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6)
+ '@babel/helpers': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3(supports-color@8.1.1)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.28.6':
+ dependencies:
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-compilation-targets@7.28.6':
+ dependencies:
+ '@babel/compat-data': 7.28.6
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-module-imports@7.28.6':
+ dependencies:
+ '@babel/traverse': 7.28.6
+ '@babel/types': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.28.6': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.28.6':
+ dependencies:
+ '@babel/template': 7.28.6
+ '@babel/types': 7.28.6
+
+ '@babel/parser@7.28.6':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/runtime@7.28.6': {}
+
+ '@babel/template@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+
+ '@babel/traverse@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.6
+ '@babel/template': 7.28.6
+ '@babel/types': 7.28.6
+ debug: 4.4.3(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.6':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
+ '@bcoe/v8-coverage@0.2.3': {}
+
+ '@bitcoinerlab/secp256k1@1.2.0':
+ dependencies:
+ '@noble/curves': 1.9.7
+
+ '@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)':
+ dependencies:
+ '@eth-optimism/contracts': 0.5.40(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)
+ '@openzeppelin/contracts': 4.3.3
+ '@openzeppelin/contracts-upgradeable-4.7.3': '@openzeppelin/contracts-upgradeable@4.7.3'
+ '@openzeppelin/contracts-v0.7': '@openzeppelin/contracts@3.4.2'
+ transitivePeerDependencies:
+ - bufferutil
+ - ethers
+ - utf-8-validate
+
+ '@colors/colors@1.5.0':
+ optional: true
+
+ '@colors/colors@1.6.0': {}
+
+ '@coral-xyz/anchor-errors@0.30.1': {}
+
+ '@coral-xyz/anchor-errors@0.31.1': {}
+
+ '@coral-xyz/anchor@0.26.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ base64-js: 1.5.1
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ buffer-layout: 1.2.2
+ camelcase: 6.3.0
+ cross-fetch: 3.2.0
+ crypto-hash: 1.3.0
+ eventemitter3: 4.0.7
+ js-sha256: 0.9.0
+ pako: 2.1.0
+ snake-case: 3.0.4
+ superstruct: 0.15.5
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@coral-xyz/anchor@0.29.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@noble/hashes': 1.8.0
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ buffer-layout: 1.2.2
+ camelcase: 6.3.0
+ cross-fetch: 3.2.0
+ crypto-hash: 1.3.0
+ eventemitter3: 4.0.7
+ pako: 2.1.0
+ snake-case: 3.0.4
+ superstruct: 0.15.5
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@coral-xyz/anchor@0.30.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor-errors': 0.30.1
+ '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@noble/hashes': 1.8.0
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ buffer-layout: 1.2.2
+ camelcase: 6.3.0
+ cross-fetch: 3.2.0
+ crypto-hash: 1.3.0
+ eventemitter3: 4.0.7
+ pako: 2.1.0
+ snake-case: 3.0.4
+ superstruct: 0.15.5
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@coral-xyz/anchor@0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor-errors': 0.31.1
+ '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@noble/hashes': 1.8.0
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ buffer-layout: 1.2.2
+ camelcase: 6.3.0
+ cross-fetch: 3.2.0
+ eventemitter3: 4.0.7
+ pako: 2.1.0
+ superstruct: 0.15.5
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ buffer-layout: 1.2.2
+
+ '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ buffer-layout: 1.2.2
+
+ '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ buffer-layout: 1.2.2
+
+ '@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ buffer-layout: 1.2.2
+
+ '@cspotcode/source-map-support@0.8.1':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ '@dabh/diagnostics@2.0.8':
+ dependencies:
+ '@so-ric/colorspace': 1.1.6
+ enabled: 2.0.0
+ kuler: 2.0.0
+
+ '@emnapi/core@1.8.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.1.0
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.8.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.1.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@ensdomains/ens@0.4.5':
+ dependencies:
+ bluebird: 3.7.2
+ eth-ens-namehash: 2.0.8
+ solc: 0.4.26
+ testrpc: 0.0.1
+ web3-utils: 1.10.4
+
+ '@ensdomains/resolver@0.2.4': {}
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)':
+ dependencies:
+ eslint: 8.57.1
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.2': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.3(supports-color@8.1.1)
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.1': {}
+
+ '@eth-optimism/contracts@0.5.40(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)':
+ dependencies:
+ '@eth-optimism/core-utils': 0.12.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)':
+ dependencies:
+ '@eth-optimism/core-utils': 0.12.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@eth-optimism/core-utils@0.12.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@ethersproject/rlp': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/web': 5.8.0
+ bufio: 1.2.3
+ chai: 4.5.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@ethereum-waffle/chai@4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@ethereum-waffle/provider': 4.0.5(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ debug: 4.4.3(supports-color@8.1.1)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ json-bigint: 1.0.0
+ transitivePeerDependencies:
+ - '@ensdomains/ens'
+ - '@ensdomains/resolver'
+ - supports-color
+
+ '@ethereum-waffle/compiler@4.0.3(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solc@0.8.15)(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3)':
+ dependencies:
+ '@resolver-engine/imports': 0.3.3
+ '@resolver-engine/imports-fs': 0.3.3
+ '@typechain/ethers-v5': 10.2.1(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3)
+ '@types/mkdirp': 0.5.2
+ '@types/node-fetch': 2.6.13
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ mkdirp: 0.5.6
+ node-fetch: 2.7.0
+ solc: 0.8.15
+ typechain: 8.3.2(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@ethersproject/abi'
+ - '@ethersproject/providers'
+ - encoding
+ - supports-color
+ - typescript
+
+ '@ethereum-waffle/ens@4.0.3(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@ensdomains/ens': 0.4.5
+ '@ensdomains/resolver': 0.2.4
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ '@ethereum-waffle/mock-contract@4.0.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))':
+ dependencies:
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ '@ethereum-waffle/provider@4.0.5(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@ethereum-waffle/ens': 4.0.3(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@ganache/ethereum-options': 0.1.4
+ debug: 4.4.3(supports-color@8.1.1)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ganache: 7.4.3
+ transitivePeerDependencies:
+ - '@ensdomains/ens'
+ - '@ensdomains/resolver'
+ - supports-color
+
+ '@ethereumjs/block@3.6.3':
+ dependencies:
+ '@ethereumjs/common': 2.6.5
+ '@ethereumjs/tx': 3.5.2
+ ethereumjs-util: 7.1.5
+ merkle-patricia-tree: 4.2.4
+
+ '@ethereumjs/blockchain@5.5.3':
+ dependencies:
+ '@ethereumjs/block': 3.6.3
+ '@ethereumjs/common': 2.6.5
+ '@ethereumjs/ethash': 1.1.0
+ debug: 4.4.3(supports-color@8.1.1)
+ ethereumjs-util: 7.1.5
+ level-mem: 5.0.1
+ lru-cache: 5.1.1
+ semaphore-async-await: 1.5.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ethereumjs/common@2.6.0':
+ dependencies:
+ crc-32: 1.2.2
+ ethereumjs-util: 7.1.5
+
+ '@ethereumjs/common@2.6.5':
+ dependencies:
+ crc-32: 1.2.2
+ ethereumjs-util: 7.1.5
+
+ '@ethereumjs/ethash@1.1.0':
+ dependencies:
+ '@ethereumjs/block': 3.6.3
+ '@types/levelup': 4.3.3
+ buffer-xor: 2.0.2
+ ethereumjs-util: 7.1.5
+ miller-rabin: 4.0.1
+
+ '@ethereumjs/rlp@4.0.1': {}
+
+ '@ethereumjs/rlp@5.0.2': {}
+
+ '@ethereumjs/tx@3.4.0':
+ dependencies:
+ '@ethereumjs/common': 2.6.0
+ ethereumjs-util: 7.1.5
+
+ '@ethereumjs/tx@3.5.2':
+ dependencies:
+ '@ethereumjs/common': 2.6.5
+ ethereumjs-util: 7.1.5
+
+ '@ethereumjs/util@8.1.0':
+ dependencies:
+ '@ethereumjs/rlp': 4.0.1
+ ethereum-cryptography: 2.2.1
+ micro-ftch: 0.3.1
+
+ '@ethereumjs/util@9.1.0':
+ dependencies:
+ '@ethereumjs/rlp': 5.0.2
+ ethereum-cryptography: 2.2.1
+
+ '@ethereumjs/vm@5.6.0':
+ dependencies:
+ '@ethereumjs/block': 3.6.3
+ '@ethereumjs/blockchain': 5.5.3
+ '@ethereumjs/common': 2.6.0
+ '@ethereumjs/tx': 3.4.0
+ async-eventemitter: 0.2.4
+ core-js-pure: 3.48.0
+ debug: 2.6.9
+ ethereumjs-util: 7.1.5
+ functional-red-black-tree: 1.0.1
+ mcl-wasm: 0.7.9
+ merkle-patricia-tree: 4.2.4
+ rustbn.js: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ethersproject/abi@5.8.0':
+ dependencies:
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/strings': 5.8.0
+
+ '@ethersproject/abstract-provider@5.8.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/networks': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/web': 5.8.0
+
+ '@ethersproject/abstract-signer@5.8.0':
+ dependencies:
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+
+ '@ethersproject/address@5.7.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/rlp': 5.8.0
+
+ '@ethersproject/address@5.8.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/rlp': 5.8.0
+
+ '@ethersproject/base64@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+
+ '@ethersproject/basex@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/properties': 5.8.0
+
+ '@ethersproject/bignumber@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ bn.js: 5.2.2
+
+ '@ethersproject/bytes@5.8.0':
+ dependencies:
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/constants@5.8.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+
+ '@ethersproject/contracts@5.8.0':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+
+ '@ethersproject/hash@5.8.0':
+ dependencies:
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/base64': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/strings': 5.8.0
+
+ '@ethersproject/hdnode@5.8.0':
+ dependencies:
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/basex': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/pbkdf2': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+ '@ethersproject/signing-key': 5.8.0
+ '@ethersproject/strings': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/wordlists': 5.8.0
+
+ '@ethersproject/json-wallets@5.8.0':
+ dependencies:
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/hdnode': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/pbkdf2': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/random': 5.8.0
+ '@ethersproject/strings': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ aes-js: 3.0.0
+ scrypt-js: 3.0.1
+
+ '@ethersproject/keccak256@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ js-sha3: 0.8.0
+
+ '@ethersproject/logger@5.8.0': {}
+
+ '@ethersproject/networks@5.8.0':
+ dependencies:
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/pbkdf2@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+
+ '@ethersproject/properties@5.8.0':
+ dependencies:
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/base64': 5.8.0
+ '@ethersproject/basex': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/networks': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/random': 5.8.0
+ '@ethersproject/rlp': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+ '@ethersproject/strings': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/web': 5.8.0
+ bech32: 1.1.4
+ ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@ethersproject/random@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/rlp@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/sha2@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ hash.js: 1.1.7
+
+ '@ethersproject/signing-key@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ bn.js: 5.2.2
+ elliptic: 6.6.1
+ hash.js: 1.1.7
+
+ '@ethersproject/solidity@5.8.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+ '@ethersproject/strings': 5.8.0
+
+ '@ethersproject/strings@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/transactions@5.8.0':
+ dependencies:
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/rlp': 5.8.0
+ '@ethersproject/signing-key': 5.8.0
+
+ '@ethersproject/units@5.8.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/wallet@5.8.0':
+ dependencies:
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/hdnode': 5.8.0
+ '@ethersproject/json-wallets': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/random': 5.8.0
+ '@ethersproject/signing-key': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/wordlists': 5.8.0
+
+ '@ethersproject/web@5.8.0':
+ dependencies:
+ '@ethersproject/base64': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/strings': 5.8.0
+
+ '@ethersproject/wordlists@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/strings': 5.8.0
+
+ '@fastify/busboy@2.1.1': {}
+
+ '@ganache/ethereum-address@0.1.4':
+ dependencies:
+ '@ganache/utils': 0.1.4
+
+ '@ganache/ethereum-options@0.1.4':
+ dependencies:
+ '@ganache/ethereum-address': 0.1.4
+ '@ganache/ethereum-utils': 0.1.4
+ '@ganache/options': 0.1.4
+ '@ganache/utils': 0.1.4
+ bip39: 3.0.4
+ seedrandom: 3.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ganache/ethereum-utils@0.1.4':
+ dependencies:
+ '@ethereumjs/common': 2.6.0
+ '@ethereumjs/tx': 3.4.0
+ '@ethereumjs/vm': 5.6.0
+ '@ganache/ethereum-address': 0.1.4
+ '@ganache/rlp': 0.1.4
+ '@ganache/utils': 0.1.4
+ emittery: 0.10.0
+ ethereumjs-abi: 0.6.8
+ ethereumjs-util: 7.1.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ganache/options@0.1.4':
+ dependencies:
+ '@ganache/utils': 0.1.4
+ bip39: 3.0.4
+ seedrandom: 3.0.5
+
+ '@ganache/rlp@0.1.4':
+ dependencies:
+ '@ganache/utils': 0.1.4
+ rlp: 2.2.6
+
+ '@ganache/utils@0.1.4':
+ dependencies:
+ emittery: 0.10.0
+ keccak: 3.0.1
+ seedrandom: 3.0.5
+ optionalDependencies:
+ '@trufflesuite/bigint-buffer': 1.1.9
+
+ '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.12.0)(typescript@5.9.3))(graphql@16.12.0)(typescript@5.9.3)':
+ dependencies:
+ '@0no-co/graphqlsp': 1.15.2(graphql@16.12.0)(typescript@5.9.3)
+ '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3)
+ graphql: 16.12.0
+ typescript: 5.9.3
+
+ '@gql.tada/internal@1.0.8(graphql@16.12.0)(typescript@5.9.3)':
+ dependencies:
+ '@0no-co/graphql.web': 1.2.0(graphql@16.12.0)
+ graphql: 16.12.0
+ typescript: 5.9.3
+
+ '@graphql-typed-document-node/core@3.2.0(graphql@16.12.0)':
+ dependencies:
+ graphql: 16.12.0
+
+ '@humanwhocodes/config-array@0.13.0':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.4.3(supports-color@8.1.1)
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@improbable-eng/grpc-web@0.15.0(google-protobuf@3.21.4)':
+ dependencies:
+ browser-headers: 0.4.1
+ google-protobuf: 3.21.4
+
+ '@initia/initia.js@1.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@bitcoinerlab/secp256k1': 1.2.0
+ '@initia/initia.proto': 0.2.6
+ '@initia/opinit.proto': 0.0.11
+ '@ledgerhq/hw-transport': 6.32.0
+ '@ledgerhq/hw-transport-webhid': 6.31.0
+ '@ledgerhq/hw-transport-webusb': 6.30.0
+ '@mysten/bcs': 1.9.2
+ axios: 1.13.3
+ bech32: 2.0.0
+ bignumber.js: 9.3.1
+ bip32: 5.0.0(typescript@5.9.3)
+ bip39: 3.1.0
+ jscrypto: 1.0.3
+ keccak256: 1.0.6
+ ripemd160: 2.0.3
+ secp256k1: 5.0.1
+ semver: 7.7.3
+ ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - typescript
+ - utf-8-validate
+
+ '@initia/initia.proto@0.2.6':
+ dependencies:
+ '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.4)
+ google-protobuf: 3.21.4
+ long: 5.3.2
+ protobufjs: 7.5.4
+
+ '@initia/opinit.proto@0.0.11':
+ dependencies:
+ '@improbable-eng/grpc-web': 0.15.0(google-protobuf@3.21.4)
+ google-protobuf: 3.21.4
+ long: 5.3.2
+ protobufjs: 7.5.4
+
+ '@iota/bcs@1.4.0':
+ dependencies:
+ bs58: 6.0.0
+
+ '@iota/iota-sdk@1.10.1(typescript@5.9.3)':
+ dependencies:
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0)
+ '@iota/bcs': 1.4.0
+ '@noble/curves': 1.9.7
+ '@noble/hashes': 1.8.0
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ '@suchipi/femver': 1.0.0
+ bech32: 2.0.0
+ bignumber.js: 9.3.1
+ gql.tada: 1.9.0(graphql@16.12.0)(typescript@5.9.3)
+ graphql: 16.12.0
+ tweetnacl: 1.0.3
+ valibot: 1.2.0(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - typescript
+
+ '@istanbuljs/load-nyc-config@1.1.0':
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.2
+ resolve-from: 5.0.0
+
+ '@istanbuljs/schema@0.1.3': {}
+
+ '@jest/console@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+
+ '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ '@jest/create-cache-key-function@30.2.0':
+ dependencies:
+ '@jest/types': 30.2.0
+
+ '@jest/environment@29.7.0':
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ jest-mock: 29.7.0
+
+ '@jest/expect-utils@29.7.0':
+ dependencies:
+ jest-get-type: 29.6.3
+
+ '@jest/expect@29.7.0':
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/fake-timers@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 18.18.14
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ '@jest/globals@29.7.0':
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/pattern@30.0.1':
+ dependencies:
+ '@types/node': 18.18.14
+ jest-regex-util: 30.0.1
+
+ '@jest/reporters@29.7.0':
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.3
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.2.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ '@jest/schemas@30.0.5':
+ dependencies:
+ '@sinclair/typebox': 0.34.48
+
+ '@jest/source-map@29.6.3':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+
+ '@jest/test-result@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.3
+
+ '@jest/test-sequencer@29.7.0':
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+
+ '@jest/transform@29.7.0':
+ dependencies:
+ '@babel/core': 7.28.6
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.31
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.8
+ pirates: 4.0.7
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/types@29.6.3':
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 18.18.14
+ '@types/yargs': 17.0.35
+ chalk: 4.1.2
+
+ '@jest/types@30.2.0':
+ dependencies:
+ '@jest/pattern': 30.0.1
+ '@jest/schemas': 30.0.5
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 18.18.14
+ '@types/yargs': 17.0.35
+ chalk: 4.1.2
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@jridgewell/trace-mapping@0.3.9':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@layerzerolabs/devtools-evm-hardhat@4.0.4(bd17817fbe618b486ab39186dfd61b3d)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm': 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/export-deployments': 0.0.16
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@safe-global/protocol-kit': 1.3.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)
+ fp-ts: 2.16.11
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ micro-memoize: 4.1.3
+ p-memoize: 4.0.4
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - ethers
+ - supports-color
+ - utf-8-validate
+
+ '@layerzerolabs/devtools-evm@3.0.2(ba1b8dd3c831373795921a05962d4f39)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.7.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@safe-global/api-kit': 4.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
+ '@safe-global/protocol-kit': 1.3.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ fp-ts: 2.16.11
+ p-memoize: 4.0.4
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/devtools-solana@3.0.6(7bcaf507b8ccf147de34f5c81d15d234)':
+ dependencies:
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@solana-developers/helpers': 2.8.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ fp-ts: 2.16.11
+ p-memoize: 4.0.4
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ bs58: 6.0.0
+ exponential-backoff: 3.1.3
+ js-yaml: 4.1.1
+ zod: 3.25.76
+
+ '@layerzerolabs/eslint-config-next@2.3.44(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ eslint: 8.57.1
+ eslint-config-prettier: 9.1.2(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+ eslint-plugin-autofix: 2.2.0(eslint@8.57.1)
+ eslint-plugin-compat: 4.2.0(eslint@8.57.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-prettier: 5.5.5(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.1)
+ eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)
+ prettier: 3.8.1
+ transitivePeerDependencies:
+ - '@types/eslint'
+ - eslint-import-resolver-webpack
+ - eslint-plugin-import-x
+ - supports-color
+ - typescript
+
+ '@layerzerolabs/evm-sdks-core@3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)':
+ dependencies:
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@layerzerolabs/export-deployments@0.0.16':
+ dependencies:
+ typescript: 5.9.3
+
+ '@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)':
+ dependencies:
+ chalk: 4.1.2
+ logform: 2.7.0
+ prompts: 2.4.2
+ table: 6.8.2
+ winston: 3.19.0
+ zod: 3.25.76
+ optionalDependencies:
+ ink: 3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10)
+ ink-gradient: 2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)
+ ink-table: 3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)
+ react: 17.0.2
+ yoga-layout-prebuilt: 1.10.0
+
+ '@layerzerolabs/lz-core@3.0.156': {}
+
+ '@layerzerolabs/lz-corekit-solana@3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@layerzerolabs/lz-core': 3.0.156
+ '@layerzerolabs/lz-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@noble/hashes': 1.8.0
+ '@noble/secp256k1': 1.7.2
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bip39: 3.1.0
+ ed25519-hd-key: 1.3.0
+ memoizee: 0.4.17
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - got
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/lz-definitions@3.0.156':
+ dependencies:
+ tiny-invariant: 1.3.3
+
+ '@layerzerolabs/lz-evm-messagelib-v2@3.0.156(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4))(@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)':
+ dependencies:
+ '@axelar-network/axelar-gmp-sdk-solidity': 5.10.0
+ '@chainlink/contracts-ccip': 0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)
+ '@eth-optimism/contracts': 0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-evm-protocol-v2': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-v1-0.7': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ solidity-bytes-utils: 0.8.4
+
+ '@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)':
+ dependencies:
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ solidity-bytes-utils: 0.8.4
+
+ '@layerzerolabs/lz-evm-sdk-v1@3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/evm-sdks-core': 3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@layerzerolabs/lz-evm-sdk-v2@3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@layerzerolabs/evm-sdks-core': 3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ '@layerzerolabs/lz-foundation@3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@noble/ed25519': 1.7.5
+ '@noble/hashes': 1.8.0
+ '@noble/secp256k1': 1.7.2
+ '@scure/base': 1.2.6
+ bech32: 2.0.0
+ memoizee: 0.4.17
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - got
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/lz-serdes@3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor': 0.29.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-core': 3.0.156
+ '@layerzerolabs/lz-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/tron-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ aptos: 1.22.1(got@12.6.1)
+ bip39: 3.1.0
+ ed25519-hd-key: 1.3.0
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ memoizee: 0.4.17
+ tronweb: 5.3.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - got
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/lz-solana-sdk-v2@3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@layerzerolabs/lz-corekit-solana': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-foundation': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-serdes': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@metaplex-foundation/beet': 0.7.2
+ '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 5.0.0
+ tiny-invariant: 1.3.3
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - got
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/lz-sui-oft-sdk-v2@3.0.156(typescript@5.9.3)':
+ dependencies:
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-sui-sdk-v2': 3.0.156(typescript@5.9.3)
+ '@mysten/sui': 1.45.2(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - typescript
+
+ '@layerzerolabs/lz-sui-sdk-v2@3.0.156(typescript@5.9.3)':
+ dependencies:
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@mysten/sui': 1.45.2(typescript@5.9.3)
+ js-sha3: 0.8.0
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - typescript
+
+ '@layerzerolabs/lz-utilities@3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@initia/initia.js': 1.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@iota/iota-sdk': 1.10.1(typescript@5.9.3)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@mysten/sui': 1.45.2(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@ton/core': 0.59.1(@ton/crypto@3.3.0)
+ '@ton/crypto': 3.3.0
+ '@ton/ton': 15.1.0(@ton/core@0.59.1(@ton/crypto@3.3.0))(@ton/crypto@3.3.0)
+ aptos: 1.22.1(got@12.6.1)
+ bip39: 3.1.0
+ dayjs: 1.11.19
+ ed25519-hd-key: 1.3.0
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ memoizee: 0.4.17
+ picocolors: 1.0.0
+ pino: 8.21.0
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - got
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/lz-v2-utilities@3.0.156':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/solidity': 5.8.0
+ bs58: 5.0.0
+ tiny-invariant: 1.3.3
+
+ '@layerzerolabs/metadata-tools@3.0.3(@layerzerolabs/devtools-evm-hardhat@4.0.4(bd17817fbe618b486ab39186dfd61b3d))(@layerzerolabs/ua-devtools@5.0.2(2fd617c273bebe4d9e9cb36131e29510))':
+ dependencies:
+ '@layerzerolabs/devtools-evm-hardhat': 4.0.4(bd17817fbe618b486ab39186dfd61b3d)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+
+ '@layerzerolabs/oapp-evm@0.4.1(c1ec61c2fa4e9839f312831737d13b53)':
+ dependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': 3.0.156(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4))(@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-protocol-v2': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-v1-0.7': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@layerzerolabs/oft-evm@4.0.1(3c0dd36ef62aad2617a6f8e84fa2fc5d)':
+ dependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': 3.0.156(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4))(@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-protocol-v2': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-v1-0.7': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@layerzerolabs/oapp-evm': 0.4.1(c1ec61c2fa4e9839f312831737d13b53)
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+
+ '@layerzerolabs/oft-mint-burn-starknet@0.2.20(@layerzerolabs/protocol-starknet-v2@0.2.20)':
+ dependencies:
+ '@layerzerolabs/protocol-starknet-v2': 0.2.20
+
+ '@layerzerolabs/oft-v2-solana-sdk@3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@layerzerolabs/lz-foundation': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-solana-sdk-v2': 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@metaplex-foundation/beet': 0.7.2
+ '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ dotenv: 16.6.1
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - got
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/prettier-config-next@2.3.44':
+ dependencies:
+ prettier: 3.8.1
+ prettier-plugin-packagejson: 2.5.22(prettier@3.8.1)
+ prettier-plugin-solidity: 1.4.3(prettier@3.8.1)
+
+ '@layerzerolabs/protocol-devtools-evm@5.0.2(33cc7f0bc733869899c8e881bf943c1c)':
+ dependencies:
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm': 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ p-memoize: 4.0.4
+ zod: 3.25.76
+
+ '@layerzerolabs/protocol-devtools-solana@8.0.6(9a31ec2be9bb6e9e04112b31f8500670)':
+ dependencies:
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-solana': 3.0.6(7bcaf507b8ccf147de34f5c81d15d234)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-solana-sdk-v2': 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ fp-ts: 2.16.11
+ zod: 3.25.76
+
+ '@layerzerolabs/protocol-devtools@3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)':
+ dependencies:
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ zod: 3.25.76
+
+ '@layerzerolabs/protocol-starknet-v2@0.2.20': {}
+
+ '@layerzerolabs/solhint-config@3.0.156(typescript@5.9.3)':
+ dependencies:
+ solhint: 4.5.4(typescript@5.9.3)
+ transitivePeerDependencies:
+ - typescript
+
+ '@layerzerolabs/test-devtools-evm-foundry@8.0.1(128b5fb4e94e2e1bbbe3bdce7ddbf0b9)':
+ dependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': 3.0.156(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@layerzerolabs/lz-evm-protocol-v2@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4))(@layerzerolabs/lz-evm-v1-0.7@3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-protocol-v2': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/lz-evm-v1-0.7': 3.0.156(@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0))(@openzeppelin/contracts@5.4.0)(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@layerzerolabs/oapp-evm': 0.4.1(c1ec61c2fa4e9839f312831737d13b53)
+ '@layerzerolabs/oft-evm': 4.0.1(3c0dd36ef62aad2617a6f8e84fa2fc5d)
+ '@openzeppelin/contracts': 5.4.0
+ '@openzeppelin/contracts-upgradeable': 5.4.0(@openzeppelin/contracts@5.4.0)
+
+ '@layerzerolabs/test-devtools-evm-hardhat@0.5.3(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)':
+ dependencies:
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ solidity-bytes-utils: 0.8.4
+
+ '@layerzerolabs/toolbox-foundry@0.1.13': {}
+
+ '@layerzerolabs/toolbox-hardhat@0.6.13(e174733816a20ea8b7a0ccb42b2ef14b)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/address': 5.7.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm': 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/devtools-evm-hardhat': 4.0.4(bd17817fbe618b486ab39186dfd61b3d)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-evm-sdk-v1': 3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-evm-sdk-v2': 3.0.156(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/protocol-devtools-evm': 5.0.2(33cc7f0bc733869899c8e881bf943c1c)
+ '@layerzerolabs/test-devtools-evm-hardhat': 0.5.3(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))(solidity-bytes-utils@0.8.4)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ '@layerzerolabs/ua-devtools-evm': 7.0.1(92ebb0c070cf4b1b3ffeb57cc8992705)
+ '@layerzerolabs/ua-devtools-evm-hardhat': 9.0.2(72d215c29c4022f28081b04b7c4ee7d4)
+ '@nomicfoundation/hardhat-ethers': 3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ fp-ts: 2.16.11
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ink: 3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10)
+ ink-gradient: 2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)
+ ink-table: 3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)
+ react: 17.0.2
+ yoga-layout-prebuilt: 1.10.0
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - '@ethersproject/abstract-provider'
+ - '@ethersproject/abstract-signer'
+ - '@ethersproject/bignumber'
+ - '@ethersproject/constants'
+ - '@ethersproject/providers'
+ - '@nomiclabs/hardhat-ethers'
+ - '@types/react'
+ - bufferutil
+ - encoding
+ - solidity-bytes-utils
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/tron-utilities@3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@layerzerolabs/lz-utilities': 3.0.156(bufferutil@4.1.0)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ tronweb: 5.3.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - bufferutil
+ - debug
+ - encoding
+ - got
+ - typescript
+ - utf-8-validate
+
+ '@layerzerolabs/ua-devtools-evm-hardhat@9.0.2(72d215c29c4022f28081b04b7c4ee7d4)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm': 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/devtools-evm-hardhat': 4.0.4(bd17817fbe618b486ab39186dfd61b3d)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/protocol-devtools-evm': 5.0.2(33cc7f0bc733869899c8e881bf943c1c)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ '@layerzerolabs/ua-devtools-evm': 7.0.1(92ebb0c070cf4b1b3ffeb57cc8992705)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ p-memoize: 4.0.4
+ typescript: 5.9.3
+
+ '@layerzerolabs/ua-devtools-evm@7.0.1(92ebb0c070cf4b1b3ffeb57cc8992705)':
+ dependencies:
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-evm': 3.0.2(ba1b8dd3c831373795921a05962d4f39)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/protocol-devtools-evm': 5.0.2(33cc7f0bc733869899c8e881bf943c1c)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ p-memoize: 4.0.4
+ zod: 3.25.76
+
+ '@layerzerolabs/ua-devtools-solana@8.0.7(46edc29d709e8246275b097e2042fcad)':
+ dependencies:
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/devtools-solana': 3.0.6(7bcaf507b8ccf147de34f5c81d15d234)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-solana-sdk-v2': 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@layerzerolabs/oft-v2-solana-sdk': 3.0.156(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(got@12.6.1)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/protocol-devtools-solana': 8.0.6(9a31ec2be9bb6e9e04112b31f8500670)
+ '@layerzerolabs/ua-devtools': 5.0.2(2fd617c273bebe4d9e9cb36131e29510)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ fp-ts: 2.16.11
+ p-memoize: 4.0.4
+ zod: 3.25.76
+
+ '@layerzerolabs/ua-devtools@5.0.2(2fd617c273bebe4d9e9cb36131e29510)':
+ dependencies:
+ '@layerzerolabs/devtools': 2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ '@layerzerolabs/io-devtools': 0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
+ '@layerzerolabs/lz-definitions': 3.0.156
+ '@layerzerolabs/lz-v2-utilities': 3.0.156
+ '@layerzerolabs/protocol-devtools': 3.0.2(@layerzerolabs/devtools@2.0.5(@ethersproject/bytes@5.8.0)(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76))(@layerzerolabs/io-devtools@0.3.2(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76))(@layerzerolabs/lz-definitions@3.0.156)(zod@3.25.76)
+ zod: 3.25.76
+
+ '@ledgerhq/devices@8.10.0':
+ dependencies:
+ '@ledgerhq/errors': 6.29.0
+ '@ledgerhq/logs': 6.14.0
+ rxjs: 7.8.2
+ semver: 7.7.3
+
+ '@ledgerhq/errors@6.29.0': {}
+
+ '@ledgerhq/hw-transport-webhid@6.31.0':
+ dependencies:
+ '@ledgerhq/devices': 8.10.0
+ '@ledgerhq/errors': 6.29.0
+ '@ledgerhq/hw-transport': 6.32.0
+ '@ledgerhq/logs': 6.14.0
+
+ '@ledgerhq/hw-transport-webusb@6.30.0':
+ dependencies:
+ '@ledgerhq/devices': 8.10.0
+ '@ledgerhq/errors': 6.29.0
+ '@ledgerhq/hw-transport': 6.32.0
+ '@ledgerhq/logs': 6.14.0
+
+ '@ledgerhq/hw-transport@6.32.0':
+ dependencies:
+ '@ledgerhq/devices': 8.10.0
+ '@ledgerhq/errors': 6.29.0
+ '@ledgerhq/logs': 6.14.0
+ events: 3.3.0
+
+ '@ledgerhq/logs@6.14.0': {}
+
+ '@mdn/browser-compat-data@5.7.6': {}
+
+ '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@metaplex-foundation/beet': 0.7.2
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bs58: 5.0.0
+ debug: 4.4.3(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@metaplex-foundation/beet@0.7.2':
+ dependencies:
+ ansicolors: 0.3.2
+ assert: 2.1.0
+ bn.js: 5.2.2
+ debug: 4.4.3(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@metaplex-foundation/mpl-token-metadata@3.4.0(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/mpl-toolbox': 0.10.0(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/mpl-toolbox@0.10.0(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2)
+ '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - encoding
+
+ '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@noble/curves': 1.9.7
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+
+ '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+
+ '@metaplex-foundation/umi-options@0.8.9': {}
+
+ '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/umi-public-keys@0.8.9':
+ dependencies:
+ '@metaplex-foundation/umi-serializers-encodings': 0.8.9
+
+ '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+
+ '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+
+ '@metaplex-foundation/umi-serializers-core@0.8.9': {}
+
+ '@metaplex-foundation/umi-serializers-encodings@0.8.9':
+ dependencies:
+ '@metaplex-foundation/umi-serializers-core': 0.8.9
+
+ '@metaplex-foundation/umi-serializers-numbers@0.8.9':
+ dependencies:
+ '@metaplex-foundation/umi-serializers-core': 0.8.9
+
+ '@metaplex-foundation/umi-serializers@0.9.0':
+ dependencies:
+ '@metaplex-foundation/umi-options': 0.8.9
+ '@metaplex-foundation/umi-public-keys': 0.8.9
+ '@metaplex-foundation/umi-serializers-core': 0.8.9
+ '@metaplex-foundation/umi-serializers-encodings': 0.8.9
+ '@metaplex-foundation/umi-serializers-numbers': 0.8.9
+
+ '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+
+ '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@metaplex-foundation/umi': 0.9.2
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ buffer: 6.0.3
+
+ '@metaplex-foundation/umi@0.9.2':
+ dependencies:
+ '@metaplex-foundation/umi-options': 0.8.9
+ '@metaplex-foundation/umi-public-keys': 0.8.9
+ '@metaplex-foundation/umi-serializers': 0.9.0
+
+ '@mysten/bcs@1.9.2':
+ dependencies:
+ '@mysten/utils': 0.2.0
+ '@scure/base': 1.2.6
+
+ '@mysten/sui@1.45.2(typescript@5.9.3)':
+ dependencies:
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0)
+ '@mysten/bcs': 1.9.2
+ '@mysten/utils': 0.2.0
+ '@noble/curves': 1.9.4
+ '@noble/hashes': 1.8.0
+ '@protobuf-ts/grpcweb-transport': 2.11.1
+ '@protobuf-ts/runtime': 2.11.1
+ '@protobuf-ts/runtime-rpc': 2.11.1
+ '@scure/base': 1.2.6
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ gql.tada: 1.9.0(graphql@16.12.0)(typescript@5.9.3)
+ graphql: 16.12.0
+ poseidon-lite: 0.2.1
+ valibot: 1.2.0(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - typescript
+
+ '@mysten/utils@0.2.0':
+ dependencies:
+ '@scure/base': 1.2.6
+
+ '@napi-rs/wasm-runtime@0.2.12':
+ dependencies:
+ '@emnapi/core': 1.8.1
+ '@emnapi/runtime': 1.8.1
+ '@tybys/wasm-util': 0.10.1
+ optional: true
+
+ '@noble/ciphers@1.3.0': {}
+
+ '@noble/curves@1.4.2':
+ dependencies:
+ '@noble/hashes': 1.4.0
+
+ '@noble/curves@1.7.0':
+ dependencies:
+ '@noble/hashes': 1.6.0
+
+ '@noble/curves@1.8.2':
+ dependencies:
+ '@noble/hashes': 1.7.2
+
+ '@noble/curves@1.9.1':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/curves@1.9.4':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/curves@1.9.7':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/ed25519@1.7.5': {}
+
+ '@noble/hashes@1.2.0': {}
+
+ '@noble/hashes@1.3.3': {}
+
+ '@noble/hashes@1.4.0': {}
+
+ '@noble/hashes@1.6.0': {}
+
+ '@noble/hashes@1.6.1': {}
+
+ '@noble/hashes@1.7.2': {}
+
+ '@noble/hashes@1.8.0': {}
+
+ '@noble/secp256k1@1.7.1': {}
+
+ '@noble/secp256k1@1.7.2': {}
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
+ '@nolyfill/is-core-module@1.0.39': {}
+
+ '@nomicfoundation/edr-darwin-arm64@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-darwin-x64@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.22': {}
+
+ '@nomicfoundation/edr@0.12.0-next.22':
+ dependencies:
+ '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.22
+ '@nomicfoundation/edr-darwin-x64': 0.12.0-next.22
+ '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.22
+ '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.22
+ '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.22
+ '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.22
+ '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.22
+
+ '@nomicfoundation/hardhat-ethers@3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ lodash.isequal: 4.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@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
+
+ '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+
+ '@nomiclabs/hardhat-waffle@2.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)))(@types/sinon-chai@3.2.12)(ethereum-waffle@4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ '@types/sinon-chai': 3.2.12
+ ethereum-waffle: 4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typescript@5.9.3)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+
+ '@openzeppelin/contracts-upgradeable@4.7.3': {}
+
+ '@openzeppelin/contracts-upgradeable@5.4.0(@openzeppelin/contracts@5.4.0)':
+ dependencies:
+ '@openzeppelin/contracts': 5.4.0
+
+ '@openzeppelin/contracts@3.4.2': {}
+
+ '@openzeppelin/contracts@4.3.3': {}
+
+ '@openzeppelin/contracts@5.4.0': {}
+
+ '@peculiar/asn1-schema@2.6.0':
+ dependencies:
+ asn1js: 3.0.7
+ pvtsutils: 1.3.6
+ tslib: 2.8.1
+ optional: true
+
+ '@pkgr/core@0.2.9': {}
+
+ '@pnpm/config.env-replace@1.1.0': {}
+
+ '@pnpm/network.ca-file@1.0.2':
+ dependencies:
+ graceful-fs: 4.2.10
+
+ '@pnpm/npm-conf@3.0.2':
+ dependencies:
+ '@pnpm/config.env-replace': 1.1.0
+ '@pnpm/network.ca-file': 1.0.2
+ config-chain: 1.1.13
+
+ '@protobuf-ts/grpcweb-transport@2.11.1':
+ dependencies:
+ '@protobuf-ts/runtime': 2.11.1
+ '@protobuf-ts/runtime-rpc': 2.11.1
+
+ '@protobuf-ts/runtime-rpc@2.11.1':
+ dependencies:
+ '@protobuf-ts/runtime': 2.11.1
+
+ '@protobuf-ts/runtime@2.11.1': {}
+
+ '@protobufjs/aspromise@1.1.2': {}
+
+ '@protobufjs/base64@1.1.2': {}
+
+ '@protobufjs/codegen@2.0.4': {}
+
+ '@protobufjs/eventemitter@1.1.0': {}
+
+ '@protobufjs/fetch@1.1.0':
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/inquire': 1.1.0
+
+ '@protobufjs/float@1.0.2': {}
+
+ '@protobufjs/inquire@1.1.0': {}
+
+ '@protobufjs/path@1.1.2': {}
+
+ '@protobufjs/pool@1.1.0': {}
+
+ '@protobufjs/utf8@1.1.0': {}
+
+ '@resolver-engine/core@0.3.3':
+ dependencies:
+ debug: 3.2.7
+ is-url: 1.2.4
+ request: 2.88.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@resolver-engine/fs@0.3.3':
+ dependencies:
+ '@resolver-engine/core': 0.3.3
+ debug: 3.2.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@resolver-engine/imports-fs@0.3.3':
+ dependencies:
+ '@resolver-engine/fs': 0.3.3
+ '@resolver-engine/imports': 0.3.3
+ debug: 3.2.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@resolver-engine/imports@0.3.3':
+ dependencies:
+ '@resolver-engine/core': 0.3.3
+ debug: 3.2.7
+ hosted-git-info: 2.8.9
+ path-browserify: 1.0.1
+ url: 0.11.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@rtsao/scc@1.1.0': {}
+
+ '@rushstack/eslint-patch@1.15.0': {}
+
+ '@safe-global/api-kit@4.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)':
+ dependencies:
+ '@safe-global/protocol-kit': 6.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
+ '@safe-global/types-kit': 3.0.0(typescript@5.9.3)(zod@3.25.76)
+ node-fetch: 2.7.0
+ viem: 2.45.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+ - zod
+
+ '@safe-global/protocol-kit@1.3.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)':
+ dependencies:
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/solidity': 5.8.0
+ '@safe-global/safe-deployments': 1.37.50
+ ethereumjs-util: 7.1.5
+ semver: 7.7.3
+ web3: 1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ web3-core: 1.10.4
+ web3-utils: 1.10.4
+ zksync-web3: 0.14.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - ethers
+ - supports-color
+ - utf-8-validate
+
+ '@safe-global/protocol-kit@6.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)':
+ dependencies:
+ '@safe-global/safe-deployments': 1.37.50
+ '@safe-global/safe-modules-deployments': 2.2.22
+ '@safe-global/types-kit': 3.0.0(typescript@5.9.3)(zod@3.25.76)
+ abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76)
+ semver: 7.7.3
+ viem: 2.45.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
+ optionalDependencies:
+ '@noble/curves': 1.9.7
+ '@peculiar/asn1-schema': 2.6.0
+ transitivePeerDependencies:
+ - bufferutil
+ - typescript
+ - utf-8-validate
+ - zod
+
+ '@safe-global/safe-core-sdk-types@2.3.0':
+ dependencies:
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@safe-global/safe-deployments': 1.37.50
+ web3-core: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@safe-global/safe-deployments@1.37.50':
+ dependencies:
+ semver: 7.7.3
+
+ '@safe-global/safe-modules-deployments@2.2.22': {}
+
+ '@safe-global/types-kit@3.0.0(typescript@5.9.3)(zod@3.25.76)':
+ dependencies:
+ abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76)
+ transitivePeerDependencies:
+ - typescript
+ - zod
+
+ '@scure/base@1.1.9': {}
+
+ '@scure/base@1.2.6': {}
+
+ '@scure/bip32@1.1.5':
+ dependencies:
+ '@noble/hashes': 1.2.0
+ '@noble/secp256k1': 1.7.1
+ '@scure/base': 1.1.9
+
+ '@scure/bip32@1.4.0':
+ dependencies:
+ '@noble/curves': 1.4.2
+ '@noble/hashes': 1.4.0
+ '@scure/base': 1.1.9
+
+ '@scure/bip32@1.7.0':
+ dependencies:
+ '@noble/curves': 1.9.4
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+
+ '@scure/bip39@1.1.1':
+ dependencies:
+ '@noble/hashes': 1.2.0
+ '@scure/base': 1.1.9
+
+ '@scure/bip39@1.2.1':
+ dependencies:
+ '@noble/hashes': 1.3.3
+ '@scure/base': 1.1.9
+
+ '@scure/bip39@1.3.0':
+ dependencies:
+ '@noble/hashes': 1.4.0
+ '@scure/base': 1.1.9
+
+ '@scure/bip39@1.6.0':
+ dependencies:
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+
+ '@scure/starknet@1.1.0':
+ dependencies:
+ '@noble/curves': 1.7.0
+ '@noble/hashes': 1.6.1
+
+ '@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
+
+ '@sinclair/typebox@0.27.8': {}
+
+ '@sinclair/typebox@0.34.48': {}
+
+ '@sindresorhus/is@4.6.0': {}
+
+ '@sindresorhus/is@5.6.0': {}
+
+ '@sinonjs/commons@3.0.1':
+ dependencies:
+ type-detect: 4.0.8
+
+ '@sinonjs/fake-timers@10.3.0':
+ dependencies:
+ '@sinonjs/commons': 3.0.1
+
+ '@so-ric/colorspace@1.1.6':
+ dependencies:
+ color: 5.0.3
+ text-hex: 1.0.0
+
+ '@solana-developers/helpers@2.8.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor': 0.30.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token': 0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 6.0.0
+ dotenv: 16.6.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@solana-developers/helpers@2.8.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor': 0.30.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token': 0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 6.0.0
+ dotenv: 16.6.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@solana/buffer-layout-utils@0.2.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bigint-buffer: 1.1.5
+ bignumber.js: 9.3.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@solana/buffer-layout@4.0.1':
+ dependencies:
+ buffer: 6.0.3
+
+ '@solana/codecs-core@2.0.0-rc.1(typescript@5.9.3)':
+ dependencies:
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@solana/codecs-core@2.3.0(typescript@5.9.3)':
+ dependencies:
+ '@solana/errors': 2.3.0(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@solana/codecs-numbers@2.3.0(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.3.0(typescript@5.9.3)
+ '@solana/errors': 2.3.0(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.3)
+ fastestsmallesttextencoderdecoder: 1.0.22
+ typescript: 5.9.3
+
+ '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/errors@2.0.0-rc.1(typescript@5.9.3)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 12.1.0
+ typescript: 5.9.3
+
+ '@solana/errors@2.3.0(typescript@5.9.3)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 14.0.2
+ typescript: 5.9.3
+
+ '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token@0.3.11(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ buffer: 6.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@solana/spl-token@0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ buffer: 6.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@babel/runtime': 7.28.6
+ '@noble/curves': 1.9.7
+ '@noble/hashes': 1.8.0
+ '@solana/buffer-layout': 4.0.1
+ '@solana/codecs-numbers': 2.3.0(typescript@5.9.3)
+ agentkeepalive: 4.6.0
+ bn.js: 5.2.2
+ borsh: 0.7.0
+ bs58: 4.0.1
+ buffer: 6.0.3
+ fast-stable-stringify: 1.0.0
+ jayson: 4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ node-fetch: 2.7.0
+ rpc-websockets: 9.3.3
+ superstruct: 2.0.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@solidity-parser/parser@0.18.0': {}
+
+ '@solidity-parser/parser@0.20.2': {}
+
+ '@sqds/sdk@2.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor': 0.26.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@starknet-io/types-js@0.8.4': {}
+
+ '@starknet-io/types-js@0.9.2': {}
+
+ '@suchipi/femver@1.0.0': {}
+
+ '@swc/core-darwin-arm64@1.15.10':
+ optional: true
+
+ '@swc/core-darwin-x64@1.15.10':
+ optional: true
+
+ '@swc/core-linux-arm-gnueabihf@1.15.10':
+ optional: true
+
+ '@swc/core-linux-arm64-gnu@1.15.10':
+ optional: true
+
+ '@swc/core-linux-arm64-musl@1.15.10':
+ optional: true
+
+ '@swc/core-linux-x64-gnu@1.15.10':
+ optional: true
+
+ '@swc/core-linux-x64-musl@1.15.10':
+ optional: true
+
+ '@swc/core-win32-arm64-msvc@1.15.10':
+ optional: true
+
+ '@swc/core-win32-ia32-msvc@1.15.10':
+ optional: true
+
+ '@swc/core-win32-x64-msvc@1.15.10':
+ optional: true
+
+ '@swc/core@1.15.10(@swc/helpers@0.5.18)':
+ dependencies:
+ '@swc/counter': 0.1.3
+ '@swc/types': 0.1.25
+ optionalDependencies:
+ '@swc/core-darwin-arm64': 1.15.10
+ '@swc/core-darwin-x64': 1.15.10
+ '@swc/core-linux-arm-gnueabihf': 1.15.10
+ '@swc/core-linux-arm64-gnu': 1.15.10
+ '@swc/core-linux-arm64-musl': 1.15.10
+ '@swc/core-linux-x64-gnu': 1.15.10
+ '@swc/core-linux-x64-musl': 1.15.10
+ '@swc/core-win32-arm64-msvc': 1.15.10
+ '@swc/core-win32-ia32-msvc': 1.15.10
+ '@swc/core-win32-x64-msvc': 1.15.10
+ '@swc/helpers': 0.5.18
+
+ '@swc/counter@0.1.3': {}
+
+ '@swc/helpers@0.5.18':
+ dependencies:
+ tslib: 2.8.1
+
+ '@swc/jest@0.2.39(@swc/core@1.15.10(@swc/helpers@0.5.18))':
+ dependencies:
+ '@jest/create-cache-key-function': 30.2.0
+ '@swc/core': 1.15.10(@swc/helpers@0.5.18)
+ '@swc/counter': 0.1.3
+ jsonc-parser: 3.3.1
+
+ '@swc/types@0.1.25':
+ dependencies:
+ '@swc/counter': 0.1.3
+
+ '@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
+
+ '@ton/core@0.59.1(@ton/crypto@3.3.0)':
+ dependencies:
+ '@ton/crypto': 3.3.0
+ symbol.inspect: 1.0.1
+
+ '@ton/crypto-primitives@2.1.0':
+ dependencies:
+ jssha: 3.2.0
+
+ '@ton/crypto@3.3.0':
+ dependencies:
+ '@ton/crypto-primitives': 2.1.0
+ jssha: 3.2.0
+ tweetnacl: 1.0.3
+
+ '@ton/ton@15.1.0(@ton/core@0.59.1(@ton/crypto@3.3.0))(@ton/crypto@3.3.0)':
+ dependencies:
+ '@ton/core': 0.59.1(@ton/crypto@3.3.0)
+ '@ton/crypto': 3.3.0
+ axios: 1.13.3
+ dataloader: 2.2.3
+ symbol.inspect: 1.0.1
+ teslabot: 1.5.0
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - debug
+
+ '@tronweb3/google-protobuf@3.21.4': {}
+
+ '@trufflesuite/bigint-buffer@1.1.9':
+ dependencies:
+ node-gyp-build: 4.3.0
+ optional: true
+
+ '@tsconfig/node10@1.0.12': {}
+
+ '@tsconfig/node12@1.0.11': {}
+
+ '@tsconfig/node14@1.0.3': {}
+
+ '@tsconfig/node16@1.0.4': {}
+
+ '@tybys/wasm-util@0.10.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@typechain/ethers-v5@10.2.1(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3)':
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ lodash: 4.17.23
+ ts-essentials: 7.0.3(typescript@5.9.3)
+ typechain: 8.3.2(typescript@5.9.3)
+ typescript: 5.9.3
+
+ '@types/abstract-leveldown@7.2.5': {}
+
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+ '@types/babel__generator': 7.27.0
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.28.0
+
+ '@types/babel__generator@7.27.0':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.28.6
+ '@babel/types': 7.28.6
+
+ '@types/babel__traverse@7.28.0':
+ dependencies:
+ '@babel/types': 7.28.6
+
+ '@types/bn.js@4.11.6':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/bn.js@5.2.0':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/cacheable-request@6.0.3':
+ dependencies:
+ '@types/http-cache-semantics': 4.0.4
+ '@types/keyv': 3.1.4
+ '@types/node': 18.18.14
+ '@types/responselike': 1.0.3
+
+ '@types/chai@4.3.20': {}
+
+ '@types/connect@3.4.38':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/graceful-fs@4.1.9':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/http-cache-semantics@4.0.4': {}
+
+ '@types/istanbul-lib-coverage@2.0.6': {}
+
+ '@types/istanbul-lib-report@3.0.3':
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+
+ '@types/istanbul-reports@3.0.4':
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+
+ '@types/jest@29.5.14':
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/json5@0.0.29': {}
+
+ '@types/keyv@3.1.4':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/level-errors@3.0.2': {}
+
+ '@types/levelup@4.3.3':
+ dependencies:
+ '@types/abstract-leveldown': 7.2.5
+ '@types/level-errors': 3.0.2
+ '@types/node': 18.18.14
+
+ '@types/mkdirp@0.5.2':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/mocha@10.0.10': {}
+
+ '@types/node-fetch@2.6.13':
+ dependencies:
+ '@types/node': 18.18.14
+ form-data: 4.0.5
+
+ '@types/node@11.11.6': {}
+
+ '@types/node@12.20.55': {}
+
+ '@types/node@18.18.14':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/pbkdf2@3.1.2':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/prettier@2.7.3': {}
+
+ '@types/qs@6.14.0': {}
+
+ '@types/responselike@1.0.3':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/secp256k1@4.0.7':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/semver@7.7.1': {}
+
+ '@types/sinon-chai@3.2.12':
+ dependencies:
+ '@types/chai': 4.3.20
+ '@types/sinon': 21.0.0
+
+ '@types/sinon@21.0.0':
+ dependencies:
+ '@types/sinonjs__fake-timers': 15.0.1
+
+ '@types/sinonjs__fake-timers@15.0.1': {}
+
+ '@types/stack-utils@2.0.3': {}
+
+ '@types/tinycolor2@1.4.6': {}
+
+ '@types/triple-beam@1.3.5': {}
+
+ '@types/uuid@8.3.4': {}
+
+ '@types/ws@7.4.7':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/ws@8.18.1':
+ dependencies:
+ '@types/node': 18.18.14
+
+ '@types/yargs-parser@21.0.3': {}
+
+ '@types/yargs@17.0.35':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ '@types/yoga-layout@1.9.2': {}
+
+ '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 7.18.0
+ '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 7.18.0
+ eslint: 8.57.1
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ ts-api-utils: 1.4.3(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 7.18.0
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 7.18.0
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 8.57.1
+ optionalDependencies:
+ typescript: 5.9.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.18.0':
+ dependencies:
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/visitor-keys': 7.18.0
+
+ '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 8.57.1
+ ts-api-utils: 1.4.3(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@5.62.0': {}
+
+ '@typescript-eslint/types@7.18.0': {}
+
+ '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.4.3(supports-color@8.1.1)
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.7.3
+ tsutils: 3.21.0(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/visitor-keys': 7.18.0
+ debug: 4.4.3(supports-color@8.1.1)
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.3
+ ts-api-utils: 1.4.3(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.7.1
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3)
+ eslint: 8.57.1
+ eslint-scope: 5.1.1
+ semver: 7.7.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@typescript-eslint/scope-manager': 7.18.0
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
+ eslint: 8.57.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@5.62.0':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.3
+
+ '@typescript-eslint/visitor-keys@7.18.0':
+ dependencies:
+ '@typescript-eslint/types': 7.18.0
+ eslint-visitor-keys: 3.4.3
+
+ '@ungap/structured-clone@1.3.0': {}
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.2.12
+ optional: true
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ optional: true
+
+ abi-wan-kanabi@2.2.4:
+ dependencies:
+ ansicolors: 0.3.2
+ cardinal: 2.1.1
+ fs-extra: 10.1.0
+ yargs: 17.7.2
+
+ abitype@1.2.3(typescript@5.9.3)(zod@3.25.76):
+ optionalDependencies:
+ typescript: 5.9.3
+ zod: 3.25.76
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ abortcontroller-polyfill@1.7.8: {}
+
+ abstract-leveldown@6.2.3:
+ dependencies:
+ buffer: 5.7.1
+ immediate: 3.2.3
+ level-concat-iterator: 2.0.1
+ level-supports: 1.0.1
+ xtend: 4.0.2
+
+ abstract-leveldown@6.3.0:
+ dependencies:
+ buffer: 5.7.1
+ immediate: 3.3.0
+ level-concat-iterator: 2.0.1
+ level-supports: 1.0.1
+ xtend: 4.0.2
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-jsx@5.3.2(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+
+ acorn-walk@8.3.4:
+ dependencies:
+ acorn: 8.15.0
+
+ acorn@8.15.0: {}
+
+ adm-zip@0.4.16: {}
+
+ aes-js@3.0.0: {}
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ agentkeepalive@4.6.0:
+ dependencies:
+ humanize-ms: 1.2.1
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ 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
+
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-align@3.0.1:
+ dependencies:
+ string-width: 4.2.3
+
+ ansi-colors@4.1.3: {}
+
+ ansi-escapes@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-regex@2.1.1: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
+ ansicolors@0.3.2: {}
+
+ antlr4@4.13.2: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ aptos@1.22.1(got@12.6.1):
+ dependencies:
+ '@aptos-labs/aptos-client': 2.1.0(got@12.6.1)
+ '@noble/hashes': 1.3.3
+ '@scure/bip39': 1.2.1
+ eventemitter3: 5.0.4
+ tweetnacl: 1.0.3
+ transitivePeerDependencies:
+ - got
+
+ arg@4.1.3: {}
+
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
+ argparse@2.0.1: {}
+
+ array-back@3.1.0: {}
+
+ array-back@4.0.2: {}
+
+ array-buffer-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
+
+ array-flatten@1.1.1: {}
+
+ array-includes@3.1.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+ math-intrinsics: 1.1.0
+
+ array-union@2.1.0: {}
+
+ array.prototype.findlastindex@1.2.6:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flat@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flatmap@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-shim-unscopables: 1.1.0
+
+ arraybuffer.prototype.slice@1.0.4:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+
+ asn1@0.2.6:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ asn1js@3.0.7:
+ dependencies:
+ pvtsutils: 1.3.6
+ pvutils: 1.1.5
+ tslib: 2.8.1
+ optional: true
+
+ assert-plus@1.0.0: {}
+
+ assert@2.1.0:
+ dependencies:
+ call-bind: 1.0.8
+ is-nan: 1.3.2
+ object-is: 1.1.6
+ object.assign: 4.1.7
+ util: 0.12.5
+
+ assertion-error@1.1.0: {}
+
+ ast-metadata-inferer@0.8.1:
+ dependencies:
+ '@mdn/browser-compat-data': 5.7.6
+
+ ast-parents@0.0.1: {}
+
+ astral-regex@2.0.0: {}
+
+ async-eventemitter@0.2.4:
+ dependencies:
+ async: 2.6.4
+
+ async-function@1.0.0: {}
+
+ async-limiter@1.0.1: {}
+
+ async@2.6.4:
+ dependencies:
+ lodash: 4.17.23
+
+ async@3.2.6: {}
+
+ asynckit@0.4.0: {}
+
+ atomic-sleep@1.0.0: {}
+
+ auto-bind@4.0.0: {}
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
+ aws-sign2@0.7.0: {}
+
+ aws4@1.13.2: {}
+
+ axios@0.21.4(debug@4.4.3):
+ dependencies:
+ follow-redirects: 1.15.11(debug@4.4.3)
+ transitivePeerDependencies:
+ - debug
+
+ axios@1.13.3:
+ dependencies:
+ follow-redirects: 1.15.11(debug@4.4.3)
+ form-data: 4.0.5
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
+ babel-jest@29.7.0(@babel/core@7.28.6):
+ dependencies:
+ '@babel/core': 7.28.6
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.5
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.28.6)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-istanbul@6.1.1:
+ dependencies:
+ '@babel/helper-plugin-utils': 7.28.6
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.1
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-jest-hoist@29.6.3:
+ dependencies:
+ '@babel/template': 7.28.6
+ '@babel/types': 7.28.6
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.28.0
+
+ babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.6):
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.6)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.6)
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.6)
+ '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.6)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.6)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.6)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.6)
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.6)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.6)
+
+ babel-preset-jest@29.6.3(@babel/core@7.28.6):
+ dependencies:
+ '@babel/core': 7.28.6
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.6)
+
+ balanced-match@1.0.2: {}
+
+ base-x@3.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ base-x@4.0.1: {}
+
+ base-x@5.0.1: {}
+
+ base64-js@1.5.1: {}
+
+ baseline-browser-mapping@2.9.18: {}
+
+ bcrypt-pbkdf@1.0.2:
+ dependencies:
+ tweetnacl: 0.14.5
+
+ bech32@1.1.4: {}
+
+ bech32@2.0.0: {}
+
+ bigint-buffer@1.1.5:
+ dependencies:
+ bindings: 1.5.0
+
+ bignumber.js@9.3.1: {}
+
+ binary-extensions@2.3.0: {}
+
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
+ bip32@5.0.0(typescript@5.9.3):
+ dependencies:
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+ uint8array-tools: 0.0.8
+ valibot: 0.37.0(typescript@5.9.3)
+ wif: 5.0.0
+ transitivePeerDependencies:
+ - typescript
+
+ bip39@3.0.4:
+ dependencies:
+ '@types/node': 11.11.6
+ create-hash: 1.2.0
+ pbkdf2: 3.1.5
+ randombytes: 2.1.0
+
+ bip39@3.1.0:
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ blakejs@1.2.1: {}
+
+ bluebird@3.7.2: {}
+
+ bn.js@4.11.6: {}
+
+ bn.js@4.12.2: {}
+
+ bn.js@5.2.2: {}
+
+ body-parser@1.20.4:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.14.1
+ raw-body: 2.5.3
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ borsh@0.7.0:
+ dependencies:
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ text-encoding-utf-8: 1.0.2
+
+ 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
+
+ brace-expansion@1.1.12:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ brorand@1.1.0: {}
+
+ browser-headers@0.4.1: {}
+
+ browser-stdout@1.3.1: {}
+
+ browserify-aes@1.2.0:
+ dependencies:
+ buffer-xor: 1.0.3
+ cipher-base: 1.0.7
+ create-hash: 1.2.0
+ evp_bytestokey: 1.0.3
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+
+ browserslist@4.28.1:
+ dependencies:
+ baseline-browser-mapping: 2.9.18
+ caniuse-lite: 1.0.30001766
+ electron-to-chromium: 1.5.279
+ node-releases: 2.0.27
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
+
+ bs58@4.0.1:
+ dependencies:
+ base-x: 3.0.11
+
+ bs58@5.0.0:
+ dependencies:
+ base-x: 4.0.1
+
+ bs58@6.0.0:
+ dependencies:
+ base-x: 5.0.1
+
+ bs58check@2.1.2:
+ dependencies:
+ bs58: 4.0.1
+ create-hash: 1.2.0
+ safe-buffer: 5.2.1
+
+ bs58check@4.0.0:
+ dependencies:
+ '@noble/hashes': 1.8.0
+ bs58: 6.0.0
+
+ bser@2.1.1:
+ dependencies:
+ node-int64: 0.4.0
+
+ buffer-from@1.1.2: {}
+
+ buffer-layout@1.2.2: {}
+
+ buffer-to-arraybuffer@0.0.5: {}
+
+ buffer-xor@1.0.3: {}
+
+ buffer-xor@2.0.2:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bufferutil@4.0.5:
+ dependencies:
+ node-gyp-build: 4.8.4
+ optional: true
+
+ bufferutil@4.1.0:
+ dependencies:
+ node-gyp-build: 4.8.4
+
+ bufio@1.2.3: {}
+
+ bytes@3.1.2: {}
+
+ cacheable-lookup@5.0.4: {}
+
+ cacheable-lookup@6.1.0: {}
+
+ cacheable-lookup@7.0.0: {}
+
+ cacheable-request@10.2.14:
+ dependencies:
+ '@types/http-cache-semantics': 4.0.4
+ get-stream: 6.0.1
+ http-cache-semantics: 4.2.0
+ keyv: 4.5.4
+ mimic-response: 4.0.0
+ normalize-url: 8.1.1
+ responselike: 3.0.0
+
+ cacheable-request@7.0.4:
+ dependencies:
+ clone-response: 1.0.3
+ get-stream: 5.2.0
+ http-cache-semantics: 4.2.0
+ keyv: 4.5.4
+ lowercase-keys: 2.0.0
+ normalize-url: 6.1.0
+ responselike: 2.0.1
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ camelcase@3.0.0: {}
+
+ camelcase@5.3.1: {}
+
+ camelcase@6.3.0: {}
+
+ caniuse-lite@1.0.30001766: {}
+
+ cardinal@2.1.1:
+ dependencies:
+ ansicolors: 0.3.2
+ redeyed: 2.1.1
+
+ caseless@0.12.0: {}
+
+ chai@4.5.0:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.6.2: {}
+
+ char-regex@1.0.2: {}
+
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ chownr@1.1.4: {}
+
+ ci-info@2.0.0: {}
+
+ ci-info@3.9.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.7:
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ to-buffer: 1.2.2
+
+ cjs-module-lexer@1.4.3: {}
+
+ class-is@1.1.0: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-boxes@2.2.1: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-table3@0.6.5:
+ dependencies:
+ string-width: 4.2.3
+ optionalDependencies:
+ '@colors/colors': 1.5.0
+
+ cli-truncate@2.1.0:
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+
+ cliui@3.2.0:
+ dependencies:
+ string-width: 1.0.2
+ strip-ansi: 3.0.1
+ wrap-ansi: 2.1.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
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clone-response@1.0.3:
+ dependencies:
+ mimic-response: 1.0.1
+
+ co@4.6.0: {}
+
+ code-excerpt@3.0.0:
+ dependencies:
+ convert-to-spaces: 1.0.2
+
+ code-point-at@1.1.0: {}
+
+ collect-v8-coverage@1.0.3: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-convert@3.1.3:
+ dependencies:
+ color-name: 2.1.0
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ color-name@2.1.0: {}
+
+ color-string@2.1.4:
+ dependencies:
+ color-name: 2.1.0
+
+ color@5.0.3:
+ dependencies:
+ color-convert: 3.1.3
+ color-string: 2.1.4
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ command-exists@1.2.9: {}
+
+ command-line-args@5.2.1:
+ dependencies:
+ array-back: 3.1.0
+ find-replace: 3.0.0
+ lodash.camelcase: 4.3.0
+ typical: 4.0.0
+
+ command-line-usage@6.1.3:
+ dependencies:
+ array-back: 4.0.2
+ chalk: 2.4.2
+ table-layout: 1.0.2
+ typical: 5.2.0
+
+ commander@10.0.1: {}
+
+ commander@12.1.0: {}
+
+ commander@14.0.2: {}
+
+ commander@2.20.3: {}
+
+ commander@8.3.0: {}
+
+ concat-map@0.0.1: {}
+
+ concurrently@9.1.2:
+ dependencies:
+ chalk: 4.1.2
+ lodash: 4.17.23
+ rxjs: 7.8.2
+ shell-quote: 1.8.3
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.7.2
+
+ config-chain@1.1.13:
+ dependencies:
+ ini: 1.3.8
+ proto-list: 1.2.4
+
+ 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-source-map@2.0.0: {}
+
+ convert-to-spaces@1.0.2: {}
+
+ cookie-signature@1.0.7: {}
+
+ cookie@0.4.2: {}
+
+ cookie@0.7.2: {}
+
+ core-js-pure@3.48.0: {}
+
+ core-util-is@1.0.2: {}
+
+ core-util-is@1.0.3: {}
+
+ cors@2.8.6:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+
+ cosmiconfig@8.3.6(typescript@5.9.3):
+ dependencies:
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ optionalDependencies:
+ typescript: 5.9.3
+
+ crc-32@1.2.2: {}
+
+ create-hash@1.2.0:
+ dependencies:
+ cipher-base: 1.0.7
+ inherits: 2.0.4
+ md5.js: 1.3.5
+ ripemd160: 2.0.3
+ sha.js: 2.4.12
+
+ create-hmac@1.1.7:
+ dependencies:
+ cipher-base: 1.0.7
+ create-hash: 1.2.0
+ inherits: 2.0.4
+ ripemd160: 2.0.3
+ safe-buffer: 5.2.1
+ sha.js: 2.4.12
+
+ create-jest@29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)):
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ create-require@1.1.1: {}
+
+ cross-fetch@3.2.0:
+ dependencies:
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+
+ cross-fetch@4.1.0:
+ dependencies:
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ crypto-hash@1.3.0: {}
+
+ d@1.0.2:
+ dependencies:
+ es5-ext: 0.10.64
+ type: 2.7.3
+
+ dashdash@1.14.1:
+ dependencies:
+ assert-plus: 1.0.0
+
+ data-view-buffer@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-offset@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ dataloader@2.2.3: {}
+
+ dayjs@1.11.19: {}
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.3
+
+ debug@4.4.3(supports-color@8.1.1):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 8.1.1
+
+ decamelize@1.2.0: {}
+
+ decamelize@4.0.0: {}
+
+ 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
+
+ dedent@1.7.1: {}
+
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
+ deep-extend@0.6.0: {}
+
+ deep-is@0.1.4: {}
+
+ deepmerge@4.3.1: {}
+
+ defer-to-connect@2.0.1: {}
+
+ deferred-leveldown@5.3.0:
+ dependencies:
+ abstract-leveldown: 6.2.3
+ inherits: 2.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ delay@5.0.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ depd@2.0.0: {}
+
+ destroy@1.2.0: {}
+
+ detect-indent@7.0.2: {}
+
+ detect-newline@3.1.0: {}
+
+ detect-newline@4.0.1: {}
+
+ diff-sequences@29.6.3: {}
+
+ diff@4.0.4: {}
+
+ diff@5.2.2: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dom-walk@0.1.2: {}
+
+ dot-case@3.0.4:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.8.1
+
+ dotenv@16.6.1: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ ecc-jsbn@0.1.2:
+ dependencies:
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+
+ ed25519-hd-key@1.3.0:
+ dependencies:
+ create-hmac: 1.1.7
+ tweetnacl: 1.0.3
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.279: {}
+
+ elliptic@6.6.1:
+ dependencies:
+ bn.js: 4.12.2
+ brorand: 1.1.0
+ hash.js: 1.1.7
+ hmac-drbg: 1.0.1
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+ minimalistic-crypto-utils: 1.0.1
+
+ emittery@0.10.0: {}
+
+ emittery@0.13.1: {}
+
+ emoji-regex@8.0.0: {}
+
+ enabled@2.0.0: {}
+
+ encode-utf8@1.0.3: {}
+
+ encodeurl@2.0.0: {}
+
+ encoding-down@6.3.0:
+ dependencies:
+ abstract-leveldown: 6.3.0
+ inherits: 2.0.4
+ level-codec: 9.0.2
+ level-errors: 2.0.1
+
+ end-of-stream@1.4.5:
+ dependencies:
+ once: 1.4.0
+
+ enquirer@2.4.1:
+ dependencies:
+ ansi-colors: 4.1.3
+ strip-ansi: 6.0.1
+
+ env-paths@2.2.1: {}
+
+ errno@0.1.8:
+ dependencies:
+ prr: 1.0.1
+
+ error-ex@1.3.4:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-abstract@1.24.1:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-negative-zero: 2.0.3
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.20
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-shim-unscopables@1.1.0:
+ dependencies:
+ hasown: 2.0.2
+
+ es-to-primitive@1.3.0:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+
+ 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:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-symbol: 3.1.4
+
+ es6-promise@4.2.8: {}
+
+ es6-promisify@5.0.0:
+ dependencies:
+ es6-promise: 4.2.8
+
+ es6-symbol@3.1.4:
+ dependencies:
+ d: 1.0.2
+ ext: 1.7.0
+
+ 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
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@2.0.0: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-config-prettier@9.1.2(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.16.1
+ resolve: 1.22.11
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1):
+ dependencies:
+ '@nolyfill/is-core-module': 1.0.39
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 8.57.1
+ get-tsconfig: 4.13.0
+ is-bun-module: 2.0.0
+ stable-hash: 0.0.5
+ tinyglobby: 0.2.15
+ unrs-resolver: 1.11.1
+ optionalDependencies:
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ eslint: 8.57.1
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-autofix@2.2.0(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+ eslint-rule-composer: 0.3.0
+ espree: 9.6.1
+ esutils: 2.0.3
+ string-similarity: 4.0.4
+
+ eslint-plugin-compat@4.2.0(eslint@8.57.1):
+ dependencies:
+ '@mdn/browser-compat-data': 5.7.6
+ ast-metadata-inferer: 0.8.1
+ browserslist: 4.28.1
+ caniuse-lite: 1.0.30001766
+ eslint: 8.57.1
+ find-up: 5.0.0
+ lodash.memoize: 4.1.2
+ semver: 7.7.3
+
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ dependencies:
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.57.1
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ hasown: 2.0.2
+ is-core-module: 2.16.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-jest-extended@2.0.3(eslint@8.57.1)(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3)
+ eslint: 8.57.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-plugin-prettier@5.5.5(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.1):
+ dependencies:
+ eslint: 8.57.1
+ prettier: 3.8.1
+ prettier-linter-helpers: 1.0.1
+ synckit: 0.11.12
+ optionalDependencies:
+ eslint-config-prettier: 9.1.2(eslint@8.57.1)
+
+ eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+ eslint-rule-composer: 0.3.0
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+
+ eslint-rule-composer@0.3.0: {}
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.1:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@eslint-community/regexpp': 4.12.2
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.1
+ '@humanwhocodes/config-array': 0.13.0
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.3.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3(supports-color@8.1.1)
+ 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.7.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.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.1
+ 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.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ 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.6.1:
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ eslint-visitor-keys: 3.4.3
+
+ esprima@4.0.1: {}
+
+ esquery@1.7.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ eth-ens-namehash@2.0.8:
+ dependencies:
+ idna-uts46-hx: 2.3.1
+ js-sha3: 0.5.7
+
+ eth-lib@0.1.29(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ bn.js: 4.12.2
+ elliptic: 6.6.1
+ nano-json-stream-parser: 0.1.2
+ servify: 0.1.12
+ ws: 3.3.3(bufferutil@4.1.0)(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.2
+ elliptic: 6.6.1
+ xhr-request-promise: 0.1.3
+
+ ethereum-bloom-filters@1.2.0:
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ ethereum-cryptography@0.1.3:
+ dependencies:
+ '@types/pbkdf2': 3.1.2
+ '@types/secp256k1': 4.0.7
+ blakejs: 1.2.1
+ browserify-aes: 1.2.0
+ bs58check: 2.1.2
+ create-hash: 1.2.0
+ create-hmac: 1.1.7
+ hash.js: 1.1.7
+ keccak: 3.0.4
+ pbkdf2: 3.1.5
+ randombytes: 2.1.0
+ safe-buffer: 5.2.1
+ scrypt-js: 3.0.1
+ secp256k1: 4.0.4
+ setimmediate: 1.0.5
+
+ 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
+
+ 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
+
+ ethereum-waffle@4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(typescript@5.9.3):
+ dependencies:
+ '@ethereum-waffle/chai': 4.0.10(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@ethereum-waffle/compiler': 4.0.3(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(solc@0.8.15)(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3)
+ '@ethereum-waffle/mock-contract': 4.0.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ '@ethereum-waffle/provider': 4.0.5(@ensdomains/ens@0.4.5)(@ensdomains/resolver@0.2.4)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ solc: 0.8.15
+ typechain: 8.3.2(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@ensdomains/ens'
+ - '@ensdomains/resolver'
+ - '@ethersproject/abi'
+ - '@ethersproject/providers'
+ - debug
+ - encoding
+ - supports-color
+ - typescript
+
+ ethereumjs-abi@0.6.8:
+ dependencies:
+ bn.js: 4.12.2
+ ethereumjs-util: 6.2.1
+
+ ethereumjs-util@6.2.1:
+ dependencies:
+ '@types/bn.js': 4.11.6
+ bn.js: 4.12.2
+ create-hash: 1.2.0
+ elliptic: 6.6.1
+ ethereum-cryptography: 0.1.3
+ ethjs-util: 0.1.6
+ rlp: 2.2.7
+
+ ethereumjs-util@7.1.3:
+ dependencies:
+ '@types/bn.js': 5.2.0
+ bn.js: 5.2.2
+ create-hash: 1.2.0
+ ethereum-cryptography: 0.1.3
+ rlp: 2.2.7
+
+ ethereumjs-util@7.1.5:
+ dependencies:
+ '@types/bn.js': 5.2.0
+ bn.js: 5.2.2
+ create-hash: 1.2.0
+ ethereum-cryptography: 0.1.3
+ rlp: 2.2.7
+
+ ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-provider': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/base64': 5.8.0
+ '@ethersproject/basex': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/hash': 5.8.0
+ '@ethersproject/hdnode': 5.8.0
+ '@ethersproject/json-wallets': 5.8.0
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ '@ethersproject/networks': 5.8.0
+ '@ethersproject/pbkdf2': 5.8.0
+ '@ethersproject/properties': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@ethersproject/random': 5.8.0
+ '@ethersproject/rlp': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+ '@ethersproject/signing-key': 5.8.0
+ '@ethersproject/solidity': 5.8.0
+ '@ethersproject/strings': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/units': 5.8.0
+ '@ethersproject/wallet': 5.8.0
+ '@ethersproject/web': 5.8.0
+ '@ethersproject/wordlists': 5.8.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ ethjs-unit@0.1.6:
+ dependencies:
+ 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.2
+ es5-ext: 0.10.64
+
+ event-target-shim@5.0.1: {}
+
+ eventemitter3@3.1.2: {}
+
+ eventemitter3@4.0.4: {}
+
+ eventemitter3@4.0.7: {}
+
+ eventemitter3@5.0.1: {}
+
+ eventemitter3@5.0.4: {}
+
+ events@3.3.0: {}
+
+ evp_bytestokey@1.0.3:
+ dependencies:
+ md5.js: 1.3.5
+ safe-buffer: 5.2.1
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ exit@0.1.2: {}
+
+ 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
+
+ exponential-backoff@3.1.3: {}
+
+ express@4.22.1:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.4
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.0.7
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.2
+ fresh: 0.5.2
+ http-errors: 2.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.12
+ proxy-addr: 2.0.7
+ qs: 6.14.1
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.2
+ serve-static: 1.16.3
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ ext@1.7.0:
+ dependencies:
+ type: 2.7.3
+
+ extend@3.0.2: {}
+
+ extsprintf@1.3.0: {}
+
+ eyes@0.1.8: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-diff@1.3.0: {}
+
+ fast-glob@3.3.3:
+ 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.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-redact@3.5.0: {}
+
+ fast-stable-stringify@1.0.0: {}
+
+ fast-uri@3.1.0: {}
+
+ fastestsmallesttextencoderdecoder@1.0.22: {}
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fb-watchman@2.0.2:
+ dependencies:
+ bser: 2.1.1
+
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
+ fecha@4.2.3: {}
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ file-uri-to-path@1.0.0: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.3.2:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-replace@3.0.0:
+ dependencies:
+ array-back: 3.1.0
+
+ find-up@1.1.2:
+ dependencies:
+ path-exists: 2.1.0
+ pinkie-promise: 2.0.1
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flat@5.0.2: {}
+
+ flatted@3.3.3: {}
+
+ fmix@0.1.0:
+ dependencies:
+ imul: 1.0.1
+
+ fn.name@1.1.0: {}
+
+ follow-redirects@1.15.11(debug@4.4.3):
+ optionalDependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
+ forever-agent@0.6.1: {}
+
+ 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.5:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
+ forwarded@0.2.0: {}
+
+ fp-ts@1.19.3: {}
+
+ fp-ts@2.16.11: {}
+
+ fresh@0.5.2: {}
+
+ fs-extra@0.30.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 2.4.0
+ klaw: 1.3.1
+ path-is-absolute: 1.0.1
+ rimraf: 2.7.1
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.2.0
+ universalify: 2.0.1
+
+ fs-extra@4.0.3:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
+ fs-extra@7.0.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
+ fs-minipass@1.2.7:
+ dependencies:
+ minipass: 2.9.0
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
+
+ functional-red-black-tree@1.0.1: {}
+
+ functions-have-names@1.2.3: {}
+
+ ganache@7.4.3:
+ optionalDependencies:
+ bufferutil: 4.0.5
+ utf-8-validate: 5.0.7
+
+ generator-function@2.0.1: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@1.0.3: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-package-type@0.1.0: {}
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.3
+
+ get-stream@6.0.1: {}
+
+ get-symbol-description@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+
+ get-tsconfig@4.13.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ getpass@0.1.7:
+ dependencies:
+ assert-plus: 1.0.0
+
+ git-hooks-list@4.2.1: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@7.1.7:
+ 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
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ 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
+
+ global@4.4.0:
+ dependencies:
+ min-document: 2.19.2
+ process: 0.11.10
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ google-protobuf@3.21.4: {}
+
+ gopd@1.2.0: {}
+
+ 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
+ '@szmarczak/http-timer': 5.0.1
+ cacheable-lookup: 7.0.0
+ cacheable-request: 10.2.14
+ decompress-response: 6.0.0
+ form-data-encoder: 2.1.4
+ get-stream: 6.0.1
+ http2-wrapper: 2.2.1
+ lowercase-keys: 3.0.0
+ p-cancelable: 3.0.0
+ responselike: 3.0.0
+
+ gql.tada@1.9.0(graphql@16.12.0)(typescript@5.9.3):
+ dependencies:
+ '@0no-co/graphql.web': 1.2.0(graphql@16.12.0)
+ '@0no-co/graphqlsp': 1.15.2(graphql@16.12.0)(typescript@5.9.3)
+ '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.12.0)(typescript@5.9.3))(graphql@16.12.0)(typescript@5.9.3)
+ '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@gql.tada/svelte-support'
+ - '@gql.tada/vue-support'
+ - graphql
+
+ graceful-fs@4.2.10: {}
+
+ graceful-fs@4.2.11: {}
+
+ gradient-string@1.2.0:
+ dependencies:
+ chalk: 2.4.2
+ tinygradient: 0.4.3
+
+ graphemer@1.4.0: {}
+
+ graphql@16.12.0: {}
+
+ har-schema@2.0.0: {}
+
+ har-validator@5.1.5:
+ dependencies:
+ ajv: 6.12.6
+ har-schema: 2.0.0
+
+ hardhat-contract-sizer@2.10.1(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)):
+ dependencies:
+ chalk: 4.1.2
+ cli-table3: 0.6.5
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ strip-ansi: 6.0.1
+
+ hardhat-deploy-ethers@0.4.2(@nomicfoundation/hardhat-ethers@3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)))(hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)):
+ dependencies:
+ '@nomicfoundation/hardhat-ethers': 3.1.3(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10))
+ hardhat: 2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)
+ hardhat-deploy: 0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ hardhat-deploy@0.12.4(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ '@ethersproject/abstract-signer': 5.8.0
+ '@ethersproject/address': 5.8.0
+ '@ethersproject/bignumber': 5.8.0
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/constants': 5.8.0
+ '@ethersproject/contracts': 5.8.0
+ '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ '@ethersproject/solidity': 5.8.0
+ '@ethersproject/transactions': 5.8.0
+ '@ethersproject/wallet': 5.8.0
+ '@types/qs': 6.14.0
+ axios: 0.21.4(debug@4.4.3)
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ debug: 4.4.3(supports-color@8.1.1)
+ enquirer: 2.4.1
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ form-data: 4.0.5
+ fs-extra: 10.1.0
+ match-all: 1.2.7
+ murmur-128: 0.2.1
+ qs: 6.14.1
+ zksync-ethers: 5.11.1(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ hardhat@2.28.3(bufferutil@4.1.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10):
+ dependencies:
+ '@ethereumjs/util': 9.1.0
+ '@ethersproject/abi': 5.8.0
+ '@nomicfoundation/edr': 0.12.0-next.22
+ '@nomicfoundation/solidity-analyzer': 0.1.2
+ '@sentry/node': 5.30.0
+ adm-zip: 0.4.16
+ aggregate-error: 3.1.0
+ ansi-escapes: 4.3.2
+ boxen: 5.1.2
+ chokidar: 4.0.3
+ ci-info: 2.0.0
+ debug: 4.4.3(supports-color@8.1.1)
+ enquirer: 2.4.1
+ env-paths: 2.2.1
+ ethereum-cryptography: 1.2.0
+ find-up: 5.0.0
+ fp-ts: 1.19.3
+ fs-extra: 7.0.1
+ immutable: 4.3.7
+ io-ts: 1.10.4
+ json-stream-stringify: 3.1.6
+ keccak: 3.0.4
+ lodash: 4.17.23
+ micro-eth-signer: 0.14.0
+ mnemonist: 0.38.5
+ mocha: 10.8.2
+ p-map: 4.0.0
+ picocolors: 1.1.1
+ raw-body: 2.5.3
+ resolve: 1.17.0
+ semver: 6.3.1
+ solc: 0.8.26(debug@4.4.3)
+ source-map-support: 0.5.21
+ stacktrace-parser: 0.1.11
+ tinyglobby: 0.2.15
+ tsort: 0.0.1
+ undici: 5.29.0
+ uuid: 8.3.2
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ has-bigints@1.1.0: {}
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hash-base@3.1.2:
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ safe-buffer: 5.2.1
+ to-buffer: 1.2.2
+
+ hash.js@1.1.7:
+ dependencies:
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0: {}
+
+ 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: {}
+
+ html-escaper@2.0.2: {}
+
+ http-cache-semantics@4.2.0: {}
+
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
+ http-https@1.0.0: {}
+
+ 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@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.3(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ human-signals@2.1.0: {}
+
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ idna-uts46-hx@2.3.1:
+ dependencies:
+ punycode: 2.1.0
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ immediate@3.2.3: {}
+
+ immediate@3.3.0: {}
+
+ immutable@4.3.7: {}
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ import-local@3.2.0:
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+
+ imul@1.0.1: {}
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ injectpromise@1.0.0: {}
+
+ ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2):
+ dependencies:
+ gradient-string: 1.2.0
+ ink: 3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10)
+ prop-types: 15.8.1
+ react: 17.0.2
+ strip-ansi: 6.0.1
+
+ ink-table@3.1.0(ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2):
+ dependencies:
+ ink: 3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10)
+ object-hash: 2.2.0
+ react: 17.0.2
+
+ ink@3.2.0(bufferutil@4.1.0)(react@17.0.2)(utf-8-validate@5.0.10):
+ dependencies:
+ ansi-escapes: 4.3.2
+ auto-bind: 4.0.0
+ chalk: 4.1.2
+ cli-boxes: 2.2.1
+ cli-cursor: 3.1.0
+ cli-truncate: 2.1.0
+ code-excerpt: 3.0.0
+ indent-string: 4.0.0
+ is-ci: 2.0.0
+ lodash: 4.17.23
+ patch-console: 1.0.0
+ react: 17.0.2
+ react-devtools-core: 4.28.5(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ react-reconciler: 0.26.2(react@17.0.2)
+ scheduler: 0.20.2
+ signal-exit: 3.0.7
+ slice-ansi: 3.0.0
+ stack-utils: 2.0.6
+ string-width: 4.2.3
+ type-fest: 0.12.0
+ widest-line: 3.1.0
+ wrap-ansi: 6.2.0
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ yoga-layout-prebuilt: 1.10.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ internal-slot@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.1.0
+
+ invert-kv@1.0.0: {}
+
+ io-ts@1.10.4:
+ dependencies:
+ fp-ts: 1.19.3
+
+ ipaddr.js@1.9.1: {}
+
+ is-arguments@1.2.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-array-buffer@3.0.5:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ is-arrayish@0.2.1: {}
+
+ is-async-function@2.1.1:
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-bigint@1.1.0:
+ dependencies:
+ has-bigints: 1.1.0
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-boolean-object@1.2.2:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-bun-module@2.0.0:
+ dependencies:
+ semver: 7.7.3
+
+ is-callable@1.2.7: {}
+
+ is-ci@2.0.0:
+ dependencies:
+ ci-info: 2.0.0
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-data-view@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-fullwidth-code-point@1.0.0:
+ dependencies:
+ number-is-nan: 1.0.1
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-function@1.0.2: {}
+
+ is-generator-fn@2.1.0: {}
+
+ is-generator-function@1.1.2:
+ dependencies:
+ call-bound: 1.0.4
+ generator-function: 2.0.1
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-hex-prefixed@1.0.0: {}
+
+ is-map@2.0.3: {}
+
+ is-nan@1.3.2:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+
+ is-negative-zero@2.0.3: {}
+
+ is-number-object@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@2.1.0: {}
+
+ is-plain-obj@4.1.0: {}
+
+ is-promise@2.2.2: {}
+
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.4:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-stream@2.0.1: {}
+
+ is-string@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.20
+
+ is-typedarray@1.0.0: {}
+
+ is-unicode-supported@0.1.0: {}
+
+ is-url@1.2.4: {}
+
+ is-utf8@0.2.1: {}
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-weakset@2.0.4:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)):
+ dependencies:
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)):
+ dependencies:
+ ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ isstream@0.1.2: {}
+
+ istanbul-lib-coverage@3.2.2: {}
+
+ istanbul-lib-instrument@5.2.1:
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/parser': 7.28.6
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-instrument@6.0.3:
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/parser': 7.28.6
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.7.3
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-lib-source-maps@4.0.1:
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-reports@3.2.0:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@types/connect': 3.4.38
+ '@types/node': 12.20.55
+ '@types/ws': 7.4.7
+ commander: 2.20.3
+ delay: 5.0.0
+ es6-promisify: 5.0.0
+ eyes: 0.1.8
+ isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ json-stringify-safe: 5.0.1
+ stream-json: 1.9.1
+ uuid: 8.3.2
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ jest-changed-files@29.7.0:
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+
+ jest-circus@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.7.1
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-cli@29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)):
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ exit: 0.1.2
+ import-local: 3.2.0
+ jest-config: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ jest-config@29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)):
+ dependencies:
+ '@babel/core': 7.28.6
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.28.6)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.8
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ optionalDependencies:
+ '@types/node': 18.18.14
+ ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ 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
+
+ jest-docblock@29.7.0:
+ dependencies:
+ detect-newline: 3.1.0
+
+ jest-each@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+
+ jest-environment-node@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ jest-get-type@29.6.3: {}
+
+ jest-haste-map@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 18.18.14
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.8
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ jest-leak-detector@29.7.0:
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.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
+
+ jest-message-util@29.7.0:
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+
+ jest-mock@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ jest-util: 29.7.0
+
+ jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ optionalDependencies:
+ jest-resolve: 29.7.0
+
+ jest-regex-util@29.6.3: {}
+
+ jest-regex-util@30.0.1: {}
+
+ jest-resolve-dependencies@29.7.0:
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-resolve@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.11
+ resolve.exports: 2.0.3
+ slash: 3.0.0
+
+ jest-runner@29.7.0:
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-runtime@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ cjs-module-lexer: 1.4.3
+ collect-v8-coverage: 1.0.3
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-snapshot@29.7.0:
+ dependencies:
+ '@babel/core': 7.28.6
+ '@babel/generator': 7.28.6
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6)
+ '@babel/types': 7.28.6
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.6)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 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
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.7.3
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-util@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+
+ jest-validate@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+
+ jest-watcher@29.7.0:
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 18.18.14
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+
+ jest-worker@29.7.0:
+ dependencies:
+ '@types/node': 18.18.14
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jest@29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3)):
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ '@jest/types': 29.6.3
+ import-local: 3.2.0
+ jest-cli: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3))
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ js-sha256@0.9.0: {}
+
+ js-sha3@0.5.7: {}
+
+ js-sha3@0.8.0: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@3.14.2:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
+ jsbn@0.1.1: {}
+
+ jscrypto@1.0.3: {}
+
+ jsesc@3.1.0: {}
+
+ json-bigint@1.0.0:
+ dependencies:
+ bignumber.js: 9.3.1
+
+ json-buffer@3.0.1: {}
+
+ json-parse-even-better-errors@2.3.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-stream-stringify@3.1.6: {}
+
+ json-stringify-safe@5.0.1: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+
+ json5@2.2.3: {}
+
+ jsonc-parser@3.3.1: {}
+
+ jsonfile@2.4.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsonfile@4.0.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsonfile@6.2.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsprim@1.4.2:
+ dependencies:
+ assert-plus: 1.0.0
+ extsprintf: 1.3.0
+ json-schema: 0.4.0
+ verror: 1.10.0
+
+ jssha@3.2.0: {}
+
+ keccak256@1.0.6:
+ dependencies:
+ bn.js: 5.2.2
+ buffer: 6.0.3
+ keccak: 3.0.4
+
+ keccak@3.0.1:
+ dependencies:
+ node-addon-api: 2.0.2
+ node-gyp-build: 4.8.4
+
+ keccak@3.0.4:
+ dependencies:
+ node-addon-api: 2.0.2
+ node-gyp-build: 4.8.4
+ readable-stream: 3.6.2
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ klaw@1.3.1:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ kleur@3.0.3: {}
+
+ kuler@2.0.0: {}
+
+ latest-version@7.0.0:
+ dependencies:
+ package-json: 8.1.1
+
+ lcid@1.0.0:
+ dependencies:
+ invert-kv: 1.0.0
+
+ level-codec@9.0.2:
+ dependencies:
+ buffer: 5.7.1
+
+ level-concat-iterator@2.0.1: {}
+
+ level-errors@2.0.1:
+ dependencies:
+ errno: 0.1.8
+
+ level-iterator-stream@4.0.2:
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ xtend: 4.0.2
+
+ level-mem@5.0.1:
+ dependencies:
+ level-packager: 5.1.1
+ memdown: 5.1.0
+
+ level-packager@5.1.1:
+ dependencies:
+ encoding-down: 6.3.0
+ levelup: 4.4.0
+
+ level-supports@1.0.1:
+ dependencies:
+ xtend: 4.0.2
+
+ level-ws@2.0.0:
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ xtend: 4.0.2
+
+ levelup@4.4.0:
+ dependencies:
+ deferred-leveldown: 5.3.0
+ level-errors: 2.0.1
+ level-iterator-stream: 4.0.2
+ level-supports: 1.0.1
+ xtend: 4.0.2
+
+ leven@3.1.0: {}
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lines-and-columns@1.2.4: {}
+
+ load-json-file@1.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 2.2.0
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ strip-bom: 2.0.0
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.assign@4.2.0: {}
+
+ lodash.camelcase@4.3.0: {}
+
+ lodash.isequal@4.5.0: {}
+
+ lodash.memoize@4.1.2: {}
+
+ lodash.merge@4.6.2: {}
+
+ lodash.truncate@4.4.2: {}
+
+ lodash@4.17.23: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ logform@2.7.0:
+ dependencies:
+ '@colors/colors': 1.6.0
+ '@types/triple-beam': 1.3.5
+ fecha: 4.2.3
+ ms: 2.1.3
+ safe-stable-stringify: 2.5.0
+ triple-beam: 1.4.1
+
+ long@5.3.2: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lossless-json@4.3.0: {}
+
+ loupe@2.3.7:
+ dependencies:
+ get-func-name: 2.0.2
+
+ lower-case@2.0.2:
+ dependencies:
+ tslib: 2.8.1
+
+ lowercase-keys@2.0.0: {}
+
+ lowercase-keys@3.0.0: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ lru-queue@0.1.0:
+ dependencies:
+ es5-ext: 0.10.64
+
+ lru_map@0.3.3: {}
+
+ ltgt@2.2.1: {}
+
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.7.3
+
+ make-error@1.3.6: {}
+
+ makeerror@1.0.12:
+ dependencies:
+ tmpl: 1.0.5
+
+ map-age-cleaner@0.1.3:
+ dependencies:
+ p-defer: 1.0.0
+
+ match-all@1.2.7: {}
+
+ math-intrinsics@1.1.0: {}
+
+ mcl-wasm@0.7.9: {}
+
+ md5.js@1.3.5:
+ dependencies:
+ hash-base: 3.1.2
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+
+ media-typer@0.3.0: {}
+
+ memdown@5.1.0:
+ dependencies:
+ abstract-leveldown: 6.2.3
+ functional-red-black-tree: 1.0.1
+ immediate: 3.2.3
+ inherits: 2.0.4
+ ltgt: 2.2.1
+ safe-buffer: 5.2.1
+
+ memoizee@0.4.17:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ 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
+
+ memorystream@0.3.1: {}
+
+ merge-descriptors@1.0.3: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ merkle-patricia-tree@4.2.4:
+ dependencies:
+ '@types/levelup': 4.3.3
+ ethereumjs-util: 7.1.5
+ level-mem: 5.0.1
+ level-ws: 2.0.0
+ readable-stream: 3.6.2
+ semaphore-async-await: 1.5.1
+
+ methods@1.1.2: {}
+
+ micro-eth-signer@0.14.0:
+ dependencies:
+ '@noble/curves': 1.8.2
+ '@noble/hashes': 1.7.2
+ micro-packed: 0.7.3
+
+ micro-ftch@0.3.1: {}
+
+ micro-memoize@4.1.3: {}
+
+ micro-packed@0.7.3:
+ dependencies:
+ '@scure/base': 1.2.6
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ miller-rabin@4.0.1:
+ dependencies:
+ bn.js: 4.12.2
+ brorand: 1.1.0
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ mimic-fn@3.1.0: {}
+
+ mimic-response@1.0.1: {}
+
+ mimic-response@3.1.0: {}
+
+ mimic-response@4.0.0: {}
+
+ min-document@2.19.2:
+ dependencies:
+ dom-walk: 0.1.2
+
+ minimalistic-assert@1.0.1: {}
+
+ minimalistic-crypto-utils@1.0.1: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.12
+
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimist@1.2.8: {}
+
+ minipass@2.9.0:
+ dependencies:
+ safe-buffer: 5.2.1
+ yallist: 3.1.1
+
+ minizlib@1.3.3:
+ dependencies:
+ minipass: 2.9.0
+
+ mkdirp-promise@5.0.1:
+ dependencies:
+ mkdirp: 3.0.1
+
+ mkdirp@0.5.6:
+ dependencies:
+ minimist: 1.2.8
+
+ mkdirp@1.0.4: {}
+
+ mkdirp@3.0.1: {}
+
+ mnemonist@0.38.5:
+ dependencies:
+ obliterator: 2.0.5
+
+ mocha@10.8.2:
+ dependencies:
+ ansi-colors: 4.1.3
+ browser-stdout: 1.3.1
+ chokidar: 3.6.0
+ debug: 4.4.3(supports-color@8.1.1)
+ diff: 5.2.2
+ escape-string-regexp: 4.0.0
+ find-up: 5.0.0
+ glob: 8.1.0
+ he: 1.2.0
+ js-yaml: 4.1.1
+ 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: {}
+
+ ms@2.0.0: {}
+
+ ms@2.1.3: {}
+
+ multibase@0.6.1:
+ dependencies:
+ base-x: 3.0.11
+ buffer: 5.7.1
+
+ multibase@0.7.0:
+ dependencies:
+ base-x: 3.0.11
+ 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
+
+ multihashes@0.4.21:
+ dependencies:
+ buffer: 5.7.1
+ multibase: 0.7.0
+ varint: 5.0.2
+
+ murmur-128@0.2.1:
+ dependencies:
+ encode-utf8: 1.0.3
+ fmix: 0.1.0
+ imul: 1.0.1
+
+ nano-json-stream-parser@0.1.2: {}
+
+ napi-postinstall@0.3.4: {}
+
+ natural-compare@1.4.0: {}
+
+ negotiator@0.6.3: {}
+
+ next-tick@1.1.0: {}
+
+ no-case@3.0.4:
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.8.1
+
+ node-addon-api@2.0.2: {}
+
+ node-addon-api@5.1.0: {}
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-gyp-build@4.3.0:
+ optional: true
+
+ node-gyp-build@4.8.4: {}
+
+ node-int64@0.4.0: {}
+
+ node-releases@2.0.27: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.11
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ normalize-url@6.1.0: {}
+
+ normalize-url@8.1.1: {}
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ number-is-nan@1.0.1: {}
+
+ number-to-bn@1.7.0:
+ dependencies:
+ bn.js: 4.11.6
+ strip-hex-prefix: 1.0.0
+
+ oauth-sign@0.9.0: {}
+
+ object-assign@4.1.1: {}
+
+ object-hash@2.2.0: {}
+
+ object-inspect@1.13.4: {}
+
+ object-is@1.1.6:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.7:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-object-atoms: 1.1.1
+
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+
+ object.values@1.2.1:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ obliterator@2.0.5: {}
+
+ oboe@2.1.5:
+ dependencies:
+ http-https: 1.0.0
+
+ on-exit-leak-free@2.1.2: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ one-time@1.0.0:
+ dependencies:
+ fn.name: 1.1.0
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ optionator@0.9.4:
+ dependencies:
+ 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
+
+ os-locale@1.4.0:
+ dependencies:
+ lcid: 1.0.0
+
+ os-tmpdir@1.0.2: {}
+
+ own-keys@1.0.1:
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
+ ox@0.11.3(typescript@5.9.3)(zod@3.25.76):
+ dependencies:
+ '@adraffy/ens-normalize': 1.11.1
+ '@noble/ciphers': 1.3.0
+ '@noble/curves': 1.9.1
+ '@noble/hashes': 1.8.0
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76)
+ eventemitter3: 5.0.1
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - zod
+
+ p-cancelable@2.1.1: {}
+
+ p-cancelable@3.0.0: {}
+
+ p-defer@1.0.0: {}
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
+ p-memoize@4.0.4:
+ dependencies:
+ map-age-cleaner: 0.1.3
+ mimic-fn: 3.1.0
+ p-settle: 4.1.1
+
+ p-reflect@2.1.0: {}
+
+ p-settle@4.1.1:
+ dependencies:
+ p-limit: 2.3.0
+ p-reflect: 2.1.0
+
+ p-try@2.2.0: {}
+
+ package-json@8.1.1:
+ dependencies:
+ got: 12.6.1
+ registry-auth-token: 5.1.1
+ registry-url: 6.0.1
+ semver: 7.7.3
+
+ pako@2.1.0: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-headers@2.0.6: {}
+
+ parse-json@2.2.0:
+ dependencies:
+ error-ex: 1.3.4
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.28.6
+ error-ex: 1.3.4
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ parseurl@1.3.3: {}
+
+ patch-console@1.0.0: {}
+
+ path-browserify@1.0.1: {}
+
+ path-exists@2.1.0:
+ dependencies:
+ pinkie-promise: 2.0.1
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-to-regexp@0.1.12: {}
+
+ path-type@1.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+
+ path-type@4.0.0: {}
+
+ pathval@1.1.1: {}
+
+ pbkdf2@3.1.5:
+ dependencies:
+ create-hash: 1.2.0
+ create-hmac: 1.1.7
+ ripemd160: 2.0.3
+ safe-buffer: 5.2.1
+ sha.js: 2.4.12
+ to-buffer: 1.2.2
+
+ performance-now@2.1.0: {}
+
+ picocolors@1.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.3: {}
+
+ pify@2.3.0: {}
+
+ pinkie-promise@2.0.1:
+ dependencies:
+ pinkie: 2.0.4
+
+ pinkie@2.0.4: {}
+
+ pino-abstract-transport@1.2.0:
+ dependencies:
+ readable-stream: 4.7.0
+ split2: 4.2.0
+
+ pino-std-serializers@6.2.2: {}
+
+ pino@8.21.0:
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.5.0
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 1.2.0
+ pino-std-serializers: 6.2.2
+ process-warning: 3.0.0
+ quick-format-unescaped: 4.0.4
+ real-require: 0.2.0
+ safe-stable-stringify: 2.5.0
+ sonic-boom: 3.8.1
+ thread-stream: 2.7.0
+
+ pirates@4.0.7: {}
+
+ pkg-dir@4.2.0:
+ dependencies:
+ find-up: 4.1.0
+
+ pluralize@8.0.0: {}
+
+ poseidon-lite@0.2.1: {}
+
+ possible-typed-array-names@1.1.0: {}
+
+ prelude-ls@1.2.1: {}
+
+ prettier-linter-helpers@1.0.1:
+ dependencies:
+ fast-diff: 1.3.0
+
+ prettier-plugin-packagejson@2.5.22(prettier@3.8.1):
+ dependencies:
+ sort-package-json: 3.6.0
+ optionalDependencies:
+ prettier: 3.8.1
+
+ prettier-plugin-solidity@1.4.3(prettier@3.8.1):
+ dependencies:
+ '@solidity-parser/parser': 0.20.2
+ prettier: 3.8.1
+ semver: 7.7.3
+
+ prettier@2.8.8: {}
+
+ prettier@3.8.1: {}
+
+ pretty-format@29.7.0:
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
+ process-nextick-args@2.0.1: {}
+
+ process-warning@3.0.0: {}
+
+ process@0.11.10: {}
+
+ 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
+
+ proto-list@1.2.4: {}
+
+ protobufjs@7.5.4:
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 18.18.14
+ long: 5.3.2
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ proxy-from-env@1.1.0: {}
+
+ prr@1.0.1: {}
+
+ psl@1.15.0:
+ dependencies:
+ punycode: 2.3.1
+
+ pump@3.0.3:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
+ punycode@1.4.1: {}
+
+ punycode@2.1.0: {}
+
+ punycode@2.3.1: {}
+
+ pure-rand@6.1.0: {}
+
+ pvtsutils@1.3.6:
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ pvutils@1.1.5:
+ optional: true
+
+ qs@6.14.1:
+ dependencies:
+ side-channel: 1.1.0
+
+ qs@6.5.3: {}
+
+ query-string@5.1.1:
+ dependencies:
+ decode-uri-component: 0.2.2
+ object-assign: 4.1.1
+ strict-uri-encode: 1.1.0
+
+ querystring-es3@0.2.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ quick-format-unescaped@4.0.4: {}
+
+ quick-lru@5.1.1: {}
+
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.3:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ rc@1.2.8:
+ dependencies:
+ deep-extend: 0.6.0
+ ini: 1.3.8
+ minimist: 1.2.8
+ strip-json-comments: 2.0.1
+
+ react-devtools-core@4.28.5(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ shell-quote: 1.8.3
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ react-is@16.13.1: {}
+
+ react-is@18.3.1: {}
+
+ react-reconciler@0.26.2(react@17.0.2):
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react: 17.0.2
+ scheduler: 0.20.2
+
+ react@17.0.2:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+
+ read-pkg-up@1.0.1:
+ dependencies:
+ find-up: 1.1.2
+ read-pkg: 1.1.0
+
+ read-pkg@1.1.0:
+ dependencies:
+ load-json-file: 1.1.0
+ normalize-package-data: 2.5.0
+ path-type: 1.1.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readable-stream@4.7.0:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ readdirp@4.1.2: {}
+
+ real-require@0.2.0: {}
+
+ redeyed@2.1.1:
+ dependencies:
+ esprima: 4.0.1
+
+ reduce-flatten@2.0.0: {}
+
+ reflect.getprototypeof@1.0.10:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+
+ regexp.prototype.flags@1.5.4:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+
+ registry-auth-token@5.1.1:
+ dependencies:
+ '@pnpm/npm-conf': 3.0.2
+
+ registry-url@6.0.1:
+ dependencies:
+ rc: 1.2.8
+
+ 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@1.2.1: {}
+
+ require-from-string@2.0.2: {}
+
+ require-main-filename@1.0.1: {}
+
+ resolve-alpn@1.2.1: {}
+
+ resolve-cwd@3.0.0:
+ dependencies:
+ resolve-from: 5.0.0
+
+ resolve-from@4.0.0: {}
+
+ resolve-from@5.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve.exports@2.0.3: {}
+
+ resolve@1.17.0:
+ dependencies:
+ path-parse: 1.0.7
+
+ resolve@1.22.11:
+ dependencies:
+ is-core-module: 2.16.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
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ reusify@1.1.0: {}
+
+ rimraf@2.7.1:
+ dependencies:
+ glob: 7.2.3
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ ripemd160@2.0.3:
+ dependencies:
+ hash-base: 3.1.2
+ inherits: 2.0.4
+
+ rlp@2.2.6:
+ dependencies:
+ bn.js: 4.12.2
+
+ rlp@2.2.7:
+ dependencies:
+ bn.js: 5.2.2
+
+ rpc-websockets@9.3.3:
+ dependencies:
+ '@swc/helpers': 0.5.18
+ '@types/uuid': 8.3.4
+ '@types/ws': 8.18.1
+ buffer: 6.0.3
+ eventemitter3: 5.0.4
+ uuid: 8.3.2
+ ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rustbn.js@0.2.0: {}
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ safe-array-concat@1.1.3:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-push-apply@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
+ safe-stable-stringify@2.5.0: {}
+
+ safer-buffer@2.1.2: {}
+
+ scheduler@0.20.2:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+
+ scrypt-js@3.0.1: {}
+
+ secp256k1@4.0.4:
+ dependencies:
+ elliptic: 6.6.1
+ node-addon-api: 5.1.0
+ node-gyp-build: 4.8.4
+
+ secp256k1@5.0.1:
+ dependencies:
+ elliptic: 6.6.1
+ node-addon-api: 5.1.0
+ node-gyp-build: 4.8.4
+
+ seedrandom@3.0.5: {}
+
+ semaphore-async-await@1.5.1: {}
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.7.3: {}
+
+ send@0.19.2:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
+ serve-static@1.16.3:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.2
+ transitivePeerDependencies:
+ - supports-color
+
+ servify@0.1.12:
+ dependencies:
+ body-parser: 1.20.4
+ cors: 2.8.6
+ express: 4.22.1
+ request: 2.88.2
+ xhr: 2.6.0
+ transitivePeerDependencies:
+ - supports-color
+
+ set-blocking@2.0.0: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ 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
+
+ set-proto@1.0.0:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+
+ setimmediate@1.0.5: {}
+
+ setprototypeof@1.2.0: {}
+
+ sha.js@2.4.12:
+ dependencies:
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
+ to-buffer: 1.2.2
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.8.3: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ signal-exit@3.0.7: {}
+
+ 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
+
+ sisteransi@1.0.5: {}
+
+ slash@3.0.0: {}
+
+ slice-ansi@3.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
+ slice-ansi@4.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
+ snake-case@3.0.4:
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.8.1
+
+ solc@0.4.26:
+ dependencies:
+ fs-extra: 0.30.0
+ memorystream: 0.3.1
+ require-from-string: 1.2.1
+ semver: 5.7.2
+ yargs: 4.8.1
+
+ solc@0.8.15:
+ dependencies:
+ command-exists: 1.2.9
+ commander: 8.3.0
+ follow-redirects: 1.15.11(debug@4.4.3)
+ js-sha3: 0.8.0
+ memorystream: 0.3.1
+ semver: 5.7.2
+ tmp: 0.0.33
+ transitivePeerDependencies:
+ - debug
+
+ solc@0.8.26(debug@4.4.3):
+ dependencies:
+ command-exists: 1.2.9
+ commander: 8.3.0
+ follow-redirects: 1.15.11(debug@4.4.3)
+ 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.9.3):
+ dependencies:
+ '@solidity-parser/parser': 0.18.0
+ ajv: 6.12.6
+ antlr4: 4.13.2
+ ast-parents: 0.0.1
+ chalk: 4.1.2
+ commander: 10.0.1
+ cosmiconfig: 8.3.6(typescript@5.9.3)
+ fast-diff: 1.3.0
+ glob: 8.1.0
+ ignore: 5.3.2
+ js-yaml: 4.1.1
+ latest-version: 7.0.0
+ lodash: 4.17.23
+ pluralize: 8.0.0
+ semver: 7.7.3
+ strip-ansi: 6.0.1
+ table: 6.9.0
+ text-table: 0.2.0
+ optionalDependencies:
+ prettier: 2.8.8
+ transitivePeerDependencies:
+ - typescript
+
+ solidity-bytes-utils@0.8.4: {}
+
+ sonic-boom@3.8.1:
+ dependencies:
+ atomic-sleep: 1.0.0
+
+ sort-object-keys@2.1.0: {}
+
+ sort-package-json@3.6.0:
+ dependencies:
+ detect-indent: 7.0.2
+ detect-newline: 4.0.1
+ git-hooks-list: 4.2.1
+ is-plain-obj: 4.1.0
+ semver: 7.7.3
+ sort-object-keys: 2.1.0
+ tinyglobby: 0.2.15
+
+ source-map-support@0.5.13:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.22
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.22
+
+ spdx-license-ids@3.0.22: {}
+
+ 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
+
+ stable-hash@0.0.5: {}
+
+ stack-trace@0.0.10: {}
+
+ stack-utils@2.0.6:
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ stacktrace-parser@0.1.11:
+ dependencies:
+ type-fest: 0.7.1
+
+ starknet@8.9.2:
+ dependencies:
+ '@noble/curves': 1.7.0
+ '@noble/hashes': 1.6.1
+ '@scure/base': 1.2.6
+ '@scure/starknet': 1.1.0
+ '@starknet-io/starknet-types-08': '@starknet-io/types-js@0.8.4'
+ '@starknet-io/starknet-types-09': '@starknet-io/types-js@0.9.2'
+ abi-wan-kanabi: 2.2.4
+ lossless-json: 4.3.0
+ pako: 2.1.0
+ ts-mixer: 6.0.4
+
+ statuses@2.0.2: {}
+
+ stop-iteration-iterator@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+
+ stream-chain@2.2.5: {}
+
+ stream-json@1.9.1:
+ dependencies:
+ stream-chain: 2.2.5
+
+ strict-uri-encode@1.1.0: {}
+
+ string-format@2.0.0: {}
+
+ string-length@4.0.2:
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
+ string-similarity@4.0.4: {}
+
+ string-width@1.0.2:
+ dependencies:
+ code-point-at: 1.1.0
+ is-fullwidth-code-point: 1.0.0
+ strip-ansi: 3.0.1
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string.prototype.trim@1.2.10:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.1
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
+
+ string.prototype.trimend@1.0.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@3.0.1:
+ dependencies:
+ ansi-regex: 2.1.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@2.0.0:
+ dependencies:
+ is-utf8: 0.2.1
+
+ strip-bom@3.0.0: {}
+
+ strip-bom@4.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-hex-prefix@1.0.0:
+ dependencies:
+ is-hex-prefixed: 1.0.0
+
+ strip-json-comments@2.0.1: {}
+
+ strip-json-comments@3.1.1: {}
+
+ superstruct@0.15.5: {}
+
+ superstruct@2.0.2: {}
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ swarm-js@0.1.42(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ bluebird: 3.7.2
+ buffer: 5.7.1
+ eth-lib: 0.1.29(bufferutil@4.1.0)(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.inspect@1.0.1: {}
+
+ synckit@0.11.12:
+ dependencies:
+ '@pkgr/core': 0.2.9
+
+ table-layout@1.0.2:
+ dependencies:
+ array-back: 4.0.2
+ deep-extend: 0.6.0
+ typical: 5.2.0
+ wordwrapjs: 4.0.1
+
+ table@6.8.2:
+ dependencies:
+ ajv: 8.17.1
+ lodash.truncate: 4.4.2
+ slice-ansi: 4.0.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ table@6.9.0:
+ dependencies:
+ ajv: 8.17.1
+ lodash.truncate: 4.4.2
+ slice-ansi: 4.0.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ tar@4.4.19:
+ dependencies:
+ 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
+
+ teslabot@1.5.0: {}
+
+ test-exclude@6.0.0:
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ testrpc@0.0.1: {}
+
+ text-encoding-utf-8@1.0.2: {}
+
+ text-hex@1.0.0: {}
+
+ text-table@0.2.0: {}
+
+ thread-stream@2.7.0:
+ dependencies:
+ real-require: 0.2.0
+
+ timed-out@4.0.1: {}
+
+ timers-ext@0.1.8:
+ dependencies:
+ es5-ext: 0.10.64
+ next-tick: 1.1.0
+
+ tiny-invariant@1.3.3: {}
+
+ tinycolor2@1.6.0: {}
+
+ tinyglobby@0.2.15:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+
+ tinygradient@0.4.3:
+ dependencies:
+ '@types/tinycolor2': 1.4.6
+ tinycolor2: 1.6.0
+
+ tmp@0.0.33:
+ dependencies:
+ os-tmpdir: 1.0.2
+
+ tmpl@1.0.5: {}
+
+ to-buffer@1.2.2:
+ dependencies:
+ isarray: 2.0.5
+ safe-buffer: 5.2.1
+ typed-array-buffer: 1.0.3
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ toml@3.0.0: {}
+
+ tough-cookie@2.5.0:
+ dependencies:
+ psl: 1.15.0
+ punycode: 2.3.1
+
+ tr46@0.0.3: {}
+
+ tree-kill@1.2.2: {}
+
+ triple-beam@1.4.1: {}
+
+ tronweb@5.3.4(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@babel/runtime': 7.28.6
+ '@ethersproject/abi': 5.8.0
+ '@tronweb3/google-protobuf': 3.21.4
+ axios: 1.13.3
+ bignumber.js: 9.3.1
+ ethereum-cryptography: 2.2.1
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ eventemitter3: 3.1.2
+ injectpromise: 1.0.0
+ lodash: 4.17.23
+ querystring-es3: 0.2.1
+ semver: 5.7.2
+ validator: 13.15.26
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - utf-8-validate
+
+ ts-api-utils@1.4.3(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ ts-command-line-args@2.5.1:
+ dependencies:
+ chalk: 4.1.2
+ command-line-args: 5.2.1
+ command-line-usage: 6.1.3
+ string-format: 2.0.0
+
+ ts-essentials@7.0.3(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ ts-mixer@6.0.4: {}
+
+ ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.18))(@types/node@18.18.14)(typescript@5.9.3):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.12
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 18.18.14
+ acorn: 8.15.0
+ acorn-walk: 8.3.4
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.4
+ make-error: 1.3.6
+ typescript: 5.9.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.15.10(@swc/helpers@0.5.18)
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@1.14.1: {}
+
+ tslib@2.8.1: {}
+
+ tsort@0.0.1: {}
+
+ tsutils@3.21.0(typescript@5.9.3):
+ dependencies:
+ tslib: 1.14.1
+ typescript: 5.9.3
+
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ tweetnacl@0.14.5: {}
+
+ tweetnacl@1.0.3: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-detect@4.0.8: {}
+
+ type-detect@4.1.0: {}
+
+ type-fest@0.12.0: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.21.3: {}
+
+ type-fest@0.7.1: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ type@2.7.3: {}
+
+ typechain@8.3.2(typescript@5.9.3):
+ dependencies:
+ '@types/prettier': 2.7.3
+ debug: 4.4.3(supports-color@8.1.1)
+ fs-extra: 7.0.1
+ glob: 7.1.7
+ js-sha3: 0.8.0
+ lodash: 4.17.23
+ mkdirp: 1.0.4
+ prettier: 2.8.8
+ ts-command-line-args: 2.5.1
+ ts-essentials: 7.0.3(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-length@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-offset@1.0.4:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+
+ typed-array-length@1.0.7:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+
+ typedarray-to-buffer@3.1.5:
+ dependencies:
+ is-typedarray: 1.0.0
+
+ typescript@5.9.3: {}
+
+ typical@4.0.0: {}
+
+ typical@5.2.0: {}
+
+ uint8array-tools@0.0.8: {}
+
+ ultron@1.1.1: {}
+
+ unbox-primitive@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+
+ undici-types@5.26.5: {}
+
+ undici@5.29.0:
+ dependencies:
+ '@fastify/busboy': 2.1.1
+
+ universalify@0.1.2: {}
+
+ universalify@2.0.1: {}
+
+ unpipe@1.0.0: {}
+
+ unrs-resolver@1.11.1:
+ dependencies:
+ napi-postinstall: 0.3.4
+ optionalDependencies:
+ '@unrs/resolver-binding-android-arm-eabi': 1.11.1
+ '@unrs/resolver-binding-android-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-x64': 1.11.1
+ '@unrs/resolver-binding-freebsd-x64': 1.11.1
+ '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-musl': 1.11.1
+ '@unrs/resolver-binding-wasm32-wasi': 1.11.1
+ '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+
+ update-browserslist-db@1.2.3(browserslist@4.28.1):
+ dependencies:
+ browserslist: 4.28.1
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ url-set-query@1.0.0: {}
+
+ url@0.11.4:
+ dependencies:
+ punycode: 1.4.1
+ qs: 6.14.1
+
+ utf-8-validate@5.0.10:
+ dependencies:
+ node-gyp-build: 4.8.4
+
+ utf-8-validate@5.0.7:
+ dependencies:
+ node-gyp-build: 4.8.4
+ optional: true
+
+ utf8@3.0.0: {}
+
+ util-deprecate@1.0.2: {}
+
+ util@0.12.5:
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.2.0
+ is-generator-function: 1.1.2
+ is-typed-array: 1.1.15
+ which-typed-array: 1.1.20
+
+ utils-merge@1.0.1: {}
+
+ uuid@3.4.0: {}
+
+ uuid@8.3.2: {}
+
+ uuid@9.0.1: {}
+
+ v8-compile-cache-lib@3.0.1: {}
+
+ v8-to-istanbul@9.3.0:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+
+ valibot@0.37.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ valibot@1.2.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ validator@13.15.26: {}
+
+ varint@5.0.2: {}
+
+ vary@1.1.2: {}
+
+ verror@1.10.0:
+ dependencies:
+ assert-plus: 1.0.0
+ core-util-is: 1.0.2
+ extsprintf: 1.3.0
+
+ viem@2.45.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76):
+ dependencies:
+ '@noble/curves': 1.9.1
+ '@noble/hashes': 1.8.0
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76)
+ isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))
+ ox: 0.11.3(typescript@5.9.3)(zod@3.25.76)
+ ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+
+ walker@1.0.8:
+ dependencies:
+ makeerror: 1.0.12
+
+ web3-bzz@1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@types/node': 12.20.55
+ got: 12.1.0
+ swarm-js: 0.1.42(bufferutil@4.1.0)(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.8.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:
+ dependencies:
+ util: 0.12.5
+ web3-core-helpers: 1.10.4
+ web3-providers-http: 1.10.4
+ 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:
+ dependencies:
+ '@types/bn.js': 5.2.0
+ '@types/node': 12.20.55
+ bignumber.js: 9.3.1
+ web3-core-helpers: 1.10.4
+ web3-core-method: 1.10.4
+ web3-core-requestmanager: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-eth-abi@1.10.4:
+ dependencies:
+ '@ethersproject/abi': 5.8.0
+ web3-utils: 1.10.4
+
+ web3-eth-accounts@1.10.4:
+ 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
+ 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:
+ dependencies:
+ '@types/bn.js': 5.2.0
+ web3-core: 1.10.4
+ 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:
+ dependencies:
+ content-hash: 2.5.2
+ eth-ens-namehash: 2.0.8
+ web3-core: 1.10.4
+ web3-core-helpers: 1.10.4
+ web3-core-promievent: 1.10.4
+ web3-eth-abi: 1.10.4
+ web3-eth-contract: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-eth-iban@1.10.4:
+ dependencies:
+ bn.js: 5.2.2
+ web3-utils: 1.10.4
+
+ web3-eth-personal@1.10.4:
+ dependencies:
+ '@types/node': 12.20.55
+ web3-core: 1.10.4
+ web3-core-helpers: 1.10.4
+ web3-core-method: 1.10.4
+ web3-net: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-eth@1.10.4:
+ dependencies:
+ web3-core: 1.10.4
+ 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
+ web3-eth-contract: 1.10.4
+ web3-eth-ens: 1.10.4
+ web3-eth-iban: 1.10.4
+ web3-eth-personal: 1.10.4
+ web3-net: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-net@1.10.4:
+ dependencies:
+ web3-core: 1.10.4
+ web3-core-method: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-providers-http@1.10.4:
+ dependencies:
+ abortcontroller-polyfill: 1.7.8
+ cross-fetch: 4.1.0
+ 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:
+ dependencies:
+ web3-core: 1.10.4
+ web3-core-method: 1.10.4
+ web3-core-subscriptions: 1.10.4
+ web3-net: 1.10.4
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ web3-utils@1.10.4:
+ dependencies:
+ '@ethereumjs/util': 8.1.0
+ bn.js: 5.2.2
+ ethereum-bloom-filters: 1.2.0
+ ethereum-cryptography: 2.2.1
+ 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.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ web3-bzz: 1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ web3-core: 1.10.4
+ web3-eth: 1.10.4
+ web3-eth-personal: 1.10.4
+ web3-net: 1.10.4
+ web3-shh: 1.10.4
+ web3-utils: 1.10.4
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - utf-8-validate
+
+ webidl-conversions@3.0.1: {}
+
+ websocket@1.0.35:
+ dependencies:
+ bufferutil: 4.1.0
+ 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-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which-boxed-primitive@1.1.1:
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+
+ which-builtin-type@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.2
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.20
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+
+ which-module@1.0.0: {}
+
+ which-typed-array@1.1.20:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ widest-line@3.1.0:
+ dependencies:
+ string-width: 4.2.3
+
+ wif@5.0.0:
+ dependencies:
+ bs58check: 4.0.0
+
+ window-size@0.2.0: {}
+
+ winston-transport@4.9.0:
+ dependencies:
+ logform: 2.7.0
+ readable-stream: 3.6.2
+ triple-beam: 1.4.1
+
+ winston@3.19.0:
+ dependencies:
+ '@colors/colors': 1.6.0
+ '@dabh/diagnostics': 2.0.8
+ async: 3.2.6
+ is-stream: 2.0.1
+ logform: 2.7.0
+ one-time: 1.0.0
+ readable-stream: 3.6.2
+ safe-stable-stringify: 2.5.0
+ stack-trace: 0.0.10
+ triple-beam: 1.4.1
+ winston-transport: 4.9.0
+
+ word-wrap@1.2.5: {}
+
+ wordwrapjs@4.0.1:
+ dependencies:
+ reduce-flatten: 2.0.0
+ typical: 5.2.0
+
+ workerpool@6.5.1: {}
+
+ wrap-ansi@2.1.0:
+ dependencies:
+ string-width: 1.0.2
+ strip-ansi: 3.0.1
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ write-file-atomic@4.0.2:
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+
+ ws@3.3.3(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ async-limiter: 1.0.1
+ safe-buffer: 5.1.2
+ ultron: 1.1.1
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
+ xhr-request-promise@0.1.3:
+ dependencies:
+ xhr-request: 1.1.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
+
+ xhr@2.6.0:
+ dependencies:
+ global: 4.4.0
+ is-function: 1.0.2
+ parse-headers: 2.0.6
+ xtend: 4.0.2
+
+ xtend@4.0.2: {}
+
+ y18n@3.2.2: {}
+
+ y18n@5.0.8: {}
+
+ yaeti@0.0.6: {}
+
+ yallist@3.1.1: {}
+
+ yargs-parser@2.4.1:
+ dependencies:
+ camelcase: 3.0.0
+ lodash.assign: 4.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@16.2.0:
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.2.0
+ 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
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yargs@4.8.1:
+ dependencies:
+ cliui: 3.2.0
+ decamelize: 1.2.0
+ get-caller-file: 1.0.3
+ lodash.assign: 4.2.0
+ os-locale: 1.4.0
+ read-pkg-up: 1.0.1
+ require-directory: 2.1.1
+ require-main-filename: 1.0.1
+ set-blocking: 2.0.0
+ string-width: 1.0.2
+ which-module: 1.0.0
+ window-size: 0.2.0
+ y18n: 3.2.2
+ yargs-parser: 2.4.1
+
+ yn@3.1.1: {}
+
+ yocto-queue@0.1.0: {}
+
+ yoga-layout-prebuilt@1.10.0:
+ dependencies:
+ '@types/yoga-layout': 1.9.2
+
+ zksync-ethers@5.11.1(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)):
+ dependencies:
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ zksync-web3@0.14.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)):
+ dependencies:
+ ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+
+ zod@3.25.76: {}
diff --git a/examples/oft-main/programs/endpoint-mock/Cargo.toml b/examples/oft-main/programs/endpoint-mock/Cargo.toml
new file mode 100644
index 0000000000..d886ecb0e6
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/Cargo.toml
@@ -0,0 +1,21 @@
+[package]
+name = "endpoint-mock"
+version = "0.1.0"
+description = "Endpoint Mock"
+edition = "2021"
+
+[lib]
+crate-type = ["cdylib", "lib"]
+name = "endpoint"
+
+[features]
+no-entrypoint = []
+no-idl = []
+no-log-ix-name = []
+cpi = ["no-entrypoint"]
+default = []
+idl-build = ["anchor-lang/idl-build"]
+
+[dependencies]
+anchor-lang = { version = "0.31.1", features = ["event-cpi"] }
+cpi-helper = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "34321ac15e47e0dafd25d66659e2f3d1b9b6db8f" }
diff --git a/examples/oft-main/programs/endpoint-mock/Xargo.toml b/examples/oft-main/programs/endpoint-mock/Xargo.toml
new file mode 100644
index 0000000000..475fb71ed1
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/Xargo.toml
@@ -0,0 +1,2 @@
+[target.bpfel-unknown-unknown.dependencies.std]
+features = []
diff --git a/examples/oft-main/programs/endpoint-mock/src/instructions/mod.rs b/examples/oft-main/programs/endpoint-mock/src/instructions/mod.rs
new file mode 100644
index 0000000000..7e79a19da7
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/instructions/mod.rs
@@ -0,0 +1,3 @@
+pub mod oapp;
+
+pub use oapp::*;
diff --git a/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/mod.rs b/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/mod.rs
new file mode 100644
index 0000000000..54d7fe2130
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/mod.rs
@@ -0,0 +1,3 @@
+pub mod register_oapp;
+
+pub use register_oapp::*;
diff --git a/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/register_oapp.rs b/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/register_oapp.rs
new file mode 100644
index 0000000000..5da8dfd3ee
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/instructions/oapp/register_oapp.rs
@@ -0,0 +1,35 @@
+use crate::*;
+
+use cpi_helper::CpiContext;
+
+#[event_cpi]
+#[derive(CpiContext, Accounts)]
+#[instruction(params: RegisterOAppParams)]
+pub struct RegisterOApp<'info> {
+ #[account(mut)]
+ pub payer: Signer<'info>,
+ /// The PDA of the OApp
+ pub oapp: Signer<'info>,
+ #[account(
+ init,
+ payer = payer,
+ space = 8 + OAppRegistry::INIT_SPACE,
+ seeds = [OAPP_SEED, oapp.key.as_ref()],
+ bump
+ )]
+ pub oapp_registry: Account<'info, OAppRegistry>,
+ pub system_program: Program<'info, System>,
+}
+
+impl RegisterOApp<'_> {
+ pub fn apply(ctx: &mut Context, params: &RegisterOAppParams) -> Result<()> {
+ ctx.accounts.oapp_registry.delegate = params.delegate;
+ ctx.accounts.oapp_registry.bump = ctx.bumps.oapp_registry;
+ Ok(())
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct RegisterOAppParams {
+ pub delegate: Pubkey,
+}
diff --git a/examples/oft-main/programs/endpoint-mock/src/lib.rs b/examples/oft-main/programs/endpoint-mock/src/lib.rs
new file mode 100644
index 0000000000..2afd6555e6
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/lib.rs
@@ -0,0 +1,19 @@
+pub mod instructions;
+pub mod state;
+
+use anchor_lang::prelude::*;
+use instructions::*;
+use state::*;
+
+declare_id!("6xmPjYnXyxz36xcKkv2zCrZc72LK5hQ9xzY3EjeZ59MV");
+
+pub const OAPP_SEED: &[u8] = b"OApp";
+
+#[program]
+pub mod endpoint {
+ use super::*;
+
+ pub fn register_oapp(mut ctx: Context, params: RegisterOAppParams) -> Result<()> {
+ RegisterOApp::apply(&mut ctx, ¶ms)
+ }
+}
diff --git a/examples/oft-main/programs/endpoint-mock/src/state/endpoint.rs b/examples/oft-main/programs/endpoint-mock/src/state/endpoint.rs
new file mode 100644
index 0000000000..42ff5cbd63
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/state/endpoint.rs
@@ -0,0 +1,8 @@
+use crate::*;
+
+#[account]
+#[derive(InitSpace)]
+pub struct OAppRegistry {
+ pub delegate: Pubkey,
+ pub bump: u8,
+}
diff --git a/examples/oft-main/programs/endpoint-mock/src/state/mod.rs b/examples/oft-main/programs/endpoint-mock/src/state/mod.rs
new file mode 100644
index 0000000000..86edb11f43
--- /dev/null
+++ b/examples/oft-main/programs/endpoint-mock/src/state/mod.rs
@@ -0,0 +1,3 @@
+pub mod endpoint;
+
+pub use endpoint::*;
diff --git a/examples/oft-main/programs/oft/Cargo.toml b/examples/oft-main/programs/oft/Cargo.toml
new file mode 100644
index 0000000000..b6c491c859
--- /dev/null
+++ b/examples/oft-main/programs/oft/Cargo.toml
@@ -0,0 +1,24 @@
+[package]
+name = "oft"
+version = "0.1.0"
+description = "Created with Anchor"
+edition = "2021"
+
+[lib]
+crate-type = ["cdylib", "lib"]
+name = "oft"
+
+[features]
+no-entrypoint = []
+no-idl = []
+no-log-ix-name = []
+cpi = ["no-entrypoint"]
+default = []
+idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build", "oapp/idl-build"]
+
+[dependencies]
+anchor-lang = { version = "0.31.1", features = ["init-if-needed"] }
+anchor-spl = "0.31.1"
+oapp = { package = "oapp-latest", git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "c09287a" }
+utils = { package = "utils-latest", git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "c09287a" }
+solana-helper = "0.1.0"
\ No newline at end of file
diff --git a/examples/oft-main/programs/oft/Xargo.toml b/examples/oft-main/programs/oft/Xargo.toml
new file mode 100644
index 0000000000..475fb71ed1
--- /dev/null
+++ b/examples/oft-main/programs/oft/Xargo.toml
@@ -0,0 +1,2 @@
+[target.bpfel-unknown-unknown.dependencies.std]
+features = []
diff --git a/examples/oft-main/programs/oft/build.rs b/examples/oft-main/programs/oft/build.rs
new file mode 100644
index 0000000000..8859933ee3
--- /dev/null
+++ b/examples/oft-main/programs/oft/build.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("cargo:rerun-if-env-changed=OFT_ID");
+}
diff --git a/examples/oft-main/programs/oft/src/compose_msg_codec.rs b/examples/oft-main/programs/oft/src/compose_msg_codec.rs
new file mode 100644
index 0000000000..7716b37325
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/compose_msg_codec.rs
@@ -0,0 +1,51 @@
+const NONCE_OFFSET: usize = 0;
+const SRC_EID_OFFSET: usize = 8;
+const AMOUNT_LD_OFFSET: usize = 12;
+const COMPOSE_FROM_OFFSET: usize = 20;
+const COMPOSE_MSG_OFFSET: usize = 52;
+
+pub fn encode(
+ nonce: u64,
+ src_eid: u32,
+ amount_ld: u64,
+ compose_msg: &Vec, // [composeFrom][composeMsg]
+) -> Vec {
+ let mut encoded = Vec::with_capacity(20 + compose_msg.len()); // 8 + 4 + 8
+ encoded.extend_from_slice(&nonce.to_be_bytes());
+ encoded.extend_from_slice(&src_eid.to_be_bytes());
+ encoded.extend_from_slice(&amount_ld.to_be_bytes());
+ encoded.extend_from_slice(&compose_msg);
+ encoded
+}
+
+pub fn nonce(message: &[u8]) -> u64 {
+ let mut nonce_bytes = [0; 8];
+ nonce_bytes.copy_from_slice(&message[NONCE_OFFSET..SRC_EID_OFFSET]);
+ u64::from_be_bytes(nonce_bytes)
+}
+
+pub fn src_eid(message: &[u8]) -> u32 {
+ let mut src_eid_bytes = [0; 4];
+ src_eid_bytes.copy_from_slice(&message[SRC_EID_OFFSET..AMOUNT_LD_OFFSET]);
+ u32::from_be_bytes(src_eid_bytes)
+}
+
+pub fn amount_ld(message: &[u8]) -> u64 {
+ let mut amount_ld_bytes = [0; 8];
+ amount_ld_bytes.copy_from_slice(&message[AMOUNT_LD_OFFSET..COMPOSE_FROM_OFFSET]);
+ u64::from_be_bytes(amount_ld_bytes)
+}
+
+pub fn compose_from(message: &[u8]) -> [u8; 32] {
+ let mut compose_from = [0; 32];
+ compose_from.copy_from_slice(&message[COMPOSE_FROM_OFFSET..COMPOSE_MSG_OFFSET]);
+ compose_from
+}
+
+pub fn compose_msg(message: &[u8]) -> Vec {
+ if message.len() > COMPOSE_MSG_OFFSET {
+ message[COMPOSE_MSG_OFFSET..].to_vec()
+ } else {
+ Vec::new()
+ }
+}
diff --git a/examples/oft-main/programs/oft/src/errors.rs b/examples/oft-main/programs/oft/src/errors.rs
new file mode 100644
index 0000000000..92d764507b
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/errors.rs
@@ -0,0 +1,14 @@
+use anchor_lang::prelude::error_code;
+
+#[error_code]
+pub enum OFTError {
+ Unauthorized,
+ InvalidSender,
+ InvalidDecimals,
+ SlippageExceeded,
+ InvalidTokenDest,
+ RateLimitExceeded,
+ InvalidFee,
+ InvalidMintAuthority,
+ Paused,
+}
diff --git a/examples/oft-main/programs/oft/src/events.rs b/examples/oft-main/programs/oft/src/events.rs
new file mode 100644
index 0000000000..367df4572f
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/events.rs
@@ -0,0 +1,18 @@
+use crate::*;
+
+#[event]
+pub struct OFTSent {
+ pub guid: [u8; 32],
+ pub dst_eid: u32,
+ pub from: Pubkey,
+ pub amount_sent_ld: u64,
+ pub amount_received_ld: u64,
+}
+
+#[event]
+pub struct OFTReceived {
+ pub guid: [u8; 32],
+ pub src_eid: u32,
+ pub to: Pubkey,
+ pub amount_received_ld: u64,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/init_oft.rs b/examples/oft-main/programs/oft/src/instructions/init_oft.rs
new file mode 100644
index 0000000000..95ba9966f7
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/init_oft.rs
@@ -0,0 +1,86 @@
+use crate::*;
+use anchor_spl::token_interface::{Mint, TokenAccount, TokenInterface};
+use oapp::endpoint::{instructions::RegisterOAppParams, ID as ENDPOINT_ID};
+
+#[derive(Accounts)]
+pub struct InitOFT<'info> {
+ #[account(mut)]
+ pub payer: Signer<'info>,
+ #[account(
+ init,
+ payer = payer,
+ space = 8 + OFTStore::INIT_SPACE,
+ seeds = [OFT_SEED, token_escrow.key().as_ref()],
+ bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ init,
+ payer = payer,
+ space = 8 + LzReceiveTypesAccounts::INIT_SPACE,
+ seeds = [LZ_RECEIVE_TYPES_SEED, oft_store.key().as_ref()],
+ bump
+ )]
+ pub lz_receive_types_accounts: Account<'info, LzReceiveTypesAccounts>,
+ #[account(mint::token_program = token_program)]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+ #[account(
+ init,
+ payer = payer,
+ token::authority = oft_store,
+ token::mint = token_mint,
+ token::token_program = token_program,
+ )]
+ pub token_escrow: InterfaceAccount<'info, TokenAccount>,
+ pub token_program: Interface<'info, TokenInterface>,
+ pub system_program: Program<'info, System>,
+}
+
+impl InitOFT<'_> {
+ pub fn apply(ctx: &mut Context, params: &InitOFTParams) -> Result<()> {
+ // Initialize the oft_store
+ ctx.accounts.oft_store.oft_type = params.oft_type.clone();
+ require!(
+ ctx.accounts.token_mint.decimals >= params.shared_decimals,
+ OFTError::InvalidDecimals
+ );
+ ctx.accounts.oft_store.ld2sd_rate =
+ 10u64.pow((ctx.accounts.token_mint.decimals - params.shared_decimals) as u32);
+ ctx.accounts.oft_store.token_mint = ctx.accounts.token_mint.key();
+ ctx.accounts.oft_store.token_escrow = ctx.accounts.token_escrow.key();
+ ctx.accounts.oft_store.endpoint_program =
+ if let Some(endpoint_program) = params.endpoint_program {
+ endpoint_program
+ } else {
+ ENDPOINT_ID
+ };
+ ctx.accounts.oft_store.bump = ctx.bumps.oft_store;
+ ctx.accounts.oft_store.tvl_ld = 0;
+ ctx.accounts.oft_store.admin = params.admin;
+ ctx.accounts.oft_store.default_fee_bps = 0;
+ ctx.accounts.oft_store.paused = false;
+ ctx.accounts.oft_store.pauser = None;
+ ctx.accounts.oft_store.unpauser = None;
+
+ // Initialize the lz_receive_types_accounts
+ ctx.accounts.lz_receive_types_accounts.oft_store = ctx.accounts.oft_store.key();
+ ctx.accounts.lz_receive_types_accounts.token_mint = ctx.accounts.token_mint.key();
+
+ // Register the oapp
+ oapp::endpoint_cpi::register_oapp(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.accounts.oft_store.key(),
+ ctx.remaining_accounts,
+ &[OFT_SEED, ctx.accounts.token_escrow.key().as_ref(), &[ctx.bumps.oft_store]],
+ RegisterOAppParams { delegate: params.admin },
+ )
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct InitOFTParams {
+ pub oft_type: OFTType,
+ pub admin: Pubkey,
+ pub shared_decimals: u8,
+ pub endpoint_program: Option,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/lz_receive.rs b/examples/oft-main/programs/oft/src/instructions/lz_receive.rs
new file mode 100644
index 0000000000..2059d7adfb
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/lz_receive.rs
@@ -0,0 +1,183 @@
+use crate::*;
+use anchor_lang::solana_program;
+use anchor_spl::{
+ associated_token::AssociatedToken,
+ token_2022::spl_token_2022::{self, solana_program::program_option::COption},
+ token_interface::{self, Mint, TokenAccount, TokenInterface, TransferChecked},
+};
+use oapp::endpoint::{
+ cpi::accounts::Clear,
+ instructions::{ClearParams, SendComposeParams},
+ ConstructCPIContext,
+};
+
+#[event_cpi]
+#[derive(Accounts)]
+#[instruction(params: LzReceiveParams)]
+pub struct LzReceive<'info> {
+ #[account(mut)]
+ pub payer: Signer<'info>,
+ #[account(
+ mut,
+ seeds = [
+ PEER_SEED,
+ oft_store.key().as_ref(),
+ ¶ms.src_eid.to_be_bytes()
+ ],
+ bump = peer.bump,
+ constraint = peer.peer_address == params.sender @OFTError::InvalidSender
+ )]
+ pub peer: Account<'info, PeerConfig>,
+ #[account(
+ mut,
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ mut,
+ address = oft_store.token_escrow,
+ token::authority = oft_store,
+ token::mint = token_mint,
+ token::token_program = token_program
+ )]
+ pub token_escrow: InterfaceAccount<'info, TokenAccount>,
+ /// CHECK: the wallet address to receive the token
+ #[account(address = Pubkey::from(msg_codec::send_to(¶ms.message)) @OFTError::InvalidTokenDest)]
+ pub to_address: AccountInfo<'info>,
+ #[account(
+ init_if_needed,
+ payer = payer,
+ associated_token::mint = token_mint,
+ associated_token::authority = to_address,
+ associated_token::token_program = token_program
+ )]
+ pub token_dest: InterfaceAccount<'info, TokenAccount>,
+ #[account(
+ mut,
+ address = oft_store.token_mint,
+ mint::token_program = token_program
+ )]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+ // Only used for native mint, the mint authority can be:
+ // 1. a spl-token multisig account with oft_store as one of the signers, and the quorum **MUST** be 1-of-n. (recommended)
+ // 2. or the mint_authority is oft_store itself.
+ #[account(constraint = token_mint.mint_authority == COption::Some(mint_authority.key()) @OFTError::InvalidMintAuthority)]
+ pub mint_authority: Option>,
+ pub token_program: Interface<'info, TokenInterface>,
+ pub associated_token_program: Program<'info, AssociatedToken>,
+ pub system_program: Program<'info, System>,
+}
+
+impl LzReceive<'_> {
+ pub fn apply(ctx: &mut Context, params: &LzReceiveParams) -> Result<()> {
+ require!(!ctx.accounts.oft_store.paused, OFTError::Paused);
+
+ let oft_store_seed = ctx.accounts.token_escrow.key();
+ let seeds: &[&[u8]] = &[OFT_SEED, oft_store_seed.as_ref(), &[ctx.accounts.oft_store.bump]];
+
+ // Validate and clear the payload
+ let accounts_for_clear = &ctx.remaining_accounts[0..Clear::MIN_ACCOUNTS_LEN];
+ let _ = oapp::endpoint_cpi::clear(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.accounts.oft_store.key(),
+ accounts_for_clear,
+ seeds,
+ ClearParams {
+ receiver: ctx.accounts.oft_store.key(),
+ src_eid: params.src_eid,
+ sender: params.sender,
+ nonce: params.nonce,
+ guid: params.guid,
+ message: params.message.clone(),
+ },
+ )?;
+
+ // Convert the amount from sd to ld
+ let amount_sd = msg_codec::amount_sd(¶ms.message);
+ let mut amount_received_ld = ctx.accounts.oft_store.sd2ld(amount_sd);
+
+ // Consume the inbound rate limiter
+ if let Some(rate_limiter) = ctx.accounts.peer.inbound_rate_limiter.as_mut() {
+ rate_limiter.try_consume(amount_received_ld)?;
+ }
+ // Refill the outbound rate limiter
+ if let Some(rate_limiter) = ctx.accounts.peer.outbound_rate_limiter.as_mut() {
+ rate_limiter.refill(amount_received_ld)?;
+ }
+
+ if ctx.accounts.oft_store.oft_type == OFTType::Adapter {
+ // unlock from escrow
+ ctx.accounts.oft_store.tvl_ld -= amount_received_ld;
+ token_interface::transfer_checked(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ TransferChecked {
+ from: ctx.accounts.token_escrow.to_account_info(),
+ mint: ctx.accounts.token_mint.to_account_info(),
+ to: ctx.accounts.token_dest.to_account_info(),
+ authority: ctx.accounts.oft_store.to_account_info(),
+ },
+ )
+ .with_signer(&[&seeds]),
+ amount_received_ld,
+ ctx.accounts.token_mint.decimals,
+ )?;
+
+ // update the amount_received_ld with the post transfer fee amount
+ amount_received_ld =
+ get_post_fee_amount_ld(&ctx.accounts.token_mint, amount_received_ld)?
+ } else if let Some(mint_authority) = &ctx.accounts.mint_authority {
+ // Native type
+ // mint
+ let ix = spl_token_2022::instruction::mint_to(
+ ctx.accounts.token_program.key,
+ &ctx.accounts.token_mint.key(),
+ &ctx.accounts.token_dest.key(),
+ mint_authority.key,
+ &[&ctx.accounts.oft_store.key()],
+ amount_received_ld,
+ )?;
+ solana_program::program::invoke_signed(
+ &ix,
+ &[
+ ctx.accounts.token_dest.to_account_info(),
+ ctx.accounts.token_mint.to_account_info(),
+ mint_authority.to_account_info(),
+ ctx.accounts.oft_store.to_account_info(),
+ ],
+ &[&seeds],
+ )?;
+ } else {
+ return Err(OFTError::InvalidMintAuthority.into());
+ }
+
+ if let Some(message) = msg_codec::compose_msg(¶ms.message) {
+ oapp::endpoint_cpi::send_compose(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.accounts.oft_store.key(),
+ &ctx.remaining_accounts[Clear::MIN_ACCOUNTS_LEN..],
+ seeds,
+ SendComposeParams {
+ to: ctx.accounts.to_address.key(),
+ guid: params.guid,
+ index: 0, // only 1 compose msg per lzReceive
+ message: compose_msg_codec::encode(
+ params.nonce,
+ params.src_eid,
+ amount_received_ld,
+ &message,
+ ),
+ },
+ )?;
+ }
+
+ emit_cpi!(OFTReceived {
+ guid: params.guid,
+ src_eid: params.src_eid,
+ to: ctx.accounts.to_address.key(),
+ amount_received_ld,
+ });
+ Ok(())
+ }
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/lz_receive_types.rs b/examples/oft-main/programs/oft/src/instructions/lz_receive_types.rs
new file mode 100644
index 0000000000..a63ee61334
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/lz_receive_types.rs
@@ -0,0 +1,139 @@
+use crate::*;
+use anchor_lang::solana_program;
+use anchor_spl::{
+ associated_token::{get_associated_token_address_with_program_id, ID as ASSOCIATED_TOKEN_ID},
+ token_2022::spl_token_2022::solana_program::program_option::COption,
+ token_interface::Mint,
+};
+use oapp::endpoint_cpi::LzAccount;
+
+#[derive(Accounts)]
+pub struct LzReceiveTypes<'info> {
+ #[account(
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(address = oft_store.token_mint)]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+}
+
+// account structure
+// account 0 - payer (executor)
+// account 1 - peer
+// account 2 - oft store
+// account 3 - token escrow
+// account 4 - to address / wallet address
+// account 5 - token dest
+// account 6 - token mint
+// account 7 - mint authority (optional)
+// account 8 - token program
+// account 9 - associated token program
+// account 10 - system program
+// account 11 - event authority
+// account 12 - this program
+// account remaining accounts
+// 0..9 - accounts for clear
+// 9..16 - accounts for compose
+impl LzReceiveTypes<'_> {
+ pub fn apply(
+ ctx: &Context,
+ params: &LzReceiveParams,
+ ) -> Result> {
+ let (peer, _) = Pubkey::find_program_address(
+ &[PEER_SEED, ctx.accounts.oft_store.key().as_ref(), ¶ms.src_eid.to_be_bytes()],
+ ctx.program_id,
+ );
+
+ // account 0..3
+ let mut accounts = vec![
+ LzAccount { pubkey: Pubkey::default(), is_signer: true, is_writable: true }, // 0
+ LzAccount { pubkey: peer, is_signer: false, is_writable: true }, // 1
+ LzAccount { pubkey: ctx.accounts.oft_store.key(), is_signer: false, is_writable: true }, // 2
+ LzAccount {
+ pubkey: ctx.accounts.oft_store.token_escrow.key(),
+ is_signer: false,
+ is_writable: true,
+ }, // 3
+ ];
+
+ // account 4..9
+ let to_address = Pubkey::from(msg_codec::send_to(¶ms.message));
+ let token_program = ctx.accounts.token_mint.to_account_info().owner;
+ let token_dest = get_associated_token_address_with_program_id(
+ &to_address,
+ &ctx.accounts.oft_store.token_mint,
+ token_program,
+ );
+ let mint_authority =
+ if let COption::Some(mint_authority) = ctx.accounts.token_mint.mint_authority {
+ mint_authority
+ } else {
+ ctx.program_id.key()
+ };
+ accounts.extend_from_slice(&[
+ LzAccount { pubkey: to_address, is_signer: false, is_writable: false }, // 4
+ LzAccount { pubkey: token_dest, is_signer: false, is_writable: true }, // 5
+ LzAccount {
+ pubkey: ctx.accounts.token_mint.key(),
+ is_signer: false,
+ is_writable: true,
+ }, // 6
+ LzAccount { pubkey: mint_authority, is_signer: false, is_writable: false }, // 7
+ LzAccount { pubkey: *token_program, is_signer: false, is_writable: false }, // 8
+ LzAccount { pubkey: ASSOCIATED_TOKEN_ID, is_signer: false, is_writable: false }, // 9
+ ]);
+
+ // account 10..12
+ let (event_authority_account, _) =
+ Pubkey::find_program_address(&[oapp::endpoint_cpi::EVENT_SEED], &ctx.program_id);
+ accounts.extend_from_slice(&[
+ LzAccount {
+ pubkey: solana_program::system_program::ID,
+ is_signer: false,
+ is_writable: false,
+ }, // 10
+ LzAccount { pubkey: event_authority_account, is_signer: false, is_writable: false }, // 11
+ LzAccount { pubkey: ctx.program_id.key(), is_signer: false, is_writable: false }, // 12
+ ]);
+
+ let endpoint_program = ctx.accounts.oft_store.endpoint_program;
+ // remaining accounts 0..9
+ let accounts_for_clear = oapp::endpoint_cpi::get_accounts_for_clear(
+ endpoint_program,
+ &ctx.accounts.oft_store.key(),
+ params.src_eid,
+ ¶ms.sender,
+ params.nonce,
+ );
+ accounts.extend(accounts_for_clear);
+
+ // remaining accounts 9..16
+ if let Some(message) = msg_codec::compose_msg(¶ms.message) {
+ let amount_sd = msg_codec::amount_sd(¶ms.message);
+ let amount_ld = ctx.accounts.oft_store.sd2ld(amount_sd);
+ let amount_received_ld = if ctx.accounts.oft_store.oft_type == OFTType::Native {
+ amount_ld
+ } else {
+ get_post_fee_amount_ld(&ctx.accounts.token_mint, amount_ld)?
+ };
+
+ let accounts_for_composing = oapp::endpoint_cpi::get_accounts_for_send_compose(
+ endpoint_program,
+ &ctx.accounts.oft_store.key(),
+ &to_address,
+ ¶ms.guid,
+ 0,
+ &compose_msg_codec::encode(
+ params.nonce,
+ params.src_eid,
+ amount_received_ld,
+ &message,
+ ),
+ );
+ accounts.extend(accounts_for_composing);
+ }
+
+ Ok(accounts)
+ }
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/mod.rs b/examples/oft-main/programs/oft/src/instructions/mod.rs
new file mode 100644
index 0000000000..7030177db4
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/mod.rs
@@ -0,0 +1,21 @@
+pub mod init_oft;
+pub mod lz_receive;
+pub mod lz_receive_types;
+pub mod quote_oft;
+pub mod quote_send;
+pub mod send;
+pub mod set_oft_config;
+pub mod set_pause;
+pub mod set_peer_config;
+pub mod withdraw_fee;
+
+pub use init_oft::*;
+pub use lz_receive::*;
+pub use lz_receive_types::*;
+pub use quote_oft::*;
+pub use quote_send::*;
+pub use send::*;
+pub use set_oft_config::*;
+pub use set_pause::*;
+pub use set_peer_config::*;
+pub use withdraw_fee::*;
diff --git a/examples/oft-main/programs/oft/src/instructions/quote_oft.rs b/examples/oft-main/programs/oft/src/instructions/quote_oft.rs
new file mode 100644
index 0000000000..aba5707a73
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/quote_oft.rs
@@ -0,0 +1,92 @@
+use crate::*;
+use anchor_spl::token_interface::Mint;
+
+#[derive(Accounts)]
+#[instruction(params: QuoteOFTParams)]
+pub struct QuoteOFT<'info> {
+ #[account(
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ seeds = [
+ PEER_SEED,
+ oft_store.key().as_ref(),
+ ¶ms.dst_eid.to_be_bytes()
+ ],
+ bump = peer.bump
+ )]
+ pub peer: Account<'info, PeerConfig>,
+ #[account(address = oft_store.token_mint)]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+}
+
+impl QuoteOFT<'_> {
+ pub fn apply(ctx: &Context, params: &QuoteOFTParams) -> Result {
+ require!(!ctx.accounts.oft_store.paused, OFTError::Paused);
+
+ let (amount_sent_ld, amount_received_ld, oft_fee_ld) = compute_fee_and_adjust_amount(
+ params.amount_ld,
+ &ctx.accounts.oft_store,
+ &ctx.accounts.token_mint,
+ ctx.accounts.peer.fee_bps,
+ )?;
+ require!(amount_received_ld >= params.min_amount_ld, OFTError::SlippageExceeded);
+
+ let oft_limits = OFTLimits { min_amount_ld: 0, max_amount_ld: 0xffffffffffffffff };
+ let mut oft_fee_details = if amount_received_ld + oft_fee_ld < amount_sent_ld {
+ vec![OFTFeeDetail {
+ fee_amount_ld: amount_sent_ld - oft_fee_ld - amount_received_ld,
+ description: "Token2022 Transfer Fee".to_string(),
+ }]
+ } else {
+ vec![]
+ };
+ // cross chain fee
+ if oft_fee_ld > 0 {
+ oft_fee_details.push(OFTFeeDetail {
+ fee_amount_ld: oft_fee_ld,
+ description: "Cross Chain Fee".to_string(),
+ });
+ }
+ let oft_receipt = OFTReceipt { amount_sent_ld, amount_received_ld };
+ Ok(QuoteOFTResult { oft_limits, oft_fee_details, oft_receipt })
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct QuoteOFTParams {
+ pub dst_eid: u32,
+ pub to: [u8; 32],
+ pub amount_ld: u64,
+ pub min_amount_ld: u64,
+ pub options: Vec,
+ pub compose_msg: Option>,
+ pub pay_in_lz_token: bool,
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct QuoteOFTResult {
+ pub oft_limits: OFTLimits,
+ pub oft_fee_details: Vec,
+ pub oft_receipt: OFTReceipt,
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct OFTFeeDetail {
+ pub fee_amount_ld: u64,
+ pub description: String,
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct OFTReceipt {
+ pub amount_sent_ld: u64,
+ pub amount_received_ld: u64,
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct OFTLimits {
+ pub min_amount_ld: u64,
+ pub max_amount_ld: u64,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/quote_send.rs b/examples/oft-main/programs/oft/src/instructions/quote_send.rs
new file mode 100644
index 0000000000..efedefb9b4
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/quote_send.rs
@@ -0,0 +1,193 @@
+use crate::*;
+use oapp::endpoint::{instructions::QuoteParams, MessagingFee};
+
+use anchor_spl::{
+ token_2022::spl_token_2022::{
+ extension::{
+ transfer_fee::{TransferFee, TransferFeeConfig},
+ BaseStateWithExtensions, StateWithExtensions,
+ },
+ state::Mint as MintState,
+ },
+ token_interface::Mint,
+};
+
+#[derive(Accounts)]
+#[instruction(params: QuoteSendParams)]
+pub struct QuoteSend<'info> {
+ #[account(
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ seeds = [
+ PEER_SEED,
+ oft_store.key().as_ref(),
+ ¶ms.dst_eid.to_be_bytes()
+ ],
+ bump = peer.bump
+ )]
+ pub peer: Account<'info, PeerConfig>,
+ #[account(address = oft_store.token_mint)]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+}
+
+impl QuoteSend<'_> {
+ pub fn apply(ctx: &Context, params: &QuoteSendParams) -> Result {
+ require!(!ctx.accounts.oft_store.paused, OFTError::Paused);
+
+ let (_, amount_received_ld, _) = compute_fee_and_adjust_amount(
+ params.amount_ld,
+ &ctx.accounts.oft_store,
+ &ctx.accounts.token_mint,
+ ctx.accounts.peer.fee_bps,
+ )?;
+ require!(amount_received_ld >= params.min_amount_ld, OFTError::SlippageExceeded);
+
+ // calling endpoint cpi
+ oapp::endpoint_cpi::quote(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.remaining_accounts,
+ QuoteParams {
+ sender: ctx.accounts.oft_store.key(),
+ dst_eid: params.dst_eid,
+ receiver: ctx.accounts.peer.peer_address,
+ message: msg_codec::encode(
+ params.to,
+ amount_received_ld,
+ Pubkey::default(),
+ ¶ms.compose_msg,
+ ),
+ pay_in_lz_token: params.pay_in_lz_token,
+ options: ctx
+ .accounts
+ .peer
+ .enforced_options
+ .combine_options(¶ms.compose_msg, ¶ms.options)?,
+ },
+ )
+ }
+}
+
+pub fn compute_fee_and_adjust_amount(
+ amount_ld: u64,
+ oft_store: &OFTStore,
+ token_mint: &InterfaceAccount,
+ fee_bps: Option,
+) -> Result<(u64, u64, u64)> {
+ let (amount_sent_ld, amount_received_ld, oft_fee_ld) = if OFTType::Adapter == oft_store.oft_type
+ {
+ let mut amount_received_ld =
+ oft_store.remove_dust(get_post_fee_amount_ld(token_mint, amount_ld)?);
+ let amount_sent_ld = get_pre_fee_amount_ld(token_mint, amount_received_ld)?;
+
+ // remove the oft fee from the amount_received_ld
+ let oft_fee_ld = oft_store.remove_dust(calculate_fee(
+ amount_received_ld,
+ oft_store.default_fee_bps,
+ fee_bps,
+ ));
+ amount_received_ld -= oft_fee_ld;
+ (amount_sent_ld, amount_received_ld, oft_fee_ld)
+ } else {
+ // if it is Native OFT, there is no transfer fee
+ let amount_sent_ld = oft_store.remove_dust(amount_ld);
+ let oft_fee_ld = oft_store.remove_dust(calculate_fee(
+ amount_sent_ld,
+ oft_store.default_fee_bps,
+ fee_bps,
+ ));
+ let amount_received_ld = amount_sent_ld - oft_fee_ld;
+ (amount_sent_ld, amount_received_ld, oft_fee_ld)
+ };
+ Ok((amount_sent_ld, amount_received_ld, oft_fee_ld))
+}
+
+fn calculate_fee(pre_fee_amount: u64, default_fee_bps: u16, fee_bps: Option) -> u64 {
+ let final_fee_bps = if let Some(bps) = fee_bps { bps as u128 } else { default_fee_bps as u128 };
+ if final_fee_bps == 0 || pre_fee_amount == 0 {
+ 0
+ } else {
+ // pre_fee_amount * final_fee_bps / ONE_IN_BASIS_POINTS
+ let fee = (pre_fee_amount as u128) * final_fee_bps;
+ (fee / ONE_IN_BASIS_POINTS) as u64
+ }
+}
+
+pub fn get_post_fee_amount_ld(token_mint: &InterfaceAccount, amount_ld: u64) -> Result {
+ let token_mint_info = token_mint.to_account_info();
+ let token_mint_data = token_mint_info.try_borrow_data()?;
+ let token_mint_ext = StateWithExtensions::::unpack(&token_mint_data)?;
+ let post_amount_ld =
+ if let Ok(transfer_fee_config) = token_mint_ext.get_extension::() {
+ transfer_fee_config
+ .get_epoch_fee(Clock::get()?.epoch)
+ .calculate_post_fee_amount(amount_ld)
+ .ok_or(ProgramError::InvalidArgument)?
+ } else {
+ amount_ld
+ };
+ Ok(post_amount_ld)
+}
+
+// Calculate the amount_sent_ld necessary to receive amount_received_ld
+// Does *not* de-dust any inputs or outputs.
+fn get_pre_fee_amount_ld(token_mint: &InterfaceAccount, amount_ld: u64) -> Result {
+ let token_mint_info = token_mint.to_account_info();
+ let token_mint_data = token_mint_info.try_borrow_data()?;
+ let token_mint_ext = StateWithExtensions::::unpack(&token_mint_data)?;
+ let pre_amount_ld =
+ if let Ok(transfer_fee) = token_mint_ext.get_extension::() {
+ calculate_pre_fee_amount(transfer_fee.get_epoch_fee(Clock::get()?.epoch), amount_ld)
+ .ok_or(ProgramError::InvalidArgument)?
+ } else {
+ amount_ld
+ };
+ Ok(pre_amount_ld)
+}
+
+// DO NOT CHANGE THIS CODE!!!
+// bug reported on token2022: https://github.com/solana-labs/solana-program-library/pull/6704/files
+// copy code over as fix has not been published
+pub const MAX_FEE_BASIS_POINTS: u16 = 10_000;
+const ONE_IN_BASIS_POINTS: u128 = MAX_FEE_BASIS_POINTS as u128;
+fn calculate_pre_fee_amount(fee: &TransferFee, post_fee_amount: u64) -> Option {
+ let maximum_fee = u64::from(fee.maximum_fee);
+ let transfer_fee_basis_points = u16::from(fee.transfer_fee_basis_points) as u128;
+ match (transfer_fee_basis_points, post_fee_amount) {
+ // no fee, same amount
+ (0, _) => Some(post_fee_amount),
+ // 0 zero out, 0 in
+ (_, 0) => Some(0),
+ // 100%, cap at max fee
+ (ONE_IN_BASIS_POINTS, _) => maximum_fee.checked_add(post_fee_amount),
+ _ => {
+ let numerator = (post_fee_amount as u128).checked_mul(ONE_IN_BASIS_POINTS)?;
+ let denominator = ONE_IN_BASIS_POINTS.checked_sub(transfer_fee_basis_points)?;
+ let raw_pre_fee_amount = ceil_div(numerator, denominator)?;
+
+ if raw_pre_fee_amount.checked_sub(post_fee_amount as u128)? >= maximum_fee as u128 {
+ post_fee_amount.checked_add(maximum_fee)
+ } else {
+ // should return `None` if `pre_fee_amount` overflows
+ u64::try_from(raw_pre_fee_amount).ok()
+ }
+ },
+ }
+}
+
+fn ceil_div(numerator: u128, denominator: u128) -> Option {
+ numerator.checked_add(denominator)?.checked_sub(1)?.checked_div(denominator)
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct QuoteSendParams {
+ pub dst_eid: u32,
+ pub to: [u8; 32],
+ pub amount_ld: u64,
+ pub min_amount_ld: u64,
+ pub options: Vec,
+ pub compose_msg: Option>,
+ pub pay_in_lz_token: bool,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/send.rs b/examples/oft-main/programs/oft/src/instructions/send.rs
new file mode 100644
index 0000000000..4a839ca189
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/send.rs
@@ -0,0 +1,175 @@
+use crate::*;
+use anchor_spl::token_interface::{
+ self, Burn, Mint, TokenAccount, TokenInterface, TransferChecked,
+};
+use oapp::endpoint::{instructions::SendParams as EndpointSendParams, MessagingReceipt};
+
+#[event_cpi]
+#[derive(Accounts)]
+#[instruction(params: SendParams)]
+pub struct Send<'info> {
+ pub signer: Signer<'info>,
+ #[account(
+ mut,
+ seeds = [
+ PEER_SEED,
+ oft_store.key().as_ref(),
+ ¶ms.dst_eid.to_be_bytes()
+ ],
+ bump = peer.bump
+ )]
+ pub peer: Account<'info, PeerConfig>,
+ #[account(
+ mut,
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ mut,
+ token::authority = signer,
+ token::mint = token_mint,
+ token::token_program = token_program
+ )]
+ pub token_source: InterfaceAccount<'info, TokenAccount>,
+ #[account(
+ mut,
+ address = oft_store.token_escrow,
+ token::authority = oft_store.key(),
+ token::mint = token_mint,
+ token::token_program = token_program
+ )]
+ pub token_escrow: InterfaceAccount<'info, TokenAccount>,
+ #[account(
+ mut,
+ address = oft_store.token_mint,
+ mint::token_program = token_program
+ )]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+ pub token_program: Interface<'info, TokenInterface>,
+}
+
+impl Send<'_> {
+ pub fn apply(
+ ctx: &mut Context,
+ params: &SendParams,
+ ) -> Result<(MessagingReceipt, OFTReceipt)> {
+ require!(!ctx.accounts.oft_store.paused, OFTError::Paused);
+
+ let (amount_sent_ld, amount_received_ld, oft_fee_ld) = compute_fee_and_adjust_amount(
+ params.amount_ld,
+ &ctx.accounts.oft_store,
+ &ctx.accounts.token_mint,
+ ctx.accounts.peer.fee_bps,
+ )?;
+ require!(amount_received_ld >= params.min_amount_ld, OFTError::SlippageExceeded);
+
+ if let Some(rate_limiter) = ctx.accounts.peer.outbound_rate_limiter.as_mut() {
+ rate_limiter.try_consume(amount_received_ld)?;
+ }
+ if let Some(rate_limiter) = ctx.accounts.peer.inbound_rate_limiter.as_mut() {
+ rate_limiter.refill(amount_received_ld)?;
+ }
+
+ if ctx.accounts.oft_store.oft_type == OFTType::Adapter {
+ // transfer all tokens to escrow with fee
+ ctx.accounts.oft_store.tvl_ld += amount_received_ld;
+ token_interface::transfer_checked(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ TransferChecked {
+ from: ctx.accounts.token_source.to_account_info(),
+ mint: ctx.accounts.token_mint.to_account_info(),
+ to: ctx.accounts.token_escrow.to_account_info(),
+ authority: ctx.accounts.signer.to_account_info(),
+ },
+ ),
+ amount_sent_ld,
+ ctx.accounts.token_mint.decimals,
+ )?;
+ } else {
+ // Native type
+ // burn
+ token_interface::burn(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ Burn {
+ mint: ctx.accounts.token_mint.to_account_info(),
+ from: ctx.accounts.token_source.to_account_info(),
+ authority: ctx.accounts.signer.to_account_info(),
+ },
+ ),
+ amount_sent_ld - oft_fee_ld,
+ )?;
+
+ // transfer fee to escrow
+ if oft_fee_ld > 0 {
+ token_interface::transfer_checked(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ TransferChecked {
+ from: ctx.accounts.token_source.to_account_info(),
+ mint: ctx.accounts.token_mint.to_account_info(),
+ to: ctx.accounts.token_escrow.to_account_info(),
+ authority: ctx.accounts.signer.to_account_info(),
+ },
+ ),
+ oft_fee_ld,
+ ctx.accounts.token_mint.decimals,
+ )?;
+ }
+ }
+
+ // send message to endpoint
+ require!(
+ ctx.accounts.oft_store.key() == ctx.remaining_accounts[1].key(),
+ OFTError::InvalidSender
+ );
+ let amount_sd = ctx.accounts.oft_store.ld2sd(amount_received_ld);
+ let msg_receipt = oapp::endpoint_cpi::send(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.accounts.oft_store.key(),
+ ctx.remaining_accounts,
+ &[OFT_SEED, ctx.accounts.token_escrow.key().as_ref(), &[ctx.accounts.oft_store.bump]],
+ EndpointSendParams {
+ dst_eid: params.dst_eid,
+ receiver: ctx.accounts.peer.peer_address,
+ message: msg_codec::encode(
+ params.to,
+ amount_sd,
+ ctx.accounts.signer.key(),
+ ¶ms.compose_msg,
+ ),
+ options: ctx
+ .accounts
+ .peer
+ .enforced_options
+ .combine_options(¶ms.compose_msg, ¶ms.options)?,
+ native_fee: params.native_fee,
+ lz_token_fee: params.lz_token_fee,
+ },
+ )?;
+
+ emit_cpi!(OFTSent {
+ guid: msg_receipt.guid,
+ dst_eid: params.dst_eid,
+ from: ctx.accounts.token_source.key(),
+ amount_sent_ld,
+ amount_received_ld
+ });
+
+ Ok((msg_receipt, OFTReceipt { amount_sent_ld, amount_received_ld }))
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct SendParams {
+ pub dst_eid: u32,
+ pub to: [u8; 32],
+ pub amount_ld: u64,
+ pub min_amount_ld: u64,
+ pub options: Vec,
+ pub compose_msg: Option>,
+ pub native_fee: u64,
+ pub lz_token_fee: u64,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/set_oft_config.rs b/examples/oft-main/programs/oft/src/instructions/set_oft_config.rs
new file mode 100644
index 0000000000..d554a69abf
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/set_oft_config.rs
@@ -0,0 +1,60 @@
+use crate::*;
+use oapp::endpoint::instructions::SetDelegateParams;
+
+#[derive(Accounts)]
+pub struct SetOFTConfig<'info> {
+ pub admin: Signer<'info>,
+ #[account(
+ mut,
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump,
+ has_one = admin @OFTError::Unauthorized
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+}
+
+impl SetOFTConfig<'_> {
+ pub fn apply(ctx: &mut Context, params: &SetOFTConfigParams) -> Result<()> {
+ match params.clone() {
+ SetOFTConfigParams::Admin(admin) => {
+ ctx.accounts.oft_store.admin = admin;
+ },
+ SetOFTConfigParams::Delegate(delegate) => {
+ let oft_store_seed = ctx.accounts.oft_store.token_escrow.key();
+ let seeds: &[&[u8]] =
+ &[OFT_SEED, &oft_store_seed.to_bytes(), &[ctx.accounts.oft_store.bump]];
+ let _ = oapp::endpoint_cpi::set_delegate(
+ ctx.accounts.oft_store.endpoint_program,
+ ctx.accounts.oft_store.key(),
+ &ctx.remaining_accounts,
+ seeds,
+ SetDelegateParams { delegate },
+ )?;
+ },
+ SetOFTConfigParams::DefaultFee(fee_bps) => {
+ require!(fee_bps < MAX_FEE_BASIS_POINTS, OFTError::InvalidFee);
+ ctx.accounts.oft_store.default_fee_bps = fee_bps;
+ },
+ SetOFTConfigParams::Paused(paused) => {
+ ctx.accounts.oft_store.paused = paused;
+ },
+ SetOFTConfigParams::Pauser(pauser) => {
+ ctx.accounts.oft_store.pauser = pauser;
+ },
+ SetOFTConfigParams::Unpauser(unpauser) => {
+ ctx.accounts.oft_store.unpauser = unpauser;
+ },
+ }
+ Ok(())
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub enum SetOFTConfigParams {
+ Admin(Pubkey),
+ Delegate(Pubkey), // OApp delegate for the endpoint
+ DefaultFee(u16),
+ Paused(bool),
+ Pauser(Option),
+ Unpauser(Option),
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/set_pause.rs b/examples/oft-main/programs/oft/src/instructions/set_pause.rs
new file mode 100644
index 0000000000..dfac3a113a
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/set_pause.rs
@@ -0,0 +1,35 @@
+use crate::*;
+
+#[derive(Accounts)]
+#[instruction(params: SetPauseParams)]
+pub struct SetPause<'info> {
+ /// pauser or unpauser
+ pub signer: Signer<'info>,
+ #[account(
+ mut,
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump,
+ constraint = is_valid_signer(signer.key(), &oft_store, params.paused) @OFTError::Unauthorized
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+}
+
+impl SetPause<'_> {
+ pub fn apply(ctx: &mut Context, params: &SetPauseParams) -> Result<()> {
+ ctx.accounts.oft_store.paused = params.paused;
+ Ok(())
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct SetPauseParams {
+ pub paused: bool,
+}
+
+fn is_valid_signer(signer: Pubkey, oft_store: &OFTStore, paused: bool) -> bool {
+ if paused {
+ oft_store.pauser == Some(signer)
+ } else {
+ oft_store.unpauser == Some(signer)
+ }
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/set_peer_config.rs b/examples/oft-main/programs/oft/src/instructions/set_peer_config.rs
new file mode 100644
index 0000000000..d4d4ee58cd
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/set_peer_config.rs
@@ -0,0 +1,99 @@
+use crate::*;
+
+#[derive(Accounts)]
+#[instruction(params: SetPeerConfigParams)]
+pub struct SetPeerConfig<'info> {
+ #[account(mut)]
+ pub admin: Signer<'info>,
+ #[account(
+ init_if_needed,
+ payer = admin,
+ space = 8 + PeerConfig::INIT_SPACE,
+ seeds = [PEER_SEED, oft_store.key().as_ref(), ¶ms.remote_eid.to_be_bytes()],
+ bump
+ )]
+ pub peer: Account<'info, PeerConfig>,
+ #[account(
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump,
+ has_one = admin @OFTError::Unauthorized
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ pub system_program: Program<'info, System>,
+}
+
+impl SetPeerConfig<'_> {
+ pub fn apply(ctx: &mut Context, params: &SetPeerConfigParams) -> Result<()> {
+ match params.config.clone() {
+ PeerConfigParam::PeerAddress(peer_address) => {
+ ctx.accounts.peer.peer_address = peer_address;
+ },
+ PeerConfigParam::FeeBps(fee_bps) => {
+ if let Some(fee_bps) = fee_bps {
+ require!(fee_bps < MAX_FEE_BASIS_POINTS, OFTError::InvalidFee);
+ }
+ ctx.accounts.peer.fee_bps = fee_bps;
+ },
+ PeerConfigParam::EnforcedOptions { send, send_and_call } => {
+ oapp::options::assert_type_3(&send)?;
+ ctx.accounts.peer.enforced_options.send = send;
+ oapp::options::assert_type_3(&send_and_call)?;
+ ctx.accounts.peer.enforced_options.send_and_call = send_and_call;
+ },
+ PeerConfigParam::OutboundRateLimit(rate_limit_params) => {
+ Self::update_rate_limiter(
+ &mut ctx.accounts.peer.outbound_rate_limiter,
+ &rate_limit_params,
+ )?;
+ },
+ PeerConfigParam::InboundRateLimit(rate_limit_params) => {
+ Self::update_rate_limiter(
+ &mut ctx.accounts.peer.inbound_rate_limiter,
+ &rate_limit_params,
+ )?;
+ },
+ }
+ ctx.accounts.peer.bump = ctx.bumps.peer;
+ Ok(())
+ }
+
+ fn update_rate_limiter(
+ rate_limiter: &mut Option,
+ params: &Option,
+ ) -> Result<()> {
+ if let Some(param) = params {
+ let mut limiter = rate_limiter.clone().unwrap_or_default();
+ if let Some(capacity) = param.capacity {
+ limiter.set_capacity(capacity)?;
+ }
+ if let Some(refill_rate) = param.refill_per_second {
+ limiter.set_rate(refill_rate)?;
+ }
+ *rate_limiter = Some(limiter);
+ } else {
+ *rate_limiter = None;
+ }
+ Ok(())
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct SetPeerConfigParams {
+ pub remote_eid: u32,
+ pub config: PeerConfigParam,
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub enum PeerConfigParam {
+ PeerAddress([u8; 32]),
+ FeeBps(Option),
+ EnforcedOptions { send: Vec, send_and_call: Vec },
+ OutboundRateLimit(Option),
+ InboundRateLimit(Option),
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct RateLimitParams {
+ pub refill_per_second: Option,
+ pub capacity: Option,
+}
diff --git a/examples/oft-main/programs/oft/src/instructions/withdraw_fee.rs b/examples/oft-main/programs/oft/src/instructions/withdraw_fee.rs
new file mode 100644
index 0000000000..762c46ae63
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/instructions/withdraw_fee.rs
@@ -0,0 +1,67 @@
+use crate::*;
+use anchor_spl::token_interface::{self, Mint, TokenAccount, TokenInterface, TransferChecked};
+
+#[derive(Accounts)]
+pub struct WithdrawFee<'info> {
+ pub admin: Signer<'info>,
+ #[account(
+ seeds = [OFT_SEED, oft_store.token_escrow.as_ref()],
+ bump = oft_store.bump,
+ has_one = admin @OFTError::Unauthorized
+ )]
+ pub oft_store: Account<'info, OFTStore>,
+ #[account(
+ address = oft_store.token_mint,
+ mint::token_program = token_program
+ )]
+ pub token_mint: InterfaceAccount<'info, Mint>,
+ #[account(
+ mut,
+ address = oft_store.token_escrow,
+ token::authority = oft_store,
+ token::mint = token_mint,
+ token::token_program = token_program
+ )]
+ pub token_escrow: InterfaceAccount<'info, TokenAccount>,
+ #[account(
+ mut,
+ token::mint = token_mint,
+ token::token_program = token_program
+ )]
+ pub token_dest: InterfaceAccount<'info, TokenAccount>,
+ pub token_program: Interface<'info, TokenInterface>,
+}
+
+impl WithdrawFee<'_> {
+ pub fn apply(ctx: &mut Context, params: &WithdrawFeeParams) -> Result<()> {
+ require!(
+ ctx.accounts.token_escrow.amount - ctx.accounts.oft_store.tvl_ld >= params.fee_ld,
+ OFTError::InvalidFee
+ );
+ let seeds: &[&[u8]] = &[
+ OFT_SEED,
+ &ctx.accounts.token_escrow.key().to_bytes(),
+ &[ctx.accounts.oft_store.bump],
+ ];
+ token_interface::transfer_checked(
+ CpiContext::new(
+ ctx.accounts.token_program.to_account_info(),
+ TransferChecked {
+ from: ctx.accounts.token_escrow.to_account_info(),
+ mint: ctx.accounts.token_mint.to_account_info(),
+ to: ctx.accounts.token_dest.to_account_info(),
+ authority: ctx.accounts.oft_store.to_account_info(),
+ },
+ )
+ .with_signer(&[&seeds]),
+ params.fee_ld,
+ ctx.accounts.token_mint.decimals,
+ )?;
+ Ok(())
+ }
+}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct WithdrawFeeParams {
+ pub fee_ld: u64,
+}
diff --git a/examples/oft-main/programs/oft/src/lib.rs b/examples/oft-main/programs/oft/src/lib.rs
new file mode 100644
index 0000000000..68b54b928f
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/lib.rs
@@ -0,0 +1,101 @@
+use anchor_lang::prelude::*;
+
+pub mod compose_msg_codec;
+pub mod errors;
+pub mod events;
+pub mod instructions;
+pub mod msg_codec;
+pub mod state;
+
+use errors::*;
+use events::*;
+use instructions::*;
+use oapp::{
+ endpoint::{MessagingFee, MessagingReceipt},
+ LzReceiveParams,
+};
+use solana_helper::program_id_from_env;
+use state::*;
+
+declare_id!(Pubkey::new_from_array(program_id_from_env!(
+ "OFT_ID",
+ "9UovNrJD8pQyBLheeHNayuG1wJSEAoxkmM14vw5gcsTT"
+)));
+
+pub const OFT_SEED: &[u8] = b"OFT";
+pub const PEER_SEED: &[u8] = b"Peer";
+pub const ENFORCED_OPTIONS_SEED: &[u8] = b"EnforcedOptions";
+pub const LZ_RECEIVE_TYPES_SEED: &[u8] = oapp::LZ_RECEIVE_TYPES_SEED;
+
+#[program]
+pub mod oft {
+ use super::*;
+
+ pub fn oft_version(_ctx: Context) -> Result {
+ Ok(Version { interface: 2, message: 1 })
+ }
+
+ pub fn init_oft(mut ctx: Context, params: InitOFTParams) -> Result<()> {
+ InitOFT::apply(&mut ctx, ¶ms)
+ }
+
+ // ============================== Admin ==============================
+ pub fn set_oft_config(
+ mut ctx: Context,
+ params: SetOFTConfigParams,
+ ) -> Result<()> {
+ SetOFTConfig::apply(&mut ctx, ¶ms)
+ }
+
+ pub fn set_peer_config(
+ mut ctx: Context,
+ params: SetPeerConfigParams,
+ ) -> Result<()> {
+ SetPeerConfig::apply(&mut ctx, ¶ms)
+ }
+
+ pub fn set_pause(mut ctx: Context, params: SetPauseParams) -> Result<()> {
+ SetPause::apply(&mut ctx, ¶ms)
+ }
+
+ pub fn withdraw_fee(mut ctx: Context, params: WithdrawFeeParams) -> Result<()> {
+ WithdrawFee::apply(&mut ctx, ¶ms)
+ }
+
+ // ============================== Public ==============================
+
+ pub fn quote_oft(ctx: Context, params: QuoteOFTParams) -> Result {
+ QuoteOFT::apply(&ctx, ¶ms)
+ }
+
+ pub fn quote_send(ctx: Context, params: QuoteSendParams) -> Result {
+ QuoteSend::apply(&ctx, ¶ms)
+ }
+
+ pub fn send(
+ mut ctx: Context,
+ params: SendParams,
+ ) -> Result<(MessagingReceipt, OFTReceipt)> {
+ Send::apply(&mut ctx, ¶ms)
+ }
+
+ pub fn lz_receive(mut ctx: Context, params: LzReceiveParams) -> Result<()> {
+ LzReceive::apply(&mut ctx, ¶ms)
+ }
+
+ pub fn lz_receive_types(
+ ctx: Context,
+ params: LzReceiveParams,
+ ) -> Result> {
+ LzReceiveTypes::apply(&ctx, ¶ms)
+ }
+}
+
+#[derive(Accounts)]
+pub struct OFTVersion {}
+
+#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
+pub struct Version {
+ pub interface: u64,
+ pub message: u64,
+}
diff --git a/examples/oft-main/programs/oft/src/msg_codec.rs b/examples/oft-main/programs/oft/src/msg_codec.rs
new file mode 100644
index 0000000000..47771d5900
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/msg_codec.rs
@@ -0,0 +1,46 @@
+use crate::*;
+
+const SEND_TO_OFFSET: usize = 0;
+const SEND_AMOUNT_SD_OFFSET: usize = 32;
+const COMPOSE_MSG_OFFSET: usize = 40;
+
+pub fn encode(
+ send_to: [u8; 32],
+ amount_sd: u64,
+ sender: Pubkey,
+ compose_msg: &Option>,
+) -> Vec {
+ if let Some(msg) = compose_msg {
+ let mut encoded = Vec::with_capacity(72 + msg.len()); // 32 + 8 + 32
+ encoded.extend_from_slice(&send_to);
+ encoded.extend_from_slice(&amount_sd.to_be_bytes());
+ encoded.extend_from_slice(sender.to_bytes().as_ref());
+ encoded.extend_from_slice(&msg);
+ encoded
+ } else {
+ let mut encoded = Vec::with_capacity(40); // 32 + 8
+ encoded.extend_from_slice(&send_to);
+ encoded.extend_from_slice(&amount_sd.to_be_bytes());
+ encoded
+ }
+}
+
+pub fn send_to(message: &[u8]) -> [u8; 32] {
+ let mut send_to = [0; 32];
+ send_to.copy_from_slice(&message[SEND_TO_OFFSET..SEND_AMOUNT_SD_OFFSET]);
+ send_to
+}
+
+pub fn amount_sd(message: &[u8]) -> u64 {
+ let mut amount_sd_bytes = [0; 8];
+ amount_sd_bytes.copy_from_slice(&message[SEND_AMOUNT_SD_OFFSET..COMPOSE_MSG_OFFSET]);
+ u64::from_be_bytes(amount_sd_bytes)
+}
+
+pub fn compose_msg(message: &[u8]) -> Option> {
+ if message.len() > COMPOSE_MSG_OFFSET {
+ Some(message[COMPOSE_MSG_OFFSET..].to_vec())
+ } else {
+ None
+ }
+}
diff --git a/examples/oft-main/programs/oft/src/state/mod.rs b/examples/oft-main/programs/oft/src/state/mod.rs
new file mode 100644
index 0000000000..66db5699ba
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/state/mod.rs
@@ -0,0 +1,5 @@
+pub mod oft;
+pub mod peer_config;
+
+pub use oft::*;
+pub use peer_config::*;
diff --git a/examples/oft-main/programs/oft/src/state/oft.rs b/examples/oft-main/programs/oft/src/state/oft.rs
new file mode 100644
index 0000000000..6cb97b5da5
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/state/oft.rs
@@ -0,0 +1,50 @@
+use crate::*;
+
+#[account]
+#[derive(InitSpace)]
+pub struct OFTStore {
+ // immutable
+ pub oft_type: OFTType,
+ pub ld2sd_rate: u64,
+ pub token_mint: Pubkey,
+ pub token_escrow: Pubkey, // this account is used to hold TVL and fees
+ pub endpoint_program: Pubkey,
+ pub bump: u8,
+ // mutable
+ pub tvl_ld: u64, // total value locked. if oft_type is Native, it is always 0.
+ // configurable
+ pub admin: Pubkey,
+ pub default_fee_bps: u16,
+ pub paused: bool,
+ pub pauser: Option,
+ pub unpauser: Option,
+}
+
+#[derive(InitSpace, Clone, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
+pub enum OFTType {
+ Native,
+ Adapter,
+}
+
+impl OFTStore {
+ pub fn ld2sd(&self, amount_ld: u64) -> u64 {
+ amount_ld / self.ld2sd_rate
+ }
+
+ pub fn sd2ld(&self, amount_sd: u64) -> u64 {
+ amount_sd * self.ld2sd_rate
+ }
+
+ pub fn remove_dust(&self, amount_ld: u64) -> u64 {
+ amount_ld - amount_ld % self.ld2sd_rate
+ }
+}
+
+/// LzReceiveTypesAccounts includes accounts that are used in the LzReceiveTypes
+/// instruction.
+#[account]
+#[derive(InitSpace)]
+pub struct LzReceiveTypesAccounts {
+ pub oft_store: Pubkey,
+ pub token_mint: Pubkey,
+}
diff --git a/examples/oft-main/programs/oft/src/state/peer_config.rs b/examples/oft-main/programs/oft/src/state/peer_config.rs
new file mode 100644
index 0000000000..2a64340874
--- /dev/null
+++ b/examples/oft-main/programs/oft/src/state/peer_config.rs
@@ -0,0 +1,92 @@
+use crate::*;
+
+pub const ENFORCED_OPTIONS_SEND_MAX_LEN: usize = 512;
+pub const ENFORCED_OPTIONS_SEND_AND_CALL_MAX_LEN: usize = 1024;
+
+#[account]
+#[derive(InitSpace)]
+pub struct PeerConfig {
+ pub peer_address: [u8; 32],
+ pub enforced_options: EnforcedOptions,
+ pub outbound_rate_limiter: Option,
+ pub inbound_rate_limiter: Option,
+ pub fee_bps: Option,
+ pub bump: u8,
+}
+
+#[derive(Clone, Default, AnchorSerialize, AnchorDeserialize, InitSpace)]
+pub struct RateLimiter {
+ pub capacity: u64,
+ pub tokens: u64,
+ pub refill_per_second: u64,
+ pub last_refill_time: u64,
+}
+
+impl RateLimiter {
+ pub fn set_rate(&mut self, refill_per_second: u64) -> Result<()> {
+ self.refill(0)?;
+ self.refill_per_second = refill_per_second;
+ Ok(())
+ }
+
+ pub fn set_capacity(&mut self, capacity: u64) -> Result<()> {
+ self.capacity = capacity;
+ self.tokens = capacity;
+ self.last_refill_time = Clock::get()?.unix_timestamp.try_into().unwrap();
+ Ok(())
+ }
+
+ pub fn refill(&mut self, extra_tokens: u64) -> Result<()> {
+ let mut new_tokens = extra_tokens;
+ let current_time: u64 = Clock::get()?.unix_timestamp.try_into().unwrap();
+ if current_time > self.last_refill_time {
+ let time_elapsed_in_seconds = current_time - self.last_refill_time;
+ new_tokens = new_tokens
+ .saturating_add(time_elapsed_in_seconds.saturating_mul(self.refill_per_second));
+ }
+ self.tokens = std::cmp::min(self.capacity, self.tokens.saturating_add(new_tokens));
+
+ self.last_refill_time = current_time;
+ Ok(())
+ }
+
+ pub fn try_consume(&mut self, amount: u64) -> Result<()> {
+ self.refill(0)?;
+ match self.tokens.checked_sub(amount) {
+ Some(new_tokens) => {
+ self.tokens = new_tokens;
+ Ok(())
+ },
+ None => Err(error!(OFTError::RateLimitExceeded)),
+ }
+ }
+}
+
+#[derive(Clone, Default, AnchorSerialize, AnchorDeserialize, InitSpace)]
+pub struct EnforcedOptions {
+ #[max_len(ENFORCED_OPTIONS_SEND_MAX_LEN)]
+ pub send: Vec,
+ #[max_len(ENFORCED_OPTIONS_SEND_AND_CALL_MAX_LEN)]
+ pub send_and_call: Vec,
+}
+
+impl EnforcedOptions {
+ pub fn get_enforced_options(&self, composed_msg: &Option>) -> Vec {
+ if composed_msg.is_none() {
+ self.send.clone()
+ } else {
+ self.send_and_call.clone()
+ }
+ }
+
+ pub fn combine_options(
+ &self,
+ compose_msg: &Option>,
+ extra_options: &Vec,
+ ) -> Result> {
+ let enforced_options = self.get_enforced_options(compose_msg);
+ oapp::options::combine_options(enforced_options, extra_options)
+ }
+}
+
+utils::generate_account_size_test!(EnforcedOptions, enforced_options_test);
diff --git a/examples/oft-main/programs/oft/tests/msg_codec.rs b/examples/oft-main/programs/oft/tests/msg_codec.rs
new file mode 100644
index 0000000000..edf8f236ce
--- /dev/null
+++ b/examples/oft-main/programs/oft/tests/msg_codec.rs
@@ -0,0 +1,55 @@
+#[cfg(test)]
+mod test_msg_codec {
+ use anchor_lang::prelude::Pubkey;
+ use oft::compose_msg_codec;
+ use oft::msg_codec;
+
+ #[test]
+ fn test_msg_codec_with_compose_msg() {
+ let send_to: [u8; 32] = [1; 32];
+ let amount_sd: u64 = 123456789;
+ let sender: Pubkey = Pubkey::new_unique();
+ let compose_msg: Option> = Some(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);
+ let encoded = msg_codec::encode(send_to, amount_sd, sender, &compose_msg);
+ assert_eq!(encoded.len(), 72 + compose_msg.clone().unwrap().len());
+ assert_eq!(msg_codec::send_to(&encoded), send_to);
+ assert_eq!(msg_codec::amount_sd(&encoded), amount_sd);
+ assert_eq!(
+ msg_codec::compose_msg(&encoded),
+ Some([sender.to_bytes().as_ref(), compose_msg.unwrap().as_slice()].concat())
+ );
+ }
+
+ #[test]
+ fn test_msg_codec_without_compose_msg() {
+ let send_to: [u8; 32] = [1; 32];
+ let amount_sd: u64 = 123456789;
+ let sender: Pubkey = Pubkey::new_unique();
+ let compose_msg: Option> = None;
+ let encoded = msg_codec::encode(send_to, amount_sd, sender, &compose_msg);
+ assert_eq!(encoded.len(), 40);
+ assert_eq!(msg_codec::send_to(&encoded), send_to);
+ assert_eq!(msg_codec::amount_sd(&encoded), amount_sd);
+ assert_eq!(msg_codec::compose_msg(&encoded), None);
+ }
+
+ #[test]
+ fn test_compose_msg_codec() {
+ let nonce: u64 = 123456789;
+ let src_eid: u32 = 987654321;
+ let amount_ld: u64 = 123456789;
+ let compose_from: [u8; 32] = [1; 32];
+ let compose_msg: Vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
+ let encoded = compose_msg_codec::encode(
+ nonce,
+ src_eid,
+ amount_ld,
+ &[&compose_from[..], &compose_msg].concat(),
+ );
+ assert_eq!(encoded.len(), 20 + [&compose_from[..], &compose_msg].concat().len());
+ assert_eq!(compose_msg_codec::nonce(&encoded), nonce);
+ assert_eq!(compose_msg_codec::src_eid(&encoded), src_eid);
+ assert_eq!(compose_msg_codec::amount_ld(&encoded), amount_ld);
+ assert_eq!(compose_msg_codec::compose_msg(&encoded), compose_msg);
+ }
+}
diff --git a/examples/oft-main/rust-toolchain.toml b/examples/oft-main/rust-toolchain.toml
new file mode 100644
index 0000000000..f06204d128
--- /dev/null
+++ b/examples/oft-main/rust-toolchain.toml
@@ -0,0 +1,3 @@
+[toolchain]
+channel = "1.84.1"
+components = ["rustfmt", "clippy"]
diff --git a/examples/oft-main/solhint.config.js b/examples/oft-main/solhint.config.js
new file mode 100644
index 0000000000..52efe629c0
--- /dev/null
+++ b/examples/oft-main/solhint.config.js
@@ -0,0 +1 @@
+module.exports = require('@layerzerolabs/solhint-config');
diff --git a/examples/oft-main/starknet/deploy-starknet-mainnet.js b/examples/oft-main/starknet/deploy-starknet-mainnet.js
new file mode 100644
index 0000000000..1aac45e711
--- /dev/null
+++ b/examples/oft-main/starknet/deploy-starknet-mainnet.js
@@ -0,0 +1,145 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+
+const { Account, CallData, Contract, RpcProvider, shortString } = require('starknet');
+
+const ENV_PATH = path.join(__dirname, '..', '.env');
+const envData = fs.readFileSync(ENV_PATH, 'utf8');
+const readEnv = (key) => {
+ const match = envData.match(new RegExp(`^${key}=\\s*'?([^\\n']+)'?`, 'm'));
+ return match ? match[1].trim() : undefined;
+};
+
+const RPC_URL = readEnv('RPC_URL_STARKNET');
+const ACCOUNT_ADDRESS = readEnv('STARKNET_ACCOUNT_ADDRESS');
+const PRIVATE_KEY = readEnv('STARKNET_PRIVATE_KEY');
+
+if (!RPC_URL || !ACCOUNT_ADDRESS || !PRIVATE_KEY) {
+ throw new Error('RPC_URL_STARKNET, STARKNET_ACCOUNT_ADDRESS, and STARKNET_PRIVATE_KEY are required in .env');
+}
+
+console.log('Starknet RPC:', RPC_URL);
+console.log('Starknet account:', ACCOUNT_ADDRESS);
+
+const ERC20_CLASS_HASH = '0x01bea3900ebe975f332083d441cac55f807cf5de7b1aa0b7ccbda1de53268500';
+const OFT_CLASS_HASH = '0x07c02E3797d2c7B848FA94820FfB335617820d2c44D82d6B8Cf71c71fbE7dd6E';
+const ENDPOINT_ADDRESS = '0x524e065abff21d225fb7b28f26ec2f48314ace6094bc085f0a7cf1dc2660f68';
+const STRK_TOKEN_ADDRESS = '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d';
+const SHARED_DECIMALS = 6;
+
+const ERC20_NAME = 'MyToken';
+const ERC20_SYMBOL = 'MTK';
+const ERC20_DECIMALS = 18;
+
+const pkgEntry = require.resolve('@layerzerolabs/oft-mint-burn-starknet');
+const pkgRoot = path.resolve(path.dirname(pkgEntry), '..');
+const erc20AbiModule = require(path.join(pkgRoot, 'dist/generated/abi/e-r-c20-mint-burn-upgradeable.cjs'));
+const ERC20_ABI = erc20AbiModule.eRC20MintBurnUpgradeable ?? erc20AbiModule.default ?? erc20AbiModule;
+
+const DEPLOY_PATH = path.join(__dirname, 'deploy.json');
+
+const loadExistingDeploy = () => {
+ if (!fs.existsSync(DEPLOY_PATH)) return undefined;
+ try {
+ return JSON.parse(fs.readFileSync(DEPLOY_PATH, 'utf8'));
+ } catch {
+ return undefined;
+ }
+};
+
+async function main() {
+ const provider = new RpcProvider({ nodeUrl: RPC_URL });
+ const account = new Account({ provider, address: ACCOUNT_ADDRESS, signer: PRIVATE_KEY });
+ if (!Array.isArray(ERC20_ABI)) {
+ throw new Error('ERC20 ABI not found or invalid in oft-mint-burn-starknet package');
+ }
+ console.log('ERC20 ABI entries:', ERC20_ABI.length);
+ const existing = loadExistingDeploy();
+ let erc20Address = process.env.STARKNET_ERC20_ADDRESS || existing?.erc20Address;
+ let oftAddress = process.env.STARKNET_OFT_ADDRESS || existing?.oftAddress;
+ let erc20DeployTx = existing?.erc20DeployTx;
+ let oftDeployTx = existing?.oftDeployTx;
+
+ if (!erc20Address) {
+ console.log('Deploying ERC20MintBurnUpgradeable...');
+ const erc20ConstructorCalldata = new CallData(ERC20_ABI).compile('constructor', {
+ name: ERC20_NAME,
+ symbol: ERC20_SYMBOL,
+ decimals: ERC20_DECIMALS,
+ default_admin: ACCOUNT_ADDRESS,
+ });
+ const erc20Deploy = await account.deploy({
+ classHash: ERC20_CLASS_HASH,
+ constructorCalldata: erc20ConstructorCalldata,
+ });
+ await provider.waitForTransaction(erc20Deploy.transaction_hash);
+ erc20Address = Array.isArray(erc20Deploy.contract_address)
+ ? erc20Deploy.contract_address[0]
+ : erc20Deploy.contract_address;
+ if (!erc20Address) {
+ throw new Error(`ERC20 deploy did not return contract address. Tx: ${erc20Deploy.transaction_hash}`);
+ }
+ erc20DeployTx = erc20Deploy.transaction_hash;
+ console.log('ERC20 deployed:', erc20Address);
+ } else {
+ console.log('Using existing ERC20:', erc20Address);
+ }
+
+ if (!oftAddress) {
+ console.log('Deploying OFTMintBurnAdapter...');
+ const oftDeploy = await account.deploy({
+ classHash: OFT_CLASS_HASH,
+ constructorCalldata: [
+ erc20Address,
+ erc20Address,
+ ENDPOINT_ADDRESS,
+ ACCOUNT_ADDRESS,
+ STRK_TOKEN_ADDRESS,
+ SHARED_DECIMALS,
+ ],
+ });
+ await provider.waitForTransaction(oftDeploy.transaction_hash);
+ oftAddress = Array.isArray(oftDeploy.contract_address)
+ ? oftDeploy.contract_address[0]
+ : oftDeploy.contract_address;
+ if (!oftAddress) {
+ throw new Error(`OFT deploy did not return contract address. Tx: ${oftDeploy.transaction_hash}`);
+ }
+ oftDeployTx = oftDeploy.transaction_hash;
+ console.log('OFT deployed:', oftAddress);
+ } else {
+ console.log('Using existing OFT:', oftAddress);
+ }
+
+ const erc20 = new Contract({ abi: ERC20_ABI, address: erc20Address, providerOrAccount: account });
+
+ const minterRole = shortString.encodeShortString('MINTER_ROLE');
+ const burnerRole = shortString.encodeShortString('BURNER_ROLE');
+
+ console.log('Granting MINTER_ROLE...');
+ const grantMinter = erc20.populateTransaction.grant_role(minterRole, oftAddress);
+ const grantMinterTx = await account.execute([grantMinter]);
+ await provider.waitForTransaction(grantMinterTx.transaction_hash);
+
+ console.log('Granting BURNER_ROLE...');
+ const grantBurner = erc20.populateTransaction.grant_role(burnerRole, oftAddress);
+ const grantBurnerTx = await account.execute([grantBurner]);
+ await provider.waitForTransaction(grantBurnerTx.transaction_hash);
+
+ const out = {
+ erc20Address,
+ oftAddress,
+ erc20DeployTx,
+ oftDeployTx,
+ grantMinterTx: grantMinterTx.transaction_hash,
+ grantBurnerTx: grantBurnerTx.transaction_hash,
+ };
+ fs.writeFileSync(DEPLOY_PATH, JSON.stringify(out, null, 2));
+ console.log(`Saved deployment info to ${DEPLOY_PATH}`);
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/examples/oft-main/starknet/deploy.json.bak b/examples/oft-main/starknet/deploy.json.bak
new file mode 100644
index 0000000000..159d744fd8
--- /dev/null
+++ b/examples/oft-main/starknet/deploy.json.bak
@@ -0,0 +1,6 @@
+{
+ "erc20Address": "0x3882dbc85193279a21216ab5040be14f285ce80e0b4f54f78243ebc38dac778",
+ "oftAddress": "0x5e10925af15db70e24c1f2ad9339b9d8d4ad661e04865fd4c9a078b50cf7a63",
+ "grantMinterTx": "0x443000d7967642efb31d25a9c6acacbd1f98d78e6ae6d50a735410d152ed5b8",
+ "grantBurnerTx": "0x5dfcfc2110d558f93025f5e13f77d713b9ce6cdcabec4061a7d3df8a16ea711"
+}
\ No newline at end of file
diff --git a/examples/oft-main/starknet/deploy.json.bak.1769208885 b/examples/oft-main/starknet/deploy.json.bak.1769208885
new file mode 100644
index 0000000000..c4fdb950a9
--- /dev/null
+++ b/examples/oft-main/starknet/deploy.json.bak.1769208885
@@ -0,0 +1,8 @@
+{
+ "erc20Address": "0x35b85d4aa73ab7f4d437e7c269b0d624dc69fe9c6b98f187ccadbc0013793c3",
+ "oftAddress": "0x4df7f5fce8c6b3c09ee33ecb49dda6142f7caaf47870bd6e1865190707f05df",
+ "erc20DeployTx": "0x7313f56582dbc6025db57a948e6463cdcedb106843605d7b1b73fde2129950e",
+ "oftDeployTx": "0x6a72f511a332ea66a781c0891cde1d5e5f6fc45e4911bcf34cce494aa39cd1c",
+ "grantMinterTx": "0x20c797ec0085fce766d2d46c4aae566f9bd0d5b6ac50b76548d100d7f4e97c2",
+ "grantBurnerTx": "0x60cd9b40c3c8b188d64a0924b6c24a7fd4b69b2295a215b7992c9ef55c7b0a3"
+}
\ No newline at end of file
diff --git a/examples/oft-main/starknet/deploy.json.bak.1769209481 b/examples/oft-main/starknet/deploy.json.bak.1769209481
new file mode 100644
index 0000000000..d964105a50
--- /dev/null
+++ b/examples/oft-main/starknet/deploy.json.bak.1769209481
@@ -0,0 +1,8 @@
+{
+ "erc20Address": "0x1b86d4f61ce69edbb68ff34f6af3734fec5949320b35276d3d8b0738cddd510",
+ "oftAddress": "0x4728fd95523757637c38a6fe8f0b7d2fa14edc999068d4ac20bb7f5f0779eae",
+ "erc20DeployTx": "0x5c1ec96e9d344f6404be63fc8f7aa7d4ccf0d26581ec8321985e821770d6252",
+ "oftDeployTx": "0x63c15c6a5cbe50265bb0964114aace8340a586a50da76b20a88829ffdc017a3",
+ "grantMinterTx": "0x5c5232365191e17ade74f5599d4161061483259595d706171795e24230b3f31",
+ "grantBurnerTx": "0x356905d0474cb9bde62dd23fe6217c23e5c4ad8acf62cbfd3ada271b6d99092"
+}
\ No newline at end of file
diff --git a/examples/oft-main/starknet/deploy.json.bak.1769209606 b/examples/oft-main/starknet/deploy.json.bak.1769209606
new file mode 100644
index 0000000000..56a5fccdc2
--- /dev/null
+++ b/examples/oft-main/starknet/deploy.json.bak.1769209606
@@ -0,0 +1,8 @@
+{
+ "erc20Address": "0x5b174287588fc400fcb23b7dbc6e8727c322a96da8d925e72770abec53717eb",
+ "oftAddress": "0x20ca935478891da837225b34263154e1bcdc2df8a979df4767ff13270c56c",
+ "erc20DeployTx": "0x5bee4c92e83a6280e53b2e292894fd32cc29f408c0c56550368f68d00ef2e4f",
+ "oftDeployTx": "0x56ce5ab4f543a7afa8f0a13735b6e6321c95fea78e1ff2af97592f04234e749",
+ "grantMinterTx": "0x5325958ecefcba87084c6ecf828564bad4bd5e25d67865a0e64e3e3e088ad6a",
+ "grantBurnerTx": "0x7f88997865af7fe7b9c4bee56dd60d101ffc975906004b27bc0ded68a1f8be2"
+}
\ No newline at end of file
diff --git a/examples/oft-main/sui/deploy.json.example b/examples/oft-main/sui/deploy.json.example
new file mode 100644
index 0000000000..c1b1275997
--- /dev/null
+++ b/examples/oft-main/sui/deploy.json.example
@@ -0,0 +1,8 @@
+{
+ "oftPackageId": "0x",
+ "oappObjectId": "0x",
+ "oftObjectId": "0x",
+ "tokenType": "0x::::",
+ "initTx": "",
+ "registerTx": ""
+}
diff --git a/examples/oft-main/sui/init-and-register.js b/examples/oft-main/sui/init-and-register.js
new file mode 100644
index 0000000000..0eec40be37
--- /dev/null
+++ b/examples/oft-main/sui/init-and-register.js
@@ -0,0 +1,115 @@
+const fs = require('fs');
+const path = require('path');
+
+const { SuiClient } = require('@mysten/sui/client');
+const { decodeSuiPrivateKey } = require('@mysten/sui/cryptography');
+const { Ed25519Keypair } = require('@mysten/sui/keypairs/ed25519');
+const { Transaction } = require('@mysten/sui/transactions');
+
+const { Stage } = require('@layerzerolabs/lz-definitions');
+const { OFT } = require('@layerzerolabs/lz-sui-oft-sdk-v2');
+const { SDK } = require('@layerzerolabs/lz-sui-sdk-v2');
+
+const ENV_PATH = path.join(__dirname, '..', '.env');
+const envData = fs.readFileSync(ENV_PATH, 'utf8');
+const readEnv = (key) => {
+ const match = envData.match(new RegExp(`^${key}=\\s*'?([^\\n']+)'?`, 'm'));
+ return match ? match[1].trim() : undefined;
+};
+
+const RPC_URL = readEnv('RPC_URL_SUI');
+const SUI_PRIVATE_KEY = readEnv('SUI_PRIVATE_KEY');
+
+const OFT_PACKAGE_ID = process.env.SUI_OFT_PACKAGE_ID;
+const OAPP_OBJECT_ID = process.env.SUI_OAPP_OBJECT_ID;
+const OFT_INIT_TICKET = process.env.SUI_OFT_INIT_TICKET;
+const TREASURY_CAP = process.env.SUI_TREASURY_CAP;
+const COIN_METADATA = process.env.SUI_COIN_METADATA;
+const TOKEN_TYPE = process.env.SUI_TOKEN_TYPE;
+const SHARED_DECIMALS = Number(process.env.SUI_SHARED_DECIMALS ?? 6);
+const COMPOSER_MANAGER =
+ process.env.SUI_COMPOSER_MANAGER || '0xfbece0b75d097c31b9963402a66e49074b0d3a2a64dd0ed666187ca6911a4d12';
+
+if (!RPC_URL || !SUI_PRIVATE_KEY) {
+ throw new Error('RPC_URL_SUI and SUI_PRIVATE_KEY are required in examples/oft-main/.env');
+}
+
+for (const [key, value] of Object.entries({
+ SUI_OFT_PACKAGE_ID: OFT_PACKAGE_ID,
+ SUI_OAPP_OBJECT_ID: OAPP_OBJECT_ID,
+ SUI_OFT_INIT_TICKET: OFT_INIT_TICKET,
+ SUI_TREASURY_CAP: TREASURY_CAP,
+ SUI_COIN_METADATA: COIN_METADATA,
+ SUI_TOKEN_TYPE: TOKEN_TYPE,
+})) {
+ if (!value) {
+ throw new Error(`Missing ${key} environment variable`);
+ }
+}
+
+async function main() {
+ const { secretKey } = decodeSuiPrivateKey(SUI_PRIVATE_KEY);
+ const keypair = Ed25519Keypair.fromSecretKey(secretKey);
+ const sender = keypair.getPublicKey().toSuiAddress();
+
+ const client = new SuiClient({ url: RPC_URL });
+ const sdk = new SDK({ client, stage: Stage.MAINNET });
+
+ const initTx = new Transaction();
+ const initOft = new OFT(sdk, OFT_PACKAGE_ID, undefined, TOKEN_TYPE, OAPP_OBJECT_ID);
+
+ const [adminCap, migrationCap] = initOft.initOftMoveCall(
+ initTx,
+ TOKEN_TYPE,
+ OFT_INIT_TICKET,
+ OAPP_OBJECT_ID,
+ TREASURY_CAP,
+ COIN_METADATA,
+ SHARED_DECIMALS
+ );
+ initTx.transferObjects([adminCap, migrationCap], sender);
+
+ const initResult = await client.signAndExecuteTransaction({
+ transaction: initTx,
+ signer: keypair,
+ options: { showObjectChanges: true },
+ });
+ await client.waitForTransaction({ digest: initResult.digest });
+
+ const oftObject = initResult.objectChanges?.find(
+ (change) => change.type === 'created' && String(change.objectType).includes('::oft::OFT<')
+ );
+ if (!oftObject) {
+ throw new Error('Failed to locate OFT object ID in init transaction');
+ }
+ const oftObjectId = oftObject.objectId;
+ console.log('OFT object ID:', oftObjectId);
+
+ const regTx = new Transaction();
+ const regOft = new OFT(sdk, OFT_PACKAGE_ID, oftObjectId, TOKEN_TYPE, OAPP_OBJECT_ID);
+ await regOft.registerOAppMoveCall(regTx, TOKEN_TYPE, oftObjectId, OAPP_OBJECT_ID, COMPOSER_MANAGER);
+
+ const regResult = await client.signAndExecuteTransaction({
+ transaction: regTx,
+ signer: keypair,
+ options: { showObjectChanges: true },
+ });
+ await client.waitForTransaction({ digest: regResult.digest });
+
+ const deployInfo = {
+ oftPackageId: OFT_PACKAGE_ID,
+ oappObjectId: OAPP_OBJECT_ID,
+ oftObjectId,
+ tokenType: TOKEN_TYPE,
+ initTx: initResult.digest,
+ registerTx: regResult.digest,
+ };
+ const outPath = path.join(__dirname, 'deploy.json');
+ fs.writeFileSync(outPath, JSON.stringify(deployInfo, null, 2));
+ console.log(`Saved deployment info to ${outPath}`);
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/examples/oft-main/sui/oft/Move.lock b/examples/oft-main/sui/oft/Move.lock
new file mode 100644
index 0000000000..a57ed657df
--- /dev/null
+++ b/examples/oft-main/sui/oft/Move.lock
@@ -0,0 +1,169 @@
+# @generated by Move, please check-in and do not edit manually.
+
+[move]
+version = 3
+manifest_digest = "B83C406FE4D1A5F86527F7D3327EAD58325C07DB22FB2FBF21C12191776045AA"
+deps_digest = "04732BFEF428F74DE262001DC455D76B909EBC394B034A9A15CC095E4BDD9CEF"
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "OApp", name = "OApp" },
+ { id = "OFTCommon", name = "OFTCommon" },
+ { id = "PtbMoveCall", name = "PtbMoveCall" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+dev-dependencies = [
+ { id = "SimpleMessageLib", name = "SimpleMessageLib" },
+]
+
+[[move.package]]
+id = "Bridge"
+source = { git = "https://github.com/MystenLabs/sui.git", rev = "61dcfdbe2ddc7ad05d27fc10cd09d4c6cc151acd", subdir = "crates/sui-framework/packages/bridge" }
+
+dependencies = [
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "Call"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/dynamic-call/call" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+ { id = "Utils", name = "Utils" },
+]
+
+[[move.package]]
+id = "EndpointV2"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/endpoint-v2" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "Call", name = "Call" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+ { id = "Zro", name = "Zro" },
+]
+
+[[move.package]]
+id = "MessageLibCommon"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/message-libs/message-lib-common" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "EndpointV2", name = "EndpointV2" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "MoveStdlib"
+source = { git = "https://github.com/MystenLabs/sui.git", rev = "61dcfdbe2ddc7ad05d27fc10cd09d4c6cc151acd", subdir = "crates/sui-framework/packages/move-stdlib" }
+
+[[move.package]]
+id = "OApp"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/oapps/oapp" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "EndpointV2", name = "EndpointV2" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "OFTCommon"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/oapps/oft/oft-common" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "Call", name = "Call" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "PtbMoveCall"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/ptb-builders/ptb-move-call" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+ { id = "Utils", name = "Utils" },
+]
+
+[[move.package]]
+id = "SimpleMessageLib"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/message-libs/simple-message-lib" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MessageLibCommon", name = "MessageLibCommon" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "Sui"
+source = { git = "https://github.com/MystenLabs/sui.git", rev = "61dcfdbe2ddc7ad05d27fc10cd09d4c6cc151acd", subdir = "crates/sui-framework/packages/sui-framework" }
+
+dependencies = [
+ { id = "MoveStdlib", name = "MoveStdlib" },
+]
+
+[[move.package]]
+id = "SuiSystem"
+source = { git = "https://github.com/MystenLabs/sui.git", rev = "61dcfdbe2ddc7ad05d27fc10cd09d4c6cc151acd", subdir = "crates/sui-framework/packages/sui-system" }
+
+dependencies = [
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+]
+
+[[move.package]]
+id = "Utils"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/utils" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[[move.package]]
+id = "Zro"
+source = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", rev = "main", subdir = "packages/layerzero-v2/sui/contracts/zro" }
+
+dependencies = [
+ { id = "Bridge", name = "Bridge" },
+ { id = "MoveStdlib", name = "MoveStdlib" },
+ { id = "Sui", name = "Sui" },
+ { id = "SuiSystem", name = "SuiSystem" },
+]
+
+[move.toolchain-version]
+compiler-version = "1.59.0"
+edition = "2024.beta"
+flavor = "sui"
+
+[env]
+
+[env.mainnet]
+chain-id = "35834a8a"
+original-published-id = "0xebad3daff012b6d2d1dec70ab0da494e2f355944e343502488c9bb202b06a919"
+latest-published-id = "0xebad3daff012b6d2d1dec70ab0da494e2f355944e343502488c9bb202b06a919"
+published-version = "1"
diff --git a/examples/oft-main/sui/oft/Move.toml b/examples/oft-main/sui/oft/Move.toml
new file mode 100644
index 0000000000..eca074bd63
--- /dev/null
+++ b/examples/oft-main/sui/oft/Move.toml
@@ -0,0 +1,16 @@
+[package]
+name = "OFT"
+version = "0.0.1"
+edition = "2024.beta"
+license = "MIT"
+
+[dependencies]
+OApp = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", subdir = "packages/layerzero-v2/sui/contracts/oapps/oapp", rev = "main" }
+OFTCommon = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", subdir = "packages/layerzero-v2/sui/contracts/oapps/oft/oft-common", rev = "main" }
+PtbMoveCall = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", subdir = "packages/layerzero-v2/sui/contracts/ptb-builders/ptb-move-call", rev = "main" }
+
+[addresses]
+oft = "0x0"
+
+[dev-dependencies]
+SimpleMessageLib = { git = "https://github.com/LayerZero-Labs/LayerZero-v2.git", subdir = "packages/layerzero-v2/sui/contracts/message-libs/simple-message-lib", rev = "main" }
diff --git a/examples/oft-main/sui/oft/README.md b/examples/oft-main/sui/oft/README.md
new file mode 100644
index 0000000000..76c6bbea30
--- /dev/null
+++ b/examples/oft-main/sui/oft/README.md
@@ -0,0 +1,15 @@
+# Sui OFT Package
+
+Populate `sources/` by copying the LayerZero OFT Move sources:
+
+```bash
+git clone https://github.com/LayerZero-Labs/LayerZero-v2.git --depth 1
+cp -r LayerZero-v2/packages/layerzero-v2/sui/contracts/oapps/oft/oft/sources ./sources
+rm -rf LayerZero-v2
+```
+
+Then publish the package:
+
+```bash
+sui client publish --gas-budget 1000000000 --json > oft_deploy.json
+```
diff --git a/examples/oft-main/sui/oft/sources/codec/oft_msg_codec.move b/examples/oft-main/sui/oft/sources/codec/oft_msg_codec.move
new file mode 100644
index 0000000000..b66bd10d59
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/codec/oft_msg_codec.move
@@ -0,0 +1,84 @@
+module oft::oft_msg_codec;
+
+use utils::{buffer_reader, buffer_writer, bytes32::Bytes32};
+
+// === Structs ===
+
+/// Decoded OFT message containing transfer details and optional compose data
+public struct OFTMessage has copy, drop {
+ /// Recipient address on the destination chain
+ send_to: address,
+ /// Amount to transfer in shared decimals (normalized cross-chain format)
+ amount_sd: u64,
+ /// Address that initiated the compose call (optional)
+ compose_from: Option,
+ /// Compose message payload for additional logic (optional)
+ compose_msg: Option>,
+}
+
+// === Codec Functions ===
+
+/// Encodes OFT message data into a byte vector for cross-chain transmission
+/// Format: [send_to(32)] [amount_sd(8)] [compose_from(32)] [compose_msg(variable)]
+/// Compose fields are only included if both are provided
+public fun encode(
+ send_to: Bytes32,
+ amount_sd: u64,
+ compose_from: Option,
+ compose_msg: Option>,
+): vector {
+ let mut writer = buffer_writer::new();
+ writer.write_bytes32(send_to).write_u64(amount_sd);
+ if (compose_from.is_some() && compose_msg.is_some()) {
+ writer.write_bytes32(compose_from.destroy_some());
+ writer.write_bytes(compose_msg.destroy_some());
+ };
+ writer.to_bytes()
+}
+
+/// Decodes byte vector into OFTMessage struct
+/// Automatically detects presence of compose data based on remaining length
+public fun decode(msg: vector): OFTMessage {
+ let mut reader = buffer_reader::create(msg);
+ let send_to = reader.read_address();
+ let amount_sd = reader.read_u64();
+ if (reader.remaining_length() > 0) {
+ let compose_from = reader.read_bytes32();
+ let compose_msg = reader.read_bytes_until_end();
+ OFTMessage {
+ send_to,
+ amount_sd,
+ compose_from: option::some(compose_from),
+ compose_msg: option::some(compose_msg),
+ }
+ } else {
+ OFTMessage { send_to, amount_sd, compose_from: option::none(), compose_msg: option::none() }
+ }
+}
+
+// === Getters ===
+
+/// Returns the recipient address on the destination chain
+public fun send_to(self: &OFTMessage): address {
+ self.send_to
+}
+
+/// Returns the transfer amount in shared decimals (normalized format)
+public fun amount_sd(self: &OFTMessage): u64 {
+ self.amount_sd
+}
+
+/// Returns the compose initiator address (if compose is enabled)
+public fun compose_from(self: &OFTMessage): Option {
+ self.compose_from
+}
+
+/// Returns the compose message payload (if compose is enabled)
+public fun compose_msg(self: &OFTMessage): &Option> {
+ &self.compose_msg
+}
+
+/// Returns true if this message includes compose functionality
+public fun is_composed(self: &OFTMessage): bool {
+ self.compose_from.is_some() && self.compose_msg.is_some()
+}
diff --git a/examples/oft-main/sui/oft/sources/internal/oft_fee.move b/examples/oft-main/sui/oft/sources/internal/oft_fee.move
new file mode 100644
index 0000000000..0d63696ec4
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/internal/oft_fee.move
@@ -0,0 +1,166 @@
+/// OFT Fee Management Module
+///
+/// This module provides destination chain specific fee calculation and management functionality for OFT (Omnichain
+/// Fungible Token) transfers.
+/// It implements a basis point (BPS) based fee system where fees are calculated as a percentage of the transfer amount,
+/// with the ability to set different fee rates for different destination chains or use a default fee rate.
+module oft::oft_fee;
+
+use sui::{event, table::{Self, Table}};
+use utils::table_ext;
+
+// === Constants ===
+
+/// Base fee in basis points (10,000 BPS = 100%)
+/// Used as denominator in fee calculations
+const BASE_FEE_BPS: u64 = 10_000;
+
+// === Errors ===
+
+const EInvalidFeeBps: u64 = 1;
+const EInvalidFeeDepositAddress: u64 = 2;
+const ENotFound: u64 = 3;
+const ESameValue: u64 = 4;
+
+// === Structs ===
+
+/// OFT fee configuration structure with support for destination-specific fees
+public struct OFTFee has store {
+ /// Default fee rate in basis points (0-10,000, where 10,000 = 100%)
+ /// Applied to destinations without specific fee configuration
+ default_fee_bps: u64,
+ /// Destination-specific fee rates mapped by endpoint ID (eid)
+ fee_bps: Table,
+ /// Address where collected fees will be deposited
+ fee_deposit_address: address,
+}
+
+// === Events ===
+
+public struct DefaultFeeBpsSetEvent has copy, drop {
+ /// Default fee rate in basis points (0-10,000, where 10,000 = 100%)
+ fee_bps: u64,
+}
+
+public struct FeeBpsSetEvent has copy, drop {
+ /// Destination endpoint ID
+ dst_eid: u32,
+ /// New fee rate in basis points (0-10,000, where 10,000 = 100%)
+ fee_bps: u64,
+}
+
+public struct FeeBpsUnsetEvent has copy, drop {
+ /// Destination endpoint ID
+ dst_eid: u32,
+}
+
+public struct FeeDepositAddressSetEvent has copy, drop {
+ /// Address where collected fees will be deposited
+ fee_deposit_address: address,
+}
+
+// === Creation Functions ===
+
+/// Creates a new OFTFee instance with zero fee rate and zero address
+/// Initial state: no fees are charged and no deposit address is set
+public(package) fun new(ctx: &mut TxContext): OFTFee {
+ OFTFee { default_fee_bps: 0, fee_bps: table::new(ctx), fee_deposit_address: @0x0 }
+}
+
+// === Core Functions ===
+
+/// Applies the configured fee to the given amount and returns the amount after fee deduction
+///
+/// **Parameters**:
+/// - `dst_eid`: Destination endpoint ID to determine which fee rate to apply
+/// - `amount_ld`: The original amount in local decimals
+///
+/// **Returns**:
+/// The amount after fee deduction (original amount - calculated fee)
+public(package) fun apply_fee(self: &OFTFee, dst_eid: u32, amount_ld: u64): u64 {
+ assert!(self.fee_deposit_address != @0x0, EInvalidFeeDepositAddress);
+ let fee_bps = self.effective_fee_bps(dst_eid);
+ let preliminary_fee = ((amount_ld as u128) * (fee_bps as u128)) / (BASE_FEE_BPS as u128);
+ amount_ld - (preliminary_fee as u64)
+}
+
+// === Management Functions ===
+
+/// Sets the fee deposit address where collected fees will be sent
+///
+/// **Parameters**:
+/// - `fee_deposit_address`: New address for fee deposits (cannot be zero address)
+public(package) fun set_fee_deposit_address(self: &mut OFTFee, fee_deposit_address: address) {
+ assert!(fee_deposit_address != @0x0, EInvalidFeeDepositAddress);
+ assert!(self.fee_deposit_address != fee_deposit_address, ESameValue);
+ self.fee_deposit_address = fee_deposit_address;
+ event::emit(FeeDepositAddressSetEvent { fee_deposit_address });
+}
+
+/// Sets the default fee rate that applies to all destinations without specific configuration
+///
+/// **Parameters**:
+/// - `fee_bps`: Default fee rate in basis points (0-10,000)
+public(package) fun set_default_fee_bps(self: &mut OFTFee, fee_bps: u64) {
+ assert!(fee_bps <= BASE_FEE_BPS, EInvalidFeeBps);
+ assert!(self.default_fee_bps != fee_bps, ESameValue);
+ self.default_fee_bps = fee_bps;
+ event::emit(DefaultFeeBpsSetEvent { fee_bps });
+}
+
+/// Sets the fee rate for a specific destination chain
+///
+/// **Parameters**:
+/// - `dst_eid`: Destination endpoint ID
+/// - `fee_bps`: Fee rate in basis points (0-10,000)
+public(package) fun set_fee_bps(self: &mut OFTFee, dst_eid: u32, fee_bps: u64) {
+ assert!(fee_bps <= BASE_FEE_BPS, EInvalidFeeBps);
+ assert!(!self.fee_bps.contains(dst_eid) || self.fee_bps[dst_eid] != fee_bps, ESameValue);
+ table_ext::upsert!(&mut self.fee_bps, dst_eid, fee_bps);
+ event::emit(FeeBpsSetEvent { dst_eid, fee_bps });
+}
+
+/// Unset the fee rate for a specific destination chain
+///
+/// **Parameters**:
+/// - `dst_eid`: Destination endpoint ID
+public(package) fun unset_fee_bps(self: &mut OFTFee, dst_eid: u32) {
+ assert!(self.fee_bps.contains(dst_eid), ENotFound);
+ self.fee_bps.remove(dst_eid);
+ event::emit(FeeBpsUnsetEvent { dst_eid });
+}
+
+// === Drop Function ===
+
+/// Drop the OFTFee instance and clean up its resources
+public(package) fun drop(self: OFTFee) {
+ let OFTFee { fee_bps, .. } = self;
+ fee_bps.drop();
+}
+
+// === View Functions ===
+
+/// Returns true if the OFT has a fee rate greater than 0 for the specified destination
+public(package) fun has_oft_fee(self: &OFTFee, dst_eid: u32): bool {
+ self.effective_fee_bps(dst_eid) > 0
+}
+
+/// Returns the effective fee rate for a specific destination chain
+public(package) fun effective_fee_bps(self: &OFTFee, dst_eid: u32): u64 {
+ *table_ext::borrow_with_default!(&self.fee_bps, dst_eid, &self.default_fee_bps)
+}
+
+/// Returns the default fee rate
+public(package) fun default_fee_bps(self: &OFTFee): u64 {
+ self.default_fee_bps
+}
+
+/// Returns the fee rate for a specific destination chain
+public(package) fun fee_bps(self: &OFTFee, dst_eid: u32): u64 {
+ self.fee_bps[dst_eid]
+}
+
+/// Returns the current fee deposit address
+public(package) fun fee_deposit_address(self: &OFTFee): address {
+ self.fee_deposit_address
+}
diff --git a/examples/oft-main/sui/oft/sources/internal/pausable.move b/examples/oft-main/sui/oft/sources/internal/pausable.move
new file mode 100644
index 0000000000..86b190c443
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/internal/pausable.move
@@ -0,0 +1,59 @@
+/// Pausable Module
+///
+/// This module provides emergency pause functionality for OFT operations.
+/// When paused, critical operations like send/receive transfers are blocked,
+/// allowing administrators to halt operations during emergencies or maintenance.
+module oft::pausable;
+
+use sui::event;
+
+// === Errors ===
+
+const EPaused: u64 = 1;
+const EPauseUnchanged: u64 = 2;
+
+// === Structs ===
+
+/// Pausable state container that can be embedded in OFT structs.
+public struct Pausable has drop, store {
+ /// Current pause state - true means operations are suspended
+ paused: bool,
+}
+
+// === Events ===
+
+public struct PausedSetEvent has copy, drop {
+ /// New pause state - true indicates operations are suspended, false indicates normal operation
+ paused: bool,
+}
+
+// === Creation ===
+
+/// Creates a new Pausable instance in the unpaused state.
+public(package) fun new(): Pausable {
+ Pausable { paused: false }
+}
+
+// === Management Functions ===
+
+/// Updates the pause state and emits a state change event.
+///
+/// **Parameters**:
+/// * `paused` - New pause state to set
+public(package) fun set_pause(self: &mut Pausable, paused: bool) {
+ assert!(self.paused != paused, EPauseUnchanged);
+ self.paused = paused;
+ event::emit(PausedSetEvent { paused });
+}
+
+// === View Functions ===
+
+/// Returns the current pause state.
+public(package) fun is_paused(self: &Pausable): bool {
+ self.paused
+}
+
+/// Asserts that operations are not currently paused.
+public(package) fun assert_not_paused(self: &Pausable) {
+ assert!(!self.paused, EPaused);
+}
diff --git a/examples/oft-main/sui/oft/sources/internal/rate_limiter.move b/examples/oft-main/sui/oft/sources/internal/rate_limiter.move
new file mode 100644
index 0000000000..d880d14ebd
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/internal/rate_limiter.move
@@ -0,0 +1,226 @@
+/// Rate Limiter Implementation for OFT
+///
+/// This module provides rate limiting functionality for cross-chain token transfers,
+/// implementing a sliding window rate limiter that decays linearly over time.
+module oft::rate_limiter;
+
+use std::u64;
+use sui::{clock::Clock, event, table::{Self, Table}};
+use utils::table_ext;
+
+// === Errors ===
+
+const EExceededRateLimit: u64 = 1;
+const EInvalidTimestamp: u64 = 2;
+const EInvalidWindowSeconds: u64 = 3;
+const ESameValue: u64 = 4;
+
+// === Structs ===
+
+/// Rate limiter containing all rate limits indexed by endpoint ID
+public struct RateLimiter has store {
+ /// Direction of the rate limit
+ direction: Direction,
+ /// Table mapping endpoint IDs to their rate limit configurations
+ rate_limit_by_eid: Table,
+}
+
+/// Rate limit configuration for a specific endpoint
+public struct RateLimit has copy, drop, store {
+ /// Maximum amount that can be in-flight within the time window
+ limit: u64,
+ /// Time window in seconds for the rate limit
+ window_seconds: u64,
+ /// Amount in-flight at the last checkpoint
+ in_flight_on_last_update: u64,
+ /// Timestamp of the last update in seconds
+ last_update: u64,
+}
+
+public enum Direction has copy, drop, store {
+ Inbound,
+ Outbound,
+}
+
+// === Events ===
+
+/// Emitted when a new rate limit is set for an endpoint
+public struct RateLimitSetEvent has copy, drop {
+ /// Direction of the rate limit
+ direction: Direction,
+ /// Remote endpoint ID
+ eid: u32,
+ /// Rate limit amount
+ limit: u64,
+ /// Time window in seconds
+ window_seconds: u64,
+}
+
+/// Emitted when an existing rate limit is updated
+public struct RateLimitUpdatedEvent has copy, drop {
+ /// Direction of the rate limit
+ direction: Direction,
+ /// Remote endpoint ID
+ eid: u32,
+ /// New rate limit amount
+ limit: u64,
+ /// New time window in seconds
+ window_seconds: u64,
+}
+
+/// Emitted when a rate limit is removed
+public struct RateLimitUnsetEvent has copy, drop {
+ /// Direction of the rate limit
+ direction: Direction,
+ /// Remote endpoint ID for which rate limit was removed
+ eid: u32,
+}
+
+// === Creation ===
+
+/// Creates a new rate limiter
+public(package) fun create(inbound: bool, ctx: &mut tx_context::TxContext): RateLimiter {
+ RateLimiter {
+ rate_limit_by_eid: table::new(ctx),
+ direction: if (inbound) Direction::Inbound else Direction::Outbound,
+ }
+}
+
+// === Rate Limit Core Functions ===
+
+/// Consume rate limit capacity for a given EID or abort if the capacity is exceeded
+public(package) fun try_consume_rate_limit_capacity(self: &mut RateLimiter, eid: u32, amount: u64, clock: &Clock) {
+ if (!self.has_rate_limit(eid)) return;
+
+ self.checkpoint_rate_limit_in_flight(eid, clock);
+ let rate_limit = &mut self.rate_limit_by_eid[eid];
+ assert!(rate_limit.in_flight_on_last_update + amount <= rate_limit.limit, EExceededRateLimit);
+ rate_limit.in_flight_on_last_update = rate_limit.in_flight_on_last_update + amount;
+}
+
+/// Release rate limit capacity for a given EID
+/// This is used when wanting to rate limit by net inflow - outflow
+/// This will release the capacity back to the rate limit up to the limit itself
+public(package) fun release_rate_limit_capacity(self: &mut RateLimiter, eid: u32, amount: u64, clock: &Clock) {
+ if (!self.has_rate_limit(eid)) return;
+
+ self.checkpoint_rate_limit_in_flight(eid, clock);
+ let rate_limit = &mut self.rate_limit_by_eid[eid];
+ if (amount >= rate_limit.in_flight_on_last_update) {
+ rate_limit.in_flight_on_last_update = 0;
+ } else {
+ rate_limit.in_flight_on_last_update = rate_limit.in_flight_on_last_update - amount;
+ }
+}
+
+// === Rate Limit Management ===
+
+/// Set the rate limit and the window at the current timestamp
+/// The capacity of the rate limit increases by limit/window_s until it reaches the limit and stays there
+public(package) fun set_rate_limit(self: &mut RateLimiter, eid: u32, limit: u64, window_seconds: u64, clock: &Clock) {
+ assert!(window_seconds > 0, EInvalidWindowSeconds);
+ // If the rate limit is already set, checkpoint the in-flight amount before updating the rate limit
+ if (self.has_rate_limit(eid)) {
+ let (prior_limit, prior_window_seconds) = self.rate_limit_config(eid);
+ assert!(limit != prior_limit || window_seconds != prior_window_seconds, ESameValue);
+
+ // Checkpoint the in-flight amount before updating the rate settings. If this is not saved, it could change
+ // the in-flight calculation amount retroactively
+ self.checkpoint_rate_limit_in_flight(eid, clock);
+
+ let rate_limit = &mut self.rate_limit_by_eid[eid];
+ rate_limit.limit = limit;
+ rate_limit.window_seconds = window_seconds;
+ event::emit(RateLimitUpdatedEvent { direction: self.direction, eid, limit, window_seconds });
+ } else {
+ table_ext::upsert!(
+ &mut self.rate_limit_by_eid,
+ eid,
+ RateLimit { limit, window_seconds, in_flight_on_last_update: 0, last_update: timestamp_seconds(clock) },
+ );
+ event::emit(RateLimitSetEvent { direction: self.direction, eid, limit, window_seconds });
+ }
+}
+
+/// Unset the rate limit for a given EID
+public(package) fun unset_rate_limit(self: &mut RateLimiter, eid: u32) {
+ assert!(self.has_rate_limit(eid), ESameValue);
+ self.rate_limit_by_eid.remove(eid);
+ event::emit(RateLimitUnsetEvent { direction: self.direction, eid });
+}
+
+// === Drop Function ===
+
+public(package) fun drop(self: RateLimiter) {
+ let RateLimiter { rate_limit_by_eid, .. } = self;
+ rate_limit_by_eid.drop();
+}
+
+// === View Functions ===
+
+/// Get the rate limit and window (in seconds) for a given EID
+public(package) fun rate_limit_config(self: &RateLimiter, eid: u32): (u64, u64) {
+ if (!self.has_rate_limit(eid)) {
+ (0, 0)
+ } else {
+ let rate_limit = &self.rate_limit_by_eid[eid];
+ (rate_limit.limit, rate_limit.window_seconds)
+ }
+}
+
+/// Get the in-flight amount for a given EID at present
+public(package) fun in_flight(self: &RateLimiter, eid: u32, clock: &Clock): u64 {
+ if (!self.has_rate_limit(eid)) {
+ 0
+ } else {
+ let rate_limit = &self.rate_limit_by_eid[eid];
+ let timestamp = timestamp_seconds(clock);
+ assert!(timestamp >= rate_limit.last_update, EInvalidTimestamp);
+ // If the timestamp is greater than the last update, calculate the decayed in-flight amount
+ let elapsed = timestamp - rate_limit.last_update;
+ let decay = ((((elapsed as u128) * (rate_limit.limit as u128)) / (rate_limit.window_seconds as u128)) as u64);
+
+ // Ensure the decayed in-flight amount is not negative
+ if (decay < rate_limit.in_flight_on_last_update) {
+ rate_limit.in_flight_on_last_update - decay
+ } else {
+ 0
+ }
+ }
+}
+
+/// Calculate the spare rate limit capacity for a given EID at present
+public(package) fun rate_limit_capacity(self: &RateLimiter, eid: u32, clock: &Clock): u64 {
+ if (!self.has_rate_limit(eid)) {
+ u64::max_value!()
+ } else {
+ let rate_limit = &self.rate_limit_by_eid[eid];
+ let current_in_flight = self.in_flight(eid, clock);
+ if (rate_limit.limit > current_in_flight) {
+ rate_limit.limit - current_in_flight
+ } else {
+ 0
+ }
+ }
+}
+
+// === Internal Functions ===
+
+/// Checkpoint the in-flight amount for a given EID for the provided timestamp
+/// This should be called whenever there is a change in rate limit or before consuming rate limit capacity
+fun checkpoint_rate_limit_in_flight(self: &mut RateLimiter, eid: u32, clock: &Clock) {
+ let inflight = self.in_flight(eid, clock);
+ let rate_limit = &mut self.rate_limit_by_eid[eid];
+ rate_limit.in_flight_on_last_update = inflight;
+ rate_limit.last_update = timestamp_seconds(clock);
+}
+
+/// Check if a rate limit is set for a given EID
+fun has_rate_limit(self: &RateLimiter, eid: u32): bool {
+ self.rate_limit_by_eid.contains(eid)
+}
+
+/// Convert clock timestamp from milliseconds to seconds
+fun timestamp_seconds(clock: &Clock): u64 {
+ clock.timestamp_ms() / 1000
+}
diff --git a/examples/oft-main/sui/oft/sources/oft-infos/oft_info_v1.move b/examples/oft-main/sui/oft/sources/oft-infos/oft_info_v1.move
new file mode 100644
index 0000000000..d06d6768dd
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/oft-infos/oft_info_v1.move
@@ -0,0 +1,81 @@
+/// OFT Info Module
+///
+/// This module defines the OFTInfo struct and related functions for encoding and decoding
+/// OFT (Omnichain Fungible Token) metadata. The OFTInfo is used to carry essential
+/// information about an OFT instance during cross-chain operations and endpoint registration.
+///
+/// The primary use case is to provide the LayerZero endpoint with information about
+/// the OFT object address for proper message routing and execution context.
+module oft::oft_info_v1;
+
+use sui::bcs;
+use utils::{buffer_reader, buffer_writer};
+
+// === Constants ===
+
+/// Version identifier for OFT info encoding format stored in oapp_info_v1.extra_info.
+/// - **Version 1**: Extended `oapp_info_v1.extra_info` to store complete OFTInfo structure
+/// containing oft_object.
+const INFO_VERSION: u16 = 1;
+
+// === Errors ===
+
+const EInvalidData: u64 = 1;
+const EInvalidVersion: u64 = 2;
+
+// === Structs ===
+
+/// Container for OFT metadata used in cross-chain operations.
+public struct OFTInfoV1 has copy, drop, store {
+ /// Address of the latest OFT package.
+ /// This may differ from the original package address if the OFT has been
+ /// migrated or upgraded to a new package version.
+ oft_package: address,
+ /// Address of the OFT object instance
+ oft_object: address,
+}
+
+// === Creation Functions ===
+
+/// Creates a new OFTInfoV1 instance with the specified OFT object address.
+public fun create(oft_package: address, oft_object: address): OFTInfoV1 {
+ OFTInfoV1 { oft_package, oft_object }
+}
+
+// === View Functions ===
+
+/// Returns the OFT latest package address
+public fun oft_package(self: &OFTInfoV1): address {
+ self.oft_package
+}
+
+/// Returns the OFT object address
+public fun oft_object(self: &OFTInfoV1): address {
+ self.oft_object
+}
+
+// === Serialization Functions ===
+
+/// Encodes OFTInfoV1 into a byte vector for cross-chain transmission.
+public fun encode(self: &OFTInfoV1): vector {
+ let mut writer = buffer_writer::new();
+ writer.write_u16(INFO_VERSION).write_bytes(bcs::to_bytes(self));
+ writer.to_bytes()
+}
+
+/// Decodes a byte vector back into an OFTInfoV1 struct.
+public fun decode(bytes: vector): OFTInfoV1 {
+ let mut reader = buffer_reader::create(bytes);
+
+ let version = reader.read_u16();
+ assert!(version == INFO_VERSION, EInvalidVersion);
+
+ let oft_info_bytes = reader.read_bytes_until_end();
+ let mut bcs_reader = bcs::new(oft_info_bytes);
+ let oft_package = bcs_reader.peel_address();
+ let oft_object = bcs_reader.peel_address();
+
+ assert!(bcs_reader.into_remainder_bytes().is_empty(), EInvalidData);
+
+ OFTInfoV1 { oft_package, oft_object }
+}
diff --git a/examples/oft-main/sui/oft/sources/oft.move b/examples/oft-main/sui/oft/sources/oft.move
new file mode 100644
index 0000000000..c27234a6b4
--- /dev/null
+++ b/examples/oft-main/sui/oft/sources/oft.move
@@ -0,0 +1,1062 @@
+/// Omnichain Fungible Token (OFT) Implementation
+///
+/// This module provides a comprehensive implementation of LayerZero's Omnichain Fungible Token (OFT)
+/// standard, enabling seamless cross-chain token transfers with advanced composability features.
+module oft::oft;
+
+use call::{call::{Call, Void}, call_cap::CallCap};
+use endpoint_v2::{
+ endpoint_quote::QuoteParam as EndpointQuoteParam,
+ endpoint_send::SendParam as EndpointSendParam,
+ endpoint_v2::{Self, EndpointV2},
+ lz_receive::LzReceiveParam,
+ messaging_composer::ComposeQueue,
+ messaging_fee::MessagingFee,
+ messaging_receipt::MessagingReceipt,
+ utils
+};
+use oapp::{endpoint_calls, oapp::{AdminCap, OApp}, oapp_info_v1};
+use oft::{
+ oft_fee::{Self, OFTFee},
+ oft_fee_detail::{Self, OFTFeeDetail},
+ oft_info_v1,
+ oft_limit::{Self, OFTLimit},
+ oft_msg_codec::{Self, OFTMessage},
+ oft_receipt::{Self, OFTReceipt},
+ oft_send_context::{Self, OFTSendContext},
+ oft_sender::OFTSender,
+ pausable::{Self, Pausable},
+ rate_limiter::{Self, RateLimiter},
+ send_param::SendParam
+};
+use oft_common::{
+ migration::{Self, MigrationTicket, MigrationCap},
+ oft_compose_msg_codec,
+ oft_composer_manager::OFTComposerManager
+};
+use std::u64;
+use sui::{bag, balance::{Self, Balance}, clock::Clock, coin::{Self, Coin, CoinMetadata, TreasuryCap}, event, sui::SUI};
+use utils::{bytes32::{Self, Bytes32}, package};
+use zro::zro::ZRO;
+
+// === Errors ===
+
+const EComposeMsgNotAllowed: u64 = 1;
+const EComposeMsgRequired: u64 = 2;
+const EInsufficientBalance: u64 = 3;
+const EInvalidAdminCap: u64 = 4;
+const EInvalidComposeQueue: u64 = 5;
+const EInvalidLocalDecimals: u64 = 6;
+const EInvalidMigrationCap: u64 = 7;
+const EInvalidSendContext: u64 = 8;
+const ESlippageExceeded: u64 = 9;
+const EWrongUpgradeVersion: u64 = 10;
+
+// === Constants ===
+
+/// Current version of the OFT package
+const UPGRADE_VERSION: u64 = 1;
+
+/// Message type for basic token transfers
+const SEND_TYPE: u16 = 1;
+/// Message type for token transfers with compose functionality
+const SEND_AND_CALL_TYPE: u16 = 2;
+
+// === Structs ===
+
+/// Omnichain Fungible Token (OFT) - Core contract enabling seamless cross-chain token transfers.
+public struct OFT has key {
+ /// Unique identifier for this OFT instance
+ id: UID,
+ /// Upgrade version used for upgrade compatibility(SUI native upgrade mechanism)
+ upgrade_version: u64,
+ /// Address of the associated OApp object
+ oapp_object: address,
+ /// Address of the admin capability
+ admin_cap: address,
+ /// Address of the migration capability(migrate to a completely new OFT contract)
+ migration_cap: address,
+ /// Capability granting this OFT authorization to make cross-chain calls via LayerZero
+ oft_cap: CallCap,
+ /// Token management strategy determining mint/burn vs escrow/release behavior
+ treasury: OFTTreasury,
+ /// Address reference to the coin metadata object for this token type
+ coin_metadata: address,
+ /// Multiplier for converting between local decimals and shared decimals (10^(local-shared))
+ decimal_conversion_rate: u64,
+ /// Standardized decimal precision used for cross-chain transfers (≤ local decimals)
+ shared_decimals: u8,
+ /// Emergency pausable functionality - when paused, blocks all send/receive operations
+ pausable: Pausable,
+ /// Manages fee configurations & fee application logic on sending
+ fee: OFTFee,
+ /// Manages ratelimit settings and inbound/outbound transfer flow control by token amount
+ inbound_rate_limiter: RateLimiter,
+ outbound_rate_limiter: RateLimiter,
+}
+
+/// Token management strategy defining how cross-chain transfers handle token supply.
+public enum OFTTreasury has store {
+ /// Standard OFT that mints/burns tokens using treasury capability.
+ OFT {
+ /// Treasury capability granting mint/burn privileges for the token type T
+ treasury_cap: TreasuryCap,
+ },
+ /// Adapter OFT that escrows/releases existing tokens from a balance pool.
+ OFTAdapter {
+ /// Token balance pool used for escrow (outbound) and release (inbound) operations
+ escrow: Balance,
+ },
+}
+
+// === Events ===
+
+public struct OFTInitedEvent has copy, drop {
+ /// Address of the associated OApp object
+ oapp_object: address,
+ /// Address of the newly initialized OFT object instance
+ oft_object: address,
+ /// Address of the associated coin metadata object defining token properties
+ coin_metadata: address,
+ /// Whether the OFT is an adapter OFT
+ is_adapter: bool,
+}
+
+public struct OFTSentEvent has copy, drop {
+ /// Unique identifier for this cross-chain message, used for tracking and correlation
+ guid: Bytes32,
+ /// Destination endpoint ID where tokens are being sent
+ dst_eid: u32,
+ /// Address that initiated the transfer (ctx.sender() or call_cap holder)
+ from_address: address,
+ /// Actual amount debited from sender in local decimals (after dust removal)
+ amount_sent_ld: u64,
+ /// Amount that will be credited to recipient in local decimals
+ amount_received_ld: u64,
+}
+
+public struct OFTReceivedEvent has copy, drop {
+ /// Unique identifier linking this receipt to the original send transaction
+ guid: Bytes32,
+ /// Source endpoint ID where tokens originated
+ src_eid: u32,
+ /// Address that will receive the credited tokens
+ to_address: address,
+ /// Amount credited to recipient in local decimals
+ amount_received_ld: u64,
+}
+
+// === OFT Initialization ===
+
+/// Initializes a standard OFT implementation using the mint/burn treasury model.
+///
+/// **Parameters**:
+/// - `oapp`: Configured OApp instance for cross-chain messaging
+/// - `oft_cap`: CallCap granting authorization for LayerZero operations
+/// - `treasury_cap`: Treasury capability enabling mint/burn operations
+/// - `coin_metadata`: Metadata object defining token properties and decimals
+/// - `shared_decimals`: Standardized decimal precision for cross-chain transfers
+///
+/// **Returns**: Migration capability for future migrations of this OFT
+public(package) fun init_oft(
+ oapp: &OApp,
+ oft_cap: CallCap,
+ treasury_cap: TreasuryCap,
+ coin_metadata: &CoinMetadata,
+ shared_decimals: u8,
+ ctx: &mut TxContext,
+): MigrationCap {
+ oapp.assert_oapp_cap(&oft_cap);
+ let (oft, migration_cap) = init_oft_internal(
+ oapp,
+ oft_cap,
+ coin_metadata,
+ shared_decimals,
+ OFTTreasury::OFT { treasury_cap },
+ false,
+ ctx,
+ );
+ transfer::share_object(oft);
+ migration_cap
+}
+
+/// Initializes an adapter OFT implementation using the escrow/release treasury model.
+///
+/// **Parameters**:
+/// - `oapp`: Configured OApp instance for cross-chain messaging
+/// - `oft_cap`: CallCap granting authorization for LayerZero operations
+/// - `coin_metadata`: Metadata object defining token properties and decimals
+/// - `shared_decimals`: Standardized decimal precision for cross-chain transfers
+///
+/// **Returns**: Migration capability for future migrations of this OFT adapter
+public(package) fun init_oft_adapter(
+ oapp: &OApp,
+ oft_cap: CallCap,
+ coin_metadata: &CoinMetadata,
+ shared_decimals: u8,
+ ctx: &mut TxContext,
+): MigrationCap {
+ oapp.assert_oapp_cap(&oft_cap);
+ let (oft, migration_cap) = init_oft_internal(
+ oapp,
+ oft_cap,
+ coin_metadata,
+ shared_decimals,
+ OFTTreasury::OFTAdapter { escrow: balance::zero() },
+ true,
+ ctx,
+ );
+ transfer::share_object(oft);
+ migration_cap
+}
+
+// === OFT Functions ===
+
+/// Provides a comprehensive quote for OFT send operations without executing the transaction.
+///
+/// **Parameters**:
+/// - `send_param`: Complete send parameters including amounts and destination
+///
+/// **Returns**: Tuple of (send_limits, fee_details, amount_receipt)
+/// - `OFTLimit`: Send restrictions and limits
+/// - `vector`: Fee details
+/// - `OFTReceipt`: Final amounts after dust removal and validation
+public fun quote_oft(
+ self: &OFT,
+ send_param: &SendParam,
+ clock: &Clock,
+): (OFTLimit, vector, OFTReceipt) {
+ self.assert_upgrade_version();
+ self.pausable.assert_not_paused();
+
+ // Outbound rate limit capacity
+ let max_amount_ld = self.outbound_rate_limiter.rate_limit_capacity(send_param.dst_eid(), clock);
+ let oft_limit = oft_limit::create(0, max_amount_ld);
+
+ // Fee details
+ let (amount_sent_ld, amount_received_ld) = self.debit_view(
+ send_param.dst_eid(),
+ send_param.amount_ld(),
+ send_param.min_amount_ld(),
+ );
+ let oft_fee_details = if (amount_sent_ld > amount_received_ld) {
+ vector[oft_fee_detail::create(amount_sent_ld - amount_received_ld, false, b"OFT Fee".to_ascii_string())]
+ } else {
+ vector[]
+ };
+
+ // Receipt
+ let oft_receipt = oft_receipt::create(amount_sent_ld, amount_received_ld);
+
+ (oft_limit, oft_fee_details, oft_receipt)
+}
+
+/// Quotes LayerZero messaging fees required for cross-chain token transfers.
+///
+/// **Parameters**:
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object
+/// - `sender`: Address that will send the transfer (for message attribution)
+/// - `send_param`: Complete transfer parameters including destination and execution options
+/// - `pay_in_zro`: Whether to use ZRO tokens for fee payment
+///
+/// **Returns**: Quote call to send to the endpoint to get the messaging fees
+public fun quote_send(
+ self: &OFT,
+ oapp: &OApp,
+ sender: address,
+ send_param: &SendParam,
+ pay_in_zro: bool,
+ ctx: &mut TxContext,
+): Call {
+ self.assert_upgrade_version();
+ self.pausable.assert_not_paused();
+ let (_, amount_received_ld) = self.debit_view(
+ send_param.dst_eid(),
+ send_param.amount_ld(),
+ send_param.min_amount_ld(),
+ );
+ let (message, options) = self.build_msg_and_options(oapp, sender, send_param, amount_received_ld);
+ oapp.quote(&self.oft_cap, send_param.dst_eid(), message, options, pay_in_zro, ctx)
+}
+
+/// Confirms and extracts results from a quote operation.
+///
+/// This function consumes a Call object returned by `quote_send()` to extract the
+/// quote parameters and messaging fee, providing access to the quote results.
+///
+/// **Parameters**
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object with the hold of the oft_cap
+/// - `call`: Completed Call object from `quote_send()` execution
+///
+/// **Returns**
+/// - `MessagingFee`: Fee required for sending the message
+public fun confirm_quote_send(
+ self: &OFT,
+ oapp: &OApp,
+ call: Call,
+): MessagingFee {
+ self.assert_upgrade_version();
+ let (_, fee) = oapp.confirm_quote(&self.oft_cap, call);
+ fee
+}
+
+/// Initiates a cross-chain token transfer with flexible sender options.
+///
+/// **Parameters**:
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object
+/// - `sender`: Reference to OFTSender (Context or CallCap) specifying the sender address
+/// - `send_param`: Transfer parameters (destination, amount, options, etc.)
+/// - `coin_provided`: Coin to debit tokens from (must have sufficient balance)
+/// - `native_coin_fee`: SUI tokens for paying messaging fees
+/// - `zro_coin_fee`: Optional ZRO tokens for alternative fee payment
+/// - `refund_address`: Optional address to auto refund unspent fee tokens, if not provided, return Coins to the caller
+/// - `clock`: Clock object for rate limiting and timestamp-based operations
+///
+/// **Returns**:
+/// - `Call`: Endpoint call for message sending (execute this first)
+/// - `OFTSendContext`: Send context containing the OFTReceipt and sender info required for `confirm_send()`
+public fun send(
+ self: &mut OFT,
+ oapp: &mut OApp,
+ sender: &OFTSender,
+ send_param: &SendParam,
+ coin_provided: &mut Coin,
+ native_coin_fee: Coin,
+ zro_coin_fee: Option>,
+ refund_address: Option,
+ clock: &Clock,
+ ctx: &mut TxContext,
+): (Call, OFTSendContext) {
+ self.assert_upgrade_version();
+ self.pausable.assert_not_paused();
+
+ let (amount_sent_ld, amount_received_ld) = self.debit(
+ coin_provided,
+ send_param.dst_eid(),
+ send_param.amount_ld(),
+ send_param.min_amount_ld(),
+ ctx,
+ );
+ let oft_receipt = oft_receipt::create(amount_sent_ld, amount_received_ld);
+
+ // Release rate limit capacity for the pathway (net inflow), based on the amount received on the other side
+ self.inbound_rate_limiter.release_rate_limit_capacity(send_param.dst_eid(), amount_received_ld, clock);
+ // Consume rate limit capacity for the pathway (net outflow), based on the amount received on the other side
+ self.outbound_rate_limiter.try_consume_rate_limit_capacity(send_param.dst_eid(), amount_received_ld, clock);
+
+ let (message, options) = self.build_msg_and_options(oapp, sender.get_address(), send_param, amount_received_ld);
+ let ep_call = oapp.lz_send(
+ &self.oft_cap,
+ send_param.dst_eid(),
+ message,
+ options,
+ native_coin_fee,
+ zro_coin_fee,
+ refund_address,
+ ctx,
+ );
+
+ let call_id = ep_call.id();
+ (ep_call, oft_send_context::create(oft_receipt, sender.get_address(), call_id))
+}
+
+/// Confirms and finalizes a token send operation with flexible fee handling.
+///
+/// This function must be called after executing a `Call` returned by `send()`.
+/// It performs final validation of the send operation, resets the OApp's sending state, and
+/// either transfers unspent fees to a refund address (if provided) or returns them to the caller.
+///
+/// **Parameters:**
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object with the hold of the oft_cap
+/// - `call`: The completed Call object returned from LayerZero endpoint execution
+/// - `sender`: Reference to OFTSender used for authorization validation
+/// - `send_context`: OFTSendContext created by the corresponding `send()` call
+///
+/// **Returns**
+/// - `MessagingReceipt`: Receipt containing message details (nonce, fee, etc.)
+/// - `OFTReceipt`: Receipt containing OFT-specific transfer details
+/// - `Option>`: Unspent native token fees (None if auto-refunded, Some if returned to caller)
+/// - `Option>`: Unspent ZRO token fees (None if auto-refunded, Some if returned to caller)
+public fun confirm_send(
+ self: &OFT,
+ oapp: &mut OApp,
+ sender: &OFTSender,
+ call: Call,
+ send_context: OFTSendContext,
+): (MessagingReceipt, OFTReceipt, Option>, Option>) {
+ self.assert_upgrade_version();
+ let (oft_receipt, from_address, call_id) = send_context.destroy();
+ assert!(sender.get_address() == from_address && call.id() == call_id, EInvalidSendContext);
+
+ let (param, messaging_receipt) = oapp.confirm_lz_send(&self.oft_cap, call);
+ event::emit(OFTSentEvent {
+ guid: messaging_receipt.guid(),
+ dst_eid: param.dst_eid(),
+ from_address,
+ amount_sent_ld: oft_receipt.amount_sent_ld(),
+ amount_received_ld: oft_receipt.amount_received_ld(),
+ });
+
+ // Refund the tokens to the refund address if provided.
+ let (native_token, zro_token) = if (param.refund_address().is_some()) {
+ let refund_address = param.refund_address().destroy_some();
+ let (native_token, zro_token) = param.destroy();
+ utils::transfer_coin(native_token, refund_address);
+ utils::transfer_coin_option(zro_token, refund_address);
+ (option::none(), option::none())
+ } else {
+ let (native_token, zro_token) = param.destroy();
+ (option::some(native_token), zro_token)
+ };
+ (messaging_receipt, oft_receipt, native_token, zro_token)
+}
+
+/// Processes inbound cross-chain token transfers and delivers tokens directly to the recipient.
+///
+/// **Parameters**:
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object
+/// - `call`: LayerZero receive call containing the verified cross-chain message
+/// - `clock`: Clock object for rate limiting and timestamp-based operations
+///
+/// **Note**: For transfers with compose functionality, use `lz_receive_with_compose` instead
+public fun lz_receive(
+ self: &mut OFT,
+ oapp: &OApp,
+ call: Call,
+ clock: &Clock,
+ ctx: &mut TxContext,
+) {
+ self.assert_upgrade_version();
+ self.pausable.assert_not_paused();
+
+ let (_src_eid, _nonce, _guid, coin_credited, oft_msg) = self.lz_receive_internal(oapp, call, clock, ctx);
+ assert!(!oft_msg.is_composed(), EComposeMsgNotAllowed);
+ utils::transfer_coin(coin_credited, oft_msg.send_to());
+}
+
+/// Processes inbound cross-chain token transfers with compose functionality for advanced workflows.
+///
+/// **Parameters**:
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object
+/// - `compose_queue`: The composer's message queue for sequencing operations
+/// - `composer_manager`: Manager managing token deposits for composers
+/// - `call`: LayerZero receive call containing the verified cross-chain message
+/// - `clock`: Clock object for rate limiting and timestamp-based operations
+///
+/// **Note**: For simple transfers without compose, use `lz_receive` instead
+public fun lz_receive_with_compose(
+ self: &mut OFT,
+ oapp: &OApp,
+ compose_queue: &mut ComposeQueue,
+ composer_manager: &mut OFTComposerManager,
+ call: Call,
+ clock: &Clock,
+ ctx: &mut TxContext,
+) {
+ self.assert_upgrade_version();
+ self.pausable.assert_not_paused();
+
+ let (src_eid, nonce, guid, coin_credited, oft_msg) = self.lz_receive_internal(oapp, call, clock, ctx);
+ assert!(oft_msg.is_composed(), EComposeMsgRequired);
+ let composer = endpoint_v2::get_composer(compose_queue);
+ assert!(oft_msg.send_to() == composer, EInvalidComposeQueue);
+ let compose_msg = oft_compose_msg_codec::encode(
+ nonce,
+ src_eid,
+ coin_credited.value(),
+ oft_msg.compose_from().destroy_some(),
+ *oft_msg.compose_msg().borrow(),
+ );
+ composer_manager.send_to_composer(&self.oft_cap, guid, composer, coin_credited, ctx);
+ endpoint_v2::send_compose(&self.oft_cap, compose_queue, guid, 0, compose_msg);
+}
+
+// === Admin Functions ===
+
+/// Registers an OApp with the LayerZero v2 endpoint using extended OAppInfo.
+///
+/// **Parameters**:
+/// - `oapp`: Associated OApp instance that can only be called by this OFT object
+/// - `admin_cap`: Admin capability for authorization
+/// - `endpoint`: LayerZero v2 endpoint for registration
+/// - `lz_receive_info`: Original PTB execution instructions generated by `oft_ptb_builder`
+public fun register_oapp(
+ self: &OFT,
+ oapp: &OApp,
+ admin_cap: &AdminCap,
+ endpoint: &mut EndpointV2,
+ lz_receive_info: vector,
+ ctx: &mut TxContext,
+) {
+ self.assert_upgrade_version();
+ oapp.assert_oapp_cap(&self.oft_cap);
+ let oapp_info = oapp_info_v1::create(
+ object::id_address(oapp),
+ vector[],
+ lz_receive_info,
+ oft_info_v1::create(package::package_of_type>(), object::id_address(self)).encode(),
+ );
+ endpoint_calls::register_oapp(oapp, admin_cap, endpoint, oapp_info.encode(), ctx);
+}
+
+/// Controls the pause state of OFT operations for emergency situations.
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `paused`: New pause state (true to pause, false to unpause)
+public fun set_pause(self: &mut OFT, admin: &AdminCap, paused: bool) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ self.pausable.set_pause(paused);
+}
+
+// === Fee Management Admin Functions ===
+
+/// Sets the OFT fee deposit address where collected fees will be sent
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `fee_deposit_address`: New address for fee deposits (cannot be zero address)
+public fun set_fee_deposit_address(self: &mut OFT, admin: &AdminCap, fee_deposit_address: address) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ self.fee.set_fee_deposit_address(fee_deposit_address);
+}
+
+/// Sets the fee rate for a specific destination chain
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `dst_eid`: Destination endpoint ID
+/// - `fee_bps`: Fee rate in basis points (0-10,000, where 10,000 = 100%)
+public fun set_fee_bps(self: &mut OFT, admin: &AdminCap, dst_eid: u32, fee_bps: u64) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ self.fee.set_fee_bps(dst_eid, fee_bps);
+}
+
+/// Unset the fee rate for a specific destination chain
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `dst_eid`: Destination endpoint ID
+public fun unset_fee_bps(self: &mut OFT, admin: &AdminCap, dst_eid: u32) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ self.fee.unset_fee_bps(dst_eid);
+}
+
+/// Set the default fee rate for all destinations
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `default_fee_bps`: Default fee rate in basis points (0-10,000)
+public fun set_default_fee_bps(self: &mut OFT, admin: &AdminCap, default_fee_bps: u64) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ self.fee.set_default_fee_bps(default_fee_bps);
+}
+
+// === Rate Limiter Admin Functions ===
+
+/// Sets the rate limit for a specific endpoint
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `eid`: Remote endpoint ID to set the rate limit for
+/// - `inbound`: Whether to set the inbound (true) or outbound (false) rate limit
+/// - `rate_limit`: Maximum token amount allowed per window
+/// - `window_seconds`: Duration of the rate limit window in seconds
+/// - `clock`: Clock object for timestamp-based rate limit calculations
+public fun set_rate_limit(
+ self: &mut OFT,
+ admin: &AdminCap,
+ eid: u32,
+ inbound: bool,
+ rate_limit: u64,
+ window_seconds: u64,
+ clock: &Clock,
+) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ if (inbound) {
+ self.inbound_rate_limiter.set_rate_limit(eid, rate_limit, window_seconds, clock);
+ } else {
+ self.outbound_rate_limiter.set_rate_limit(eid, rate_limit, window_seconds, clock);
+ }
+}
+
+/// Unset the rate limit for a specific endpoint
+///
+/// **Parameters**:
+/// - `admin`: Admin capability proving authorization
+/// - `eid`: Remote endpoint ID to unset the rate limit for
+/// - `inbound`: Whether to unset the inbound (true) or outbound (false) rate limit
+public fun unset_rate_limit(self: &mut OFT, admin: &AdminCap, eid: u32, inbound: bool) {
+ self.assert_upgrade_version();
+ self.assert_admin(admin);
+ if (inbound) {
+ self.inbound_rate_limiter.unset_rate_limit(eid);
+ } else {
+ self.outbound_rate_limiter.unset_rate_limit(eid);
+ }
+}
+
+// === Migration Functions ===
+
+/// Dismantles an OFT instance and prepares its components for migration to a new contract.
+///
+/// **Parameters**:
+/// - `migration_cap`: Migration capability proving authorization to perform the operation
+///
+/// **Returns**:
+/// - `MigrationTicket`: Packaged components ready for migration
+public fun migrate(self: OFT, migration_cap: &MigrationCap, ctx: &mut TxContext): MigrationTicket {
+ self.assert_upgrade_version();
+ assert!(self.migration_cap == object::id_address(migration_cap), EInvalidMigrationCap);
+
+ let OFT { id, oft_cap, treasury, inbound_rate_limiter, outbound_rate_limiter, fee, .. } = self;
+ id.delete();
+ fee.drop();
+ inbound_rate_limiter.drop();
+ outbound_rate_limiter.drop();
+
+ let (treasury_cap, escrow) = match (treasury) {
+ OFTTreasury::OFT { treasury_cap } => (option::some(treasury_cap), option::none()),
+ OFTTreasury::OFTAdapter { escrow } => (option::none(), option::some(escrow)),
+ };
+ migration_cap.create_migration_ticket(oft_cap, treasury_cap, escrow, bag::new(ctx))
+}
+
+// === OFT View Functions ===
+
+/// Returns the OFT standard version (major, minor)
+public fun oft_version(self: &OFT): (u64, u64) {
+ self.assert_upgrade_version();
+ (1, 1)
+}
+
+/// Returns the upgrade version of this OFT instance
+public fun upgrade_version(self: &OFT): u64 {
+ self.assert_upgrade_version();
+ self.upgrade_version
+}
+
+/// Returns the address of the associated OApp object
+public fun oapp_object(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.oapp_object
+}
+
+/// Returns the admin address for this OFT & OApp
+public fun admin_cap(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.admin_cap
+}
+
+/// Returns the CallCap's identifier for this OFT.
+/// This serves as the OFT's unique contract identity in the LayerZero system.
+public fun oft_cap_id(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.oft_cap.id()
+}
+
+/// Returns the migration capability address for this OFT
+public fun migration_cap(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.migration_cap
+}
+
+/// Returns the address of the coin metadata object
+public fun coin_metadata(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.coin_metadata
+}
+
+/// Returns the number of decimals used for cross-chain transfers
+public fun shared_decimals(self: &OFT): u8 {
+ self.assert_upgrade_version();
+ self.shared_decimals
+}
+
+/// Returns the decimal conversion rate
+public fun decimal_conversion_rate(self: &OFT): u64 {
+ self.assert_upgrade_version();
+ self.decimal_conversion_rate
+}
+
+/// Returns true if this is an adapter OFT (escrow model), false if standard OFT (mint/burn model)
+public fun is_adapter(self: &OFT): bool {
+ self.assert_upgrade_version();
+ match (&self.treasury) {
+ OFTTreasury::OFTAdapter { escrow: _ } => true,
+ OFTTreasury::OFT { treasury_cap: _ } => false,
+ }
+}
+
+// === Pausable View Functions ===
+
+/// Returns whether the OFT is currently paused
+public fun is_paused(self: &OFT): bool {
+ self.assert_upgrade_version();
+ self.pausable.is_paused()
+}
+
+// === Fee Management View Functions ===
+
+/// Returns true if the OFT has a fee rate greater than 0 for the specified destination
+public fun has_oft_fee(self: &OFT, dst_eid: u32): bool {
+ self.assert_upgrade_version();
+ self.fee.has_oft_fee(dst_eid)
+}
+
+/// Returns the effective fee rate for a specific destination chain
+public fun effective_fee_bps(self: &OFT, dst_eid: u32): u64 {
+ self.assert_upgrade_version();
+ self.fee.effective_fee_bps(dst_eid)
+}
+
+/// Returns the default fee rate
+public fun default_fee_bps(self: &OFT): u64 {
+ self.assert_upgrade_version();
+ self.fee.default_fee_bps()
+}
+
+/// Returns the fee rate for a specific destination chain
+public fun fee_bps(self: &OFT, dst_eid: u32): u64 {
+ self.assert_upgrade_version();
+ self.fee.fee_bps(dst_eid)
+}
+
+/// Returns the current fee deposit address
+public fun fee_deposit_address(self: &OFT): address {
+ self.assert_upgrade_version();
+ self.fee.fee_deposit_address()
+}
+
+// === Rate Limiter View Functions ===
+
+/// Returns the rate limit configuration for a specific endpoint ID
+public fun rate_limit_config(self: &OFT, eid: u32, inbound: bool): (u64, u64) {
+ self.assert_upgrade_version();
+ if (inbound) {
+ self.inbound_rate_limiter.rate_limit_config(eid)
+ } else {
+ self.outbound_rate_limiter.rate_limit_config(eid)
+ }
+}
+
+/// Returns the current amount in-flight for a specific endpoint ID's rate limit
+public fun rate_limit_in_flight(self: &OFT, eid: u32, inbound: bool, clock: &Clock): u64 {
+ self.assert_upgrade_version();
+ if (inbound) {
+ self.inbound_rate_limiter.in_flight(eid, clock)
+ } else {
+ self.outbound_rate_limiter.in_flight(eid, clock)
+ }
+}
+
+/// Returns the available rate limit capacity for a specific endpoint ID
+public fun rate_limit_capacity(self: &OFT, eid: u32, inbound: bool, clock: &Clock): u64 {
+ self.assert_upgrade_version();
+ if (inbound) {
+ self.inbound_rate_limiter.rate_limit_capacity(eid, clock)
+ } else {
+ self.outbound_rate_limiter.rate_limit_capacity(eid, clock)
+ }
+}
+
+// === Internal Functions ===
+
+/// Internal function to create OFT instances with common logic
+fun init_oft_internal(
+ oapp: &OApp,
+ oft_cap: CallCap,
+ coin_metadata: &CoinMetadata,
+ shared_decimals: u8,
+ treasury: OFTTreasury,
+ is_adapter: bool,
+ ctx: &mut TxContext,
+): (OFT, MigrationCap) {
+ let local_decimals = coin_metadata.get_decimals();
+ assert!(local_decimals >= shared_decimals, EInvalidLocalDecimals);
+ let decimal_conversion_rate = u64::pow(10, (local_decimals - shared_decimals));
+ let migration_cap = migration::new_migration_cap(ctx);
+
+ let oft = OFT {
+ id: object::new(ctx),
+ upgrade_version: UPGRADE_VERSION,
+ oapp_object: object::id_address(oapp),
+ admin_cap: oapp.admin_cap(),
+ migration_cap: object::id_address(&migration_cap),
+ oft_cap,
+ treasury,
+ coin_metadata: object::id_address(coin_metadata),
+ decimal_conversion_rate,
+ shared_decimals,
+ pausable: pausable::new(),
+ fee: oft_fee::new(ctx),
+ inbound_rate_limiter: rate_limiter::create(true, ctx),
+ outbound_rate_limiter: rate_limiter::create(false, ctx),
+ };
+
+ event::emit(OFTInitedEvent {
+ oapp_object: oft.oapp_object,
+ oft_object: object::id_address(&oft),
+ coin_metadata: object::id_address(coin_metadata),
+ is_adapter,
+ });
+
+ (oft, migration_cap)
+}
+
+/// Internal implementation of cross-chain token receive logic.
+fun lz_receive_internal(
+ self: &mut OFT,
+ oapp: &OApp,
+ call: Call,
+ clock: &Clock,
+ ctx: &mut TxContext,
+): (u32, u64, Bytes32, Coin, OFTMessage) {
+ // SECURITY: Delegate to OApp for LayerZero message validation and peer verification
+ // This ensures the message comes from a trusted source and passes all security checks
+ let lz_receive_param = oapp.lz_receive(&self.oft_cap, call);
+ let (src_eid, _, nonce, guid, message, _, _, value) = lz_receive_param.destroy();
+
+ // Decode OFT-specific payload and convert amounts to local precision
+ let oft_msg = oft_msg_codec::decode(message);
+ let amount_received_ld = self.to_ld(oft_msg.amount_sd());
+
+ // Release rate limit capacity for the pathway (net outflow)
+ self.outbound_rate_limiter.release_rate_limit_capacity(src_eid, amount_received_ld, clock);
+ // Consume rate limit capacity for the pathway (net inflow)
+ self.inbound_rate_limiter.try_consume_rate_limit_capacity(src_eid, amount_received_ld, clock);
+
+ // CRITICAL: Credit tokens according to treasury model (mint or release from escrow)
+ let coin_credited = self.credit(amount_received_ld, ctx);
+
+ event::emit(OFTReceivedEvent { guid, src_eid, to_address: oft_msg.send_to(), amount_received_ld });
+
+ // CLEANUP: Return any unintended native tokens to the executor
+ // This handles cases where the executor mistakenly sent native tokens with the message
+ utils::transfer_coin_option(value, ctx.sender());
+
+ (src_eid, nonce, guid, coin_credited, oft_msg)
+}
+
+/// Calculates final transfer amounts without executing the debit operation.
+/// Uses destination-specific fee if configured, otherwise no fee is applied.
+fun debit_view(self: &OFT, dst_eid: u32, amount_ld: u64, min_amount_ld: u64): (u64, u64) {
+ if (self.has_oft_fee(dst_eid)) {
+ debit_view_with_fee(self, dst_eid, amount_ld, min_amount_ld)
+ } else {
+ no_fee_debit_view(self, amount_ld, min_amount_ld)
+ }
+}
+
+/// Calculates final transfer amounts with destination-specific fee deduction.
+fun debit_view_with_fee(self: &OFT, dst_eid: u32, amount_ld: u64, min_amount_ld: u64): (u64, u64) {
+ let amount_ld_after_fee = self.fee.apply_fee(dst_eid, amount_ld);
+ let amount_received_ld = self.remove_dust(amount_ld_after_fee);
+ assert!(amount_received_ld >= min_amount_ld, ESlippageExceeded);
+ (amount_ld, amount_received_ld)
+}
+
+/// Calculates final transfer amounts without fee deduction.
+fun no_fee_debit_view(self: &OFT, amount_ld: u64, min_amount_ld: u64): (u64, u64) {
+ let amount_sent_ld = self.remove_dust(amount_ld);
+ let amount_received_ld = amount_sent_ld;
+ assert!(amount_received_ld >= min_amount_ld, ESlippageExceeded);
+ (amount_sent_ld, amount_received_ld)
+}
+
+/// Executes token debit operation based on OFT model (burn vs. escrow).
+fun debit(
+ self: &mut OFT,
+ coin: &mut Coin,
+ dst_eid: u32,
+ amount_ld: u64,
+ min_amount_ld: u64,
+ ctx: &mut TxContext,
+): (u64, u64) {
+ let (amount_sent_ld, amount_received_ld) = self.debit_view(dst_eid, amount_ld, min_amount_ld);
+ let coin_to_debit = coin.split(amount_received_ld, ctx);
+ if (amount_sent_ld > amount_received_ld) {
+ let fee_coin = coin.split(amount_sent_ld - amount_received_ld, ctx);
+ utils::transfer_coin(fee_coin, self.fee.fee_deposit_address());
+ };
+
+ // Execute treasury-model-specific debit operation
+ // SECURITY: This is the critical point where tokens leave circulation (burn) or availability (escrow)
+ match (&mut self.treasury) {
+ OFTTreasury::OFT { treasury_cap } => {
+ // Standard OFT: Burn tokens to reduce total supply across all chains
+ // This approach is suitable for tokens where the protocol controls total supply
+ treasury_cap.burn(coin_to_debit);
+ },
+ OFTTreasury::OFTAdapter { escrow } => {
+ // Adapter OFT: Escrow tokens to maintain fixed total supply
+ // Tokens remain in existence but are locked until released on message receipt
+ let escrowed_balance = coin_to_debit.into_balance();
+ escrow.join(escrowed_balance);
+ },
+ };
+
+ (amount_sent_ld, amount_received_ld)
+}
+
+/// Executes token credit operation based on OFT model (mint vs. release from escrow).
+fun credit(self: &mut OFT, amount_ld: u64, ctx: &mut TxContext): Coin {
+ // Execute treasury-model-specific credit operation
+ // SECURITY: This is where tokens enter circulation (mint) or availability (release from escrow)
+ match (&mut self.treasury) {
+ OFTTreasury::OFT { treasury_cap } => {
+ // Standard OFT: Mint new tokens, increasing total supply
+ // Only possible if this OFT instance holds the treasury capability
+ treasury_cap.mint(amount_ld, ctx)
+ },
+ OFTTreasury::OFTAdapter { escrow } => {
+ // Adapter OFT: Release tokens from escrow balance
+ // CRITICAL: Must have sufficient escrowed tokens from previous inbound transfers
+ assert!(escrow.value() >= amount_ld, EInsufficientBalance);
+ let released_balance = escrow.split(amount_ld);
+ coin::from_balance(released_balance, ctx)
+ },
+ }
+}
+
+/// Constructs the LayerZero message payload and execution options for cross-chain transmission.
+fun build_msg_and_options(
+ self: &OFT,
+ oapp: &OApp,
+ sender: address,
+ send_param: &SendParam,
+ amount_ld: u64,
+): (vector, vector) {
+ // Prepare compose parameters
+ let (compose_from, compose_msg, msg_type) = if (send_param.compose_msg().length() > 0) {
+ (option::some(bytes32::from_address(sender)), option::some(*send_param.compose_msg()), SEND_AND_CALL_TYPE)
+ } else {
+ (option::none(), option::none(), SEND_TYPE)
+ };
+
+ // Encode message and combine options
+ let message = oft_msg_codec::encode(send_param.to(), self.to_sd(amount_ld), compose_from, compose_msg);
+ let options = oapp.combine_options(send_param.dst_eid(), msg_type, *send_param.extra_options());
+ (message, options)
+}
+
+/// Removes precision dust by rounding down to the nearest representable amount in shared decimals.
+fun remove_dust