diff --git a/examples/oft-upgradeable/.env.example b/examples/oft-upgradeable/.env.example
new file mode 100644
index 000000000..197ba1d67
--- /dev/null
+++ b/examples/oft-upgradeable/.env.example
@@ -0,0 +1,15 @@
+# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-
+# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \
+# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-'
+#
+# Example environment configuration
+#
+# .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-. .-.-
+# / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \ \ / / \
+# `-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-' `-`-'
+
+# 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=
\ No newline at end of file
diff --git a/examples/oft-upgradeable/.eslintignore b/examples/oft-upgradeable/.eslintignore
new file mode 100644
index 000000000..ee9f768fd
--- /dev/null
+++ b/examples/oft-upgradeable/.eslintignore
@@ -0,0 +1,10 @@
+artifacts
+cache
+dist
+node_modules
+out
+*.log
+*.sol
+*.yaml
+*.lock
+package-lock.json
\ No newline at end of file
diff --git a/examples/oft-upgradeable/.eslintrc.js b/examples/oft-upgradeable/.eslintrc.js
new file mode 100644
index 000000000..f0ea891fd
--- /dev/null
+++ b/examples/oft-upgradeable/.eslintrc.js
@@ -0,0 +1,10 @@
+require('@rushstack/eslint-patch/modern-module-resolution');
+
+module.exports = {
+ 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',
+ },
+};
diff --git a/examples/oft-upgradeable/.gitignore b/examples/oft-upgradeable/.gitignore
new file mode 100644
index 000000000..e2face954
--- /dev/null
+++ b/examples/oft-upgradeable/.gitignore
@@ -0,0 +1,24 @@
+node_modules
+.env
+coverage
+coverage.json
+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
diff --git a/examples/oft-upgradeable/.nvmrc b/examples/oft-upgradeable/.nvmrc
new file mode 100644
index 000000000..b714151ef
--- /dev/null
+++ b/examples/oft-upgradeable/.nvmrc
@@ -0,0 +1 @@
+v18.18.0
\ No newline at end of file
diff --git a/examples/oft-upgradeable/.prettierignore b/examples/oft-upgradeable/.prettierignore
new file mode 100644
index 000000000..6e8232f5a
--- /dev/null
+++ b/examples/oft-upgradeable/.prettierignore
@@ -0,0 +1,10 @@
+artifacts/
+cache/
+dist/
+node_modules/
+out/
+*.log
+*ignore
+*.yaml
+*.lock
+package-lock.json
\ No newline at end of file
diff --git a/examples/oft-upgradeable/.prettierrc.js b/examples/oft-upgradeable/.prettierrc.js
new file mode 100644
index 000000000..6f55b4019
--- /dev/null
+++ b/examples/oft-upgradeable/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ ...require('@layerzerolabs/prettier-config-next'),
+};
diff --git a/examples/oft-upgradeable/README.md b/examples/oft-upgradeable/README.md
new file mode 100644
index 000000000..e89fa95e0
--- /dev/null
+++ b/examples/oft-upgradeable/README.md
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+ Homepage | Docs | Developers
+
+
+Omnichain Fungible Token (OFT) Upgradeable Example
+
+
+ Quickstart | Configuration | Message Execution Options | Endpoint, MessageLib, & Executor Addresses | DVN Addresses
+
+
+Template project for getting started with LayerZero's OFT
contract standard.
+
+
+
+This standard works by combining the LayerZero OApp Contract Standard with the ERC20 [`_burn`](https://github.com/LayerZero-Labs/LayerZero-v2/blob/main/packages/layerzero-v2/evm/oapp/contracts/oft/OFT.sol#L80) method, to initiate omnichain send transfers on the source chain, sending a message via the LayerZero protocol, and delivering a function call to the destination contract to [`_mint`](https://github.com/LayerZero-Labs/LayerZero-v2/blob/main/packages/layerzero-v2/evm/oapp/contracts/oft/OFT.sol#L96) the same number of tokens burned, creating a unified supply across all networks connected.
+
+Read more about what you can do with OFTs by reading the [OFT Quickstart](https://docs.layerzero.network/v2/developers/evm/oft/quickstart) in the LayerZero Documentation.
+
+## LayerZero Hardhat Helper Tasks
+
+LayerZero Devtools provides several helper hardhat tasks to easily deploy, verify, configure, connect, and send OFTs cross-chain.
+
+
+ npx hardhat lz:deploy
+
+
+
+Deploys your contract to any of the available networks in your [`hardhat.config.ts`](./hardhat.config.ts) when given a deploy tag (by default contract name) and returns a list of available networks to select for the deployment. For specifics around all deployment options, please refer to the [Deploying Contracts](https://docs.layerzero.network/v2/developers/evm/create-lz-oapp/deploying) section of the documentation. LayerZero's `lz:deploy` utilizes `hardhat-deploy`.
+
+```yml
+'arbitrum-sepolia': {
+ eid: EndpointId.ARBSEP_V2_TESTNET,
+ url: process.env.RPC_URL_ARBSEP_TESTNET,
+ accounts,
+},
+'base-sepolia': {
+ eid: EndpointId.BASESEP_V2_TESTNET,
+ url: process.env.RPC_URL_BASE_TESTNET,
+ accounts,
+},
+```
+
+
+
+
+ npx hardhat lz:oapp:config:init --oapp-config YOUR_OAPP_CONFIG --contract-name CONTRACT_NAME
+
+
+
+Initializes a `layerzero.config.ts` file for all available pathways between your hardhat networks with the current LayerZero default placeholder settings. This task can be incredibly useful for correctly formatting your config file.
+
+You can run this task by providing the `contract-name` you want to set for the config and `file-name` you want to generate:
+
+```bash
+npx hardhat lz:oapp:config:init --contract-name CONTRACT_NAME --oapp-config FILE_NAME
+```
+
+This will create a `layerzero.config.ts` in your working directory populated with your contract name and connections for every pathway possible between your hardhat networks:
+
+```yml
+import { EndpointId } from '@layerzerolabs/lz-definitions'
+
+const arbsepContract = {
+ eid: EndpointId.ARBSEP_V2_TESTNET,
+ contractName: 'MyOFT',
+}
+const sepoliaContract = {
+ eid: EndpointId.SEPOLIA_V2_TESTNET,
+ contractName: 'MyOFT',
+}
+
+export default {
+ contracts: [{ contract: arbsepContract }, { contract: sepoliaContract }],
+ connections: [
+ {
+ from: arbsepContract,
+ to: sepoliaContract,
+ config: {
+ sendLibrary: '0x4f7cd4DA19ABB31b0eC98b9066B9e857B1bf9C0E',
+ receiveLibraryConfig: { receiveLibrary: '0x75Db67CDab2824970131D5aa9CECfC9F69c69636', gracePeriod: 0 },
+ sendConfig: {
+ executorConfig: { maxMessageSize: 10000, executor: '0x5Df3a1cEbBD9c8BA7F8dF51Fd632A9aef8308897' },
+ ulnConfig: {
+ confirmations: 1,
+ requiredDVNs: ['0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8'],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ // receiveConfig: {
+ // ulnConfig: {
+ // confirmations: 2,
+ // requiredDVNs: ['0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8'],
+ // optionalDVNs: [],
+ // optionalDVNThreshold: 0,
+ // },
+ // },
+ },
+ },
+ {
+ from: sepoliaContract,
+ to: arbsepContract,
+ config: {
+ sendLibrary: '0xcc1ae8Cf5D3904Cef3360A9532B477529b177cCE',
+ receiveLibraryConfig: { receiveLibrary: '0xdAf00F5eE2158dD58E0d3857851c432E34A3A851', gracePeriod: 0 },
+ // sendConfig: {
+ // executorConfig: { maxMessageSize: 10000, executor: '0x718B92b5CB0a5552039B593faF724D182A881eDA' },
+ // ulnConfig: {
+ // confirmations: 2,
+ // requiredDVNs: ['0x8eebf8b423B73bFCa51a1Db4B7354AA0bFCA9193'],
+ // optionalDVNs: [],
+ // optionalDVNThreshold: 0,
+ // },
+ // },
+ receiveConfig: {
+ ulnConfig: {
+ confirmations: 1,
+ requiredDVNs: ['0x8eebf8b423B73bFCa51a1Db4B7354AA0bFCA9193'],
+ optionalDVNs: [],
+ optionalDVNThreshold: 0,
+ },
+ },
+ },
+ },
+ ],
+}
+```
+
+
+
+
+ npx hardhat lz:oapp:config:wire --oapp-config YOUR_OAPP_CONFIG
+
+
+
+Calls the configuration functions between your deployed OApp contracts on every chain based on the provided `layerzero.config.ts`.
+
+Running `lz:oapp:wire` will make the following function calls per pathway connection for a fully defined config file using your specified settings and your environment variables (Private Keys and RPCs):
+
+- function setPeer(uint32 \_eid, bytes32 \_peer) public virtual onlyOwner {}
+
+- function setConfig(address \_oapp, address \_lib, SetConfigParam[] calldata \_params) external onlyRegistered(\_lib) {}
+
+- function setEnforcedOptions(EnforcedOptionParam[] calldata \_enforcedOptions) public virtual onlyOwner {}
+
+- function setSendLibrary(address \_oapp, uint32 \_eid, address \_newLib) external onlyRegisteredOrDefault(\_newLib) isSendLib(\_newLib) onlySupportedEid(\_newLib, \_eid) {}
+
+- function setReceiveLibrary(address \_oapp, uint32 \_eid, address \_newLib, uint256 \_gracePeriod) external onlyRegisteredOrDefault(\_newLib) isReceiveLib(\_newLib) onlySupportedEid(\_newLib, \_eid) {}
+
+To use this task, run:
+
+```bash
+npx hardhat lz:oapp:wire --oapp-config YOUR_LAYERZERO_CONFIG_FILE
+```
+
+Whenever you make changes to the configuration, run `lz:oapp:wire` again. The task will check your current configuration, and only apply NEW changes.
+
+To use a Gnosis Safe multisig as the signer for these transactions, add the following to each network in your `hardhat.config.ts` and add the `--safe` flag to `lz:oapp:wire --safe`:
+
+```yml
+// hardhat.config.ts
+
+networks: {
+ // Include configurations for other networks as needed
+ fuji: {
+ /* ... */
+ // Network-specific settings
+ safeConfig: {
+ safeUrl: 'http://something', // URL of the Safe API, not the Safe itself
+ safeAddress: 'address'
+ }
+ }
+}
+```
+
+
+
+ npx hardhat lz:oapp:config:get --oapp-config YOUR_OAPP_CONFIG
+
+
+
+Returns your current OApp's configuration for each chain and pathway in 3 columns:
+
+- **Custom Configuration**: the changes that your `layerzero.config.ts` currently has set
+
+- **Default Configuration**: the default placeholder configuration that LayerZero provides
+
+- **Active Configuration**: the active configuration that applies to the message pathway (Defaults + Custom Values)
+
+If you do NOT explicitly set each configuration parameter, your OApp will fallback to the placeholder parameters in the default config.
+
+```bash
+┌────────────────────┬───────────────────────────────────────────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────┐
+│ │ Custom OApp Config │ Default OApp Config │ Active OApp Config │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ localNetworkName │ arbsep │ arbsep │ arbsep │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ remoteNetworkName │ sepolia │ sepolia │ sepolia │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ sendLibrary │ 0x4f7cd4DA19ABB31b0eC98b9066B9e857B1bf9C0E │ 0x4f7cd4DA19ABB31b0eC98b9066B9e857B1bf9C0E │ 0x4f7cd4DA19ABB31b0eC98b9066B9e857B1bf9C0E │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ receiveLibrary │ 0x75Db67CDab2824970131D5aa9CECfC9F69c69636 │ 0x75Db67CDab2824970131D5aa9CECfC9F69c69636 │ 0x75Db67CDab2824970131D5aa9CECfC9F69c69636 │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ sendUlnConfig │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │
+│ │ │ confirmations │ 1 │ │ │ confirmations │ 1 │ │ │ confirmations │ 1 │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │
+│ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │
+│ │ │ │ └───┴────────────────────────────────────────────┘ │ │ │ │ └───┴────────────────────────────────────────────┘ │ │ │ │ └───┴────────────────────────────────────────────┘ │ │
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ optionalDVNs │ │ │ │ optionalDVNs │ │ │ │ optionalDVNs │ │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ optionalDVNThreshold │ 0 │ │ │ optionalDVNThreshold │ 0 │ │ │ optionalDVNThreshold │ 0 │ │
+│ │ └──────────────────────┴────────────────────────────────────────────────────┘ │ └──────────────────────┴────────────────────────────────────────────────────┘ │ └──────────────────────┴────────────────────────────────────────────────────┘ │
+│ │ │ │ │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ sendExecutorConfig │ ┌────────────────┬────────────────────────────────────────────┐ │ ┌────────────────┬────────────────────────────────────────────┐ │ ┌────────────────┬────────────────────────────────────────────┐ │
+│ │ │ executor │ 0x5Df3a1cEbBD9c8BA7F8dF51Fd632A9aef8308897 │ │ │ executor │ 0x5Df3a1cEbBD9c8BA7F8dF51Fd632A9aef8308897 │ │ │ executor │ 0x5Df3a1cEbBD9c8BA7F8dF51Fd632A9aef8308897 │ │
+│ │ ├────────────────┼────────────────────────────────────────────┤ │ ├────────────────┼────────────────────────────────────────────┤ │ ├────────────────┼────────────────────────────────────────────┤ │
+│ │ │ maxMessageSize │ 10000 │ │ │ maxMessageSize │ 10000 │ │ │ maxMessageSize │ 10000 │ │
+│ │ └────────────────┴────────────────────────────────────────────┘ │ └────────────────┴────────────────────────────────────────────┘ │ └────────────────┴────────────────────────────────────────────┘ │
+│ │ │ │ │
+├────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────┤
+│ receiveUlnConfig │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │ ┌──────────────────────┬────────────────────────────────────────────────────┐ │
+│ │ │ confirmations │ 2 │ │ │ confirmations │ 2 │ │ │ confirmations │ 2 │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │ │ requiredDVNs │ ┌───┬────────────────────────────────────────────┐ │ │
+│ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │ │ │ │ 0 │ 0x53f488E93b4f1b60E8E83aa374dBe1780A1EE8a8 │ │ │
+│ │ │ │ └───┴────────────────────────────────────────────┘ │ │ │ │ └───┴────────────────────────────────────────────┘ │ │ │ │ └───┴────────────────────────────────────────────┘ │ │
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ optionalDVNs │ │ │ │ optionalDVNs │ │ │ │ optionalDVNs │ │ │
+│ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │ ├──────────────────────┼────────────────────────────────────────────────────┤ │
+│ │ │ optionalDVNThreshold │ 0 │ │ │ optionalDVNThreshold │ 0 │ │ │ optionalDVNThreshold │ 0 │ │
+│ │ └──────────────────────┴────────────────────────────────────────────────────┘ │ └──────────────────────┴────────────────────────────────────────────────────┘ │ └──────────────────────┴────────────────────────────────────────────────────┘ │
+│ │ │ │ │
+└────────────────────┴───────────────────────────────────────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────┘
+```
+
+
+
+ npx hardhat lz:oapp:config:get:executor --oapp-config YOUR_OAPP_CONFIG
+
+
+
+Returns the LayerZero Executor config for each network in your `hardhat.config.ts`. You can use this method to see the max destination gas in wei (`nativeCap`) you can request in your [`execution options`](https://docs.layerzero.network/v2/developers/evm/gas-settings/options).
+
+```bash
+┌───────────────────┬────────────────────────────────────────────┐
+│ localNetworkName │ mantle │
+├───────────────────┼────────────────────────────────────────────┤
+│ remoteNetworkName │ polygon │
+├───────────────────┼────────────────────────────────────────────┤
+│ executorDstConfig │ ┌────────────────┬───────────────────────┐ │
+│ │ │ baseGas │ 85000 │ │
+│ │ ├────────────────┼───────────────────────┤ │
+│ │ │ multiplierBps │ 12000 │ │
+│ │ ├────────────────┼───────────────────────┤ │
+│ │ │ floorMarginUSD │ 5000000000000000000 │ │
+│ │ ├────────────────┼───────────────────────┤ │
+│ │ │ nativeCap │ 681000000000000000000 │ │
+│ │ └────────────────┴───────────────────────┘ │
+│ │ │
+└───────────────────┴────────────────────────────────────────────┘
+```
+
+
+
+## Developing Contracts
+
+#### Installing dependencies
+
+We recommend using `pnpm` as a package manager (but you can of course use a package manager of your choice):
+
+```bash
+pnpm install
+```
+
+#### Compiling your contracts
+
+This project supports both `hardhat` and `forge` compilation. By default, the `compile` command will execute both:
+
+```bash
+pnpm compile
+```
+
+If you prefer one over the other, you can use the tooling-specific commands:
+
+```bash
+pnpm compile:forge
+pnpm compile:hardhat
+```
+
+Or adjust the `package.json` to for example remove `forge` build:
+
+```diff
+- "compile": "$npm_execpath run compile:forge && $npm_execpath run compile:hardhat",
+- "compile:forge": "forge build",
+- "compile:hardhat": "hardhat compile",
++ "compile": "hardhat compile"
+```
+
+#### Running tests
+
+Similarly to the contract compilation, we support both `hardhat` and `forge` tests. By default, the `test` command will execute both:
+
+```bash
+pnpm test
+```
+
+If you prefer one over the other, you can use the tooling-specific commands:
+
+```bash
+pnpm test:forge
+pnpm test:hardhat
+```
+
+Or adjust the `package.json` to for example remove `hardhat` tests:
+
+```diff
+- "test": "$npm_execpath test:forge && $npm_execpath test:hardhat",
+- "test:forge": "forge test",
+- "test:hardhat": "$npm_execpath hardhat test"
++ "test": "forge test"
+```
+
+## Deploying Contracts
+
+Set up deployer wallet/account:
+
+- Rename `.env.example` -> `.env`
+- Choose your preferred means of setting up your deployer wallet/account:
+
+```
+MNEMONIC="test test test test test test test test test test test junk"
+or...
+PRIVATE_KEY="0xabc...def"
+```
+
+- Fund this address with the corresponding chain's native tokens you want to deploy to.
+
+To deploy your contracts to your desired blockchains, run the following command in your project's folder:
+
+```bash
+npx hardhat lz:deploy
+```
+
+More information about available CLI arguments can be found using the `--help` flag:
+
+```bash
+npx hardhat lz:deploy --help
+```
+
+By following these steps, you can focus more on creating innovative omnichain solutions and less on the complexities of cross-chain communication.
+
+
+
+## Connecting Contracts
+
+### Ethereum Configurations
+
+Fill out your `layerzero.config.ts` with the contracts you want to connect. You can generate the default config file for your declared hardhat networks by running:
+
+```bash
+npx hardhat lz:oapp:config:init --contract-name [YOUR_CONTRACT_NAME] --oapp-config [CONFIG_NAME]
+```
+
+> [!NOTE]
+> You may need to change the contract name if you're deploying multiple OApp contracts on different chains (e.g., OFT and OFT Adapter).
+
+
+
+```typescript
+const ethereumContract: OmniPointHardhat = {
+ eid: EndpointId.ETHEREUM_V2_MAINNET,
+ contractName: "MyOFTAdapter",
+};
+
+const arbitrumContract: OmniPointHardhat = {
+ eid: EndpointId.ARBITRUM_V2_MAINNET,
+ contractName: "MyOFT",
+};
+```
+
+Then define the pathway you want to create from and to each contract:
+
+```typescript
+connections: [
+ // ETH <--> ARB PATHWAY: START
+ {
+ from: ethereumContract,
+ to: arbitrumContract,
+ },
+ {
+ from: arbitrumContract,
+ to: ethereumContract,
+ },
+ // ETH <--> ARB PATHWAY: END
+];
+```
+
+Finally, define the config settings for each direction of the pathway:
+
+```typescript
+connections: [
+ // ETH <--> ARB PATHWAY: START
+ {
+ from: ethereumContract,
+ to: arbitrumContract,
+ config: {
+ sendLibrary: contractsConfig.ethereum.sendLib302,
+ receiveLibraryConfig: {
+ receiveLibrary: contractsConfig.ethereum.receiveLib302,
+ gracePeriod: BigInt(0),
+ },
+ // Optional Receive Library Timeout for when the Old Receive Library Address will no longer be valid
+ receiveLibraryTimeoutConfig: {
+ lib: "0x0000000000000000000000000000000000000000",
+ expiry: BigInt(0),
+ },
+ // Optional Send Configuration
+ // @dev Controls how the `from` chain sends messages to the `to` chain.
+ sendConfig: {
+ executorConfig: {
+ maxMessageSize: 10000,
+ // The configured Executor address
+ executor: contractsConfig.ethereum.executor,
+ },
+ ulnConfig: {
+ // The number of block confirmations to wait on BSC before emitting the message from the source chain.
+ confirmations: BigInt(15),
+ // The address of the DVNs you will pay to verify a sent message on the source chain ).
+ // The destination tx will wait until ALL `requiredDVNs` verify the message.
+ requiredDVNs: [
+ contractsConfig.ethereum.horizenDVN, // Horizen
+ contractsConfig.ethereum.polyhedraDVN, // Polyhedra
+ contractsConfig.ethereum.animocaBlockdaemonDVN, // Animoca-Blockdaemon (only available on ETH <-> Arbitrum One)
+ contractsConfig.ethereum.lzDVN, // LayerZero Labs
+ ],
+ // The address of the DVNs you will pay to verify a sent message on the source chain ).
+ // The destination tx will wait until the configured threshold of `optionalDVNs` verify a message.
+ optionalDVNs: [],
+ // The number of `optionalDVNs` that need to successfully verify the message for it to be considered Verified.
+ optionalDVNThreshold: 0,
+ },
+ },
+ // Optional Receive Configuration
+ // @dev Controls how the `from` chain receives messages from the `to` chain.
+ receiveConfig: {
+ ulnConfig: {
+ // The number of block confirmations to expect from the `to` chain.
+ confirmations: BigInt(20),
+ // The address of the DVNs your `receiveConfig` expects to receive verifications from on the `from` chain ).
+ // The `from` chain's OApp will wait until the configured threshold of `requiredDVNs` verify the message.
+ requiredDVNs: [
+ contractsConfig.ethereum.lzDVN, // LayerZero Labs DVN
+ contractsConfig.ethereum.animocaBlockdaemonDVN, // Blockdaemon-Animoca
+ contractsConfig.ethereum.horizenDVN, // Horizen Labs
+ contractsConfig.ethereum.polyhedraDVN, // Polyhedra
+ ],
+ // The address of the `optionalDVNs` you expect to receive verifications from on the `from` chain ).
+ // The destination tx will wait until the configured threshold of `optionalDVNs` verify the message.
+ optionalDVNs: [],
+ // The number of `optionalDVNs` that need to successfully verify the message for it to be considered Verified.
+ optionalDVNThreshold: 0,
+ },
+ },
+ // Optional Enforced Options Configuration
+ // @dev Controls how much gas to use on the `to` chain, which the user pays for on the source `from` chain.
+ enforcedOptions: [
+ {
+ msgType: 1,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 65000,
+ value: 0,
+ },
+ {
+ msgType: 2,
+ optionType: ExecutorOptionType.LZ_RECEIVE,
+ gas: 65000,
+ value: 0,
+ },
+ {
+ msgType: 2,
+ optionType: ExecutorOptionType.COMPOSE,
+ index: 0,
+ gas: 50000,
+ value: 0,
+ },
+ ],
+ },
+ },
+ {
+ from: arbitrumContract,
+ to: ethereumContract,
+ },
+ // ETH <--> ARB PATHWAY: END
+];
+```
+
+To set these config settings, run:
+
+```bash
+npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts
+```
+
+
+ Join our community on Discord | Follow us on Twitter
+
diff --git a/examples/oft-upgradeable/contracts/MyOFTAdapterUpgradeable.sol b/examples/oft-upgradeable/contracts/MyOFTAdapterUpgradeable.sol
new file mode 100644
index 000000000..b29d8e5ca
--- /dev/null
+++ b/examples/oft-upgradeable/contracts/MyOFTAdapterUpgradeable.sol
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { OFTAdapterUpgradeable } from "@layerzerolabs/oft-evm-upgradeable/contracts/oft/OFTAdapterUpgradeable.sol";
+
+contract MyOFTAdapterUpgradeable is OFTAdapterUpgradeable {
+ constructor(address _token, address _lzEndpoint) OFTAdapterUpgradeable(_token, _lzEndpoint) {}
+
+ function initialize(address _delegate) public initializer {
+ __OFTAdapter_init(_delegate);
+ __Ownable_init(_delegate);
+ }
+}
diff --git a/examples/oft-upgradeable/contracts/MyOFTUpgradeable.sol b/examples/oft-upgradeable/contracts/MyOFTUpgradeable.sol
new file mode 100644
index 000000000..d7c4f8a1b
--- /dev/null
+++ b/examples/oft-upgradeable/contracts/MyOFTUpgradeable.sol
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { OFTUpgradeable } from "@layerzerolabs/oft-evm-upgradeable/contracts/oft/OFTUpgradeable.sol";
+
+contract MyOFTUpgradeable is OFTUpgradeable {
+ constructor(address _lzEndpoint) OFTUpgradeable(_lzEndpoint) {}
+
+ function initialize(string memory _name, string memory _symbol, address _delegate) public initializer {
+ __OFT_init(_name, _symbol, _delegate);
+ __Ownable_init(_delegate);
+ }
+}
diff --git a/examples/oft-upgradeable/contracts/mocks/MyERC20Mock.sol b/examples/oft-upgradeable/contracts/mocks/MyERC20Mock.sol
new file mode 100644
index 000000000..9ea57e789
--- /dev/null
+++ b/examples/oft-upgradeable/contracts/mocks/MyERC20Mock.sol
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.20;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+// @dev WARNING: This is for testing purposes only
+contract MyERC20Mock is ERC20 {
+ constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+}
diff --git a/examples/oft-upgradeable/contracts/mocks/MyOFTAdapterUpgradeableMock.sol b/examples/oft-upgradeable/contracts/mocks/MyOFTAdapterUpgradeableMock.sol
new file mode 100644
index 000000000..ad9dd27cf
--- /dev/null
+++ b/examples/oft-upgradeable/contracts/mocks/MyOFTAdapterUpgradeableMock.sol
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { MyOFTAdapterUpgradeable } from "../MyOFTAdapterUpgradeable.sol";
+
+// @dev WARNING: This is for testing purposes only
+contract MyOFTAdapterUpgradeableMock is MyOFTAdapterUpgradeable {
+ constructor(address _token, address _lzEndpoint) MyOFTAdapterUpgradeable(_token, _lzEndpoint) {}
+}
diff --git a/examples/oft-upgradeable/contracts/mocks/MyOFTUpgradeableMock.sol b/examples/oft-upgradeable/contracts/mocks/MyOFTUpgradeableMock.sol
new file mode 100644
index 000000000..7f9754a97
--- /dev/null
+++ b/examples/oft-upgradeable/contracts/mocks/MyOFTUpgradeableMock.sol
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.22;
+
+import { MyOFTUpgradeable } from "../MyOFTUpgradeable.sol";
+
+// @dev WARNING: This is for testing purposes only
+contract MyOFTUpgradeableMock is MyOFTUpgradeable {
+ constructor(address _lzEndpoint) MyOFTUpgradeable(_lzEndpoint) {}
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+}
diff --git a/examples/oft-upgradeable/deploy/MyOFTAdapterUpgradeable.ts b/examples/oft-upgradeable/deploy/MyOFTAdapterUpgradeable.ts
new file mode 100644
index 000000000..530c78aca
--- /dev/null
+++ b/examples/oft-upgradeable/deploy/MyOFTAdapterUpgradeable.ts
@@ -0,0 +1,39 @@
+import { type DeployFunction } from 'hardhat-deploy/types'
+
+const contractName = 'MyOFTAdapterUpgradeable'
+
+const deploy: DeployFunction = async (hre) => {
+ const { deploy } = hre.deployments
+ const signer = (await hre.ethers.getSigners())[0]
+ console.log(`deploying ${contractName} on network: ${hre.network.name} with ${signer.address}`)
+
+ const endpointV2Deployment = await hre.deployments.get('EndpointV2')
+ try {
+ const proxy = await hre.ethers.getContract('MyOFTUpgradeable')
+ console.log(`Proxy: ${proxy.address}`)
+ } catch (e) {
+ console.log(`Proxy not found`)
+ }
+
+ await deploy(contractName, {
+ from: signer.address,
+ args: ['0x', endpointV2Deployment.address], // replace '0x' with the address of the ERC-20 token
+ log: true,
+ waitConfirmations: 1,
+ skipIfAlreadyDeployed: false,
+ proxy: {
+ checkABIConflict: false,
+ owner: signer.address,
+ execute: {
+ init: {
+ methodName: 'initialize',
+ args: [signer.address],
+ },
+ },
+ },
+ })
+}
+
+deploy.tags = [contractName]
+
+export default deploy
diff --git a/examples/oft-upgradeable/deploy/MyOFTUpgradeable.ts b/examples/oft-upgradeable/deploy/MyOFTUpgradeable.ts
new file mode 100644
index 000000000..37806bcd7
--- /dev/null
+++ b/examples/oft-upgradeable/deploy/MyOFTUpgradeable.ts
@@ -0,0 +1,35 @@
+import { type DeployFunction } from 'hardhat-deploy/types'
+
+const contractName = 'MyOFTUpgradeable'
+
+const deploy: DeployFunction = async (hre) => {
+ const { deploy } = hre.deployments
+ const signer = (await hre.ethers.getSigners())[0]
+ console.log(`deploying ${contractName} on network: ${hre.network.name} with ${signer.address}`)
+
+ const endpointV2Deployment = await hre.deployments.get('EndpointV2')
+ const existing = await hre.ethers.getContract('MyOFTUpgradeable')
+ console.log(`Proxy: ${existing.address}`)
+
+ await deploy(contractName, {
+ from: signer.address,
+ args: [endpointV2Deployment.address],
+ log: true,
+ waitConfirmations: 1,
+ skipIfAlreadyDeployed: false,
+ proxy: {
+ checkABIConflict: false,
+ owner: signer.address,
+ execute: {
+ init: {
+ methodName: 'initialize',
+ args: ['MyOFT', 'MOFT', signer.address], // TODO: add name/symbol
+ },
+ },
+ },
+ })
+}
+
+deploy.tags = [contractName]
+
+export default deploy
diff --git a/examples/oft-upgradeable/foundry.toml b/examples/oft-upgradeable/foundry.toml
new file mode 100644
index 000000000..37c3d3533
--- /dev/null
+++ b/examples/oft-upgradeable/foundry.toml
@@ -0,0 +1,27 @@
+[profile.default]
+solc-version = '0.8.22'
+src = 'contracts'
+out = 'out'
+test = 'test/foundry'
+cache_path = 'cache/foundry'
+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 ou 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-upgradeable/hardhat.config.ts b/examples/oft-upgradeable/hardhat.config.ts
new file mode 100644
index 000000000..da8179cce
--- /dev/null
+++ b/examples/oft-upgradeable/hardhat.config.ts
@@ -0,0 +1,82 @@
+// 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 '@openzeppelin/hardhat-upgrades'
+import 'hardhat-deploy'
+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'
+
+// 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',
+ },
+ solidity: {
+ compilers: [
+ {
+ version: '0.8.22',
+ settings: {
+ optimizer: {
+ enabled: true,
+ runs: 200,
+ },
+ },
+ },
+ ],
+ },
+ networks: {
+ 'sepolia-testnet': {
+ eid: EndpointId.SEPOLIA_V2_TESTNET,
+ url: process.env.RPC_URL_SEPOLIA || 'https://rpc.sepolia.org/',
+ accounts,
+ },
+ 'avalanche-testnet': {
+ eid: EndpointId.AVALANCHE_V2_TESTNET,
+ url: process.env.RPC_URL_FUJI || 'https://rpc.ankr.com/avalanche_fuji',
+ accounts,
+ },
+ 'amoy-testnet': {
+ eid: EndpointId.AMOY_V2_TESTNET,
+ url: process.env.RPC_URL_AMOY || 'https://polygon-amoy-bor-rpc.publicnode.com',
+ accounts,
+ },
+ },
+ namedAccounts: {
+ deployer: {
+ default: 0, // wallet address of index[0], of the mnemonic in .env
+ },
+ },
+}
+
+export default config
diff --git a/examples/oft-upgradeable/layerzero.config.ts b/examples/oft-upgradeable/layerzero.config.ts
new file mode 100644
index 000000000..5a239c8ed
--- /dev/null
+++ b/examples/oft-upgradeable/layerzero.config.ts
@@ -0,0 +1,60 @@
+import { EndpointId } from '@layerzerolabs/lz-definitions'
+
+import type { OAppOmniGraphHardhat, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat'
+
+const sepoliaContract: OmniPointHardhat = {
+ eid: EndpointId.SEPOLIA_V2_TESTNET,
+ contractName: 'MyOFT',
+}
+
+const fujiContract: OmniPointHardhat = {
+ eid: EndpointId.AVALANCHE_V2_TESTNET,
+ contractName: 'MyOFT',
+}
+
+const amoyContract: OmniPointHardhat = {
+ eid: EndpointId.AMOY_V2_TESTNET,
+ contractName: 'MyOFT',
+}
+
+const config: OAppOmniGraphHardhat = {
+ contracts: [
+ {
+ contract: fujiContract,
+ },
+ {
+ contract: sepoliaContract,
+ },
+ {
+ contract: amoyContract,
+ },
+ ],
+ connections: [
+ {
+ from: fujiContract,
+ to: sepoliaContract,
+ },
+ {
+ from: fujiContract,
+ to: amoyContract,
+ },
+ {
+ from: sepoliaContract,
+ to: fujiContract,
+ },
+ {
+ from: sepoliaContract,
+ to: amoyContract,
+ },
+ {
+ from: amoyContract,
+ to: sepoliaContract,
+ },
+ {
+ from: amoyContract,
+ to: fujiContract,
+ },
+ ],
+}
+
+export default config
diff --git a/examples/oft-upgradeable/package.json b/examples/oft-upgradeable/package.json
new file mode 100644
index 000000000..87335bee7
--- /dev/null
+++ b/examples/oft-upgradeable/package.json
@@ -0,0 +1,79 @@
+{
+ "name": "@layerzerolabs/oft-upgradeable-example",
+ "version": "0.0.1",
+ "private": true,
+ "license": "MIT",
+ "scripts": {
+ "clean": "rm -rf artifacts cache out",
+ "compile": "$npm_execpath run compile:forge && $npm_execpath run compile:hardhat",
+ "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:forge": "forge test",
+ "test:hardhat": "hardhat test"
+ },
+ "resolutions": {
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.23.9",
+ "@layerzerolabs/devtools-evm-hardhat": "^1.2.0",
+ "@layerzerolabs/eslint-config-next": "~2.3.39",
+ "@layerzerolabs/lz-definitions": "^2.3.39",
+ "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.39",
+ "@layerzerolabs/lz-v2-utilities": "^2.3.39",
+ "@layerzerolabs/oapp-evm": "^0.0.4",
+ "@layerzerolabs/oapp-evm-upgradeable": "^0.0.1",
+ "@layerzerolabs/oft-evm": "^0.1.0",
+ "@layerzerolabs/oft-evm-upgradeable": "^0.0.1",
+ "@layerzerolabs/prettier-config-next": "^2.3.39",
+ "@layerzerolabs/solhint-config": "^2.3.39",
+ "@layerzerolabs/test-devtools-evm-foundry": "~2.0.0",
+ "@layerzerolabs/toolbox-foundry": "~0.1.9",
+ "@layerzerolabs/toolbox-hardhat": "~0.4.0",
+ "@nomiclabs/hardhat-ethers": "^2.2.3",
+ "@nomiclabs/hardhat-waffle": "^2.0.6",
+ "@openzeppelin/contracts": "^5.0.2",
+ "@openzeppelin/contracts-upgradeable": "^5.0.2",
+ "@openzeppelin/hardhat-upgrades": "^1.28.0",
+ "@rushstack/eslint-patch": "^1.7.0",
+ "@types/chai": "^4.3.11",
+ "@types/mocha": "^10.0.6",
+ "@types/node": "~18.18.14",
+ "chai": "^4.4.1",
+ "dotenv": "^16.4.1",
+ "eslint": "^8.55.0",
+ "eslint-plugin-jest-extended": "~2.0.0",
+ "ethers": "^5.7.2",
+ "hardhat": "^2.22.10",
+ "hardhat-contract-sizer": "^2.10.0",
+ "hardhat-deploy": "^0.12.1",
+ "hardhat-deploy-ethers": "^0.3.0-beta.13",
+ "mocha": "^10.2.0",
+ "prettier": "^3.2.5",
+ "solhint": "^4.1.1",
+ "solidity-bytes-utils": "^0.8.2",
+ "ts-node": "^10.9.2",
+ "typescript": "^5.4.4"
+ },
+ "engines": {
+ "node": ">=18.16.0"
+ },
+ "pnpm": {
+ "overrides": {
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ }
+ },
+ "overrides": {
+ "ethers": "^5.7.2",
+ "hardhat-deploy": "^0.12.1"
+ }
+}
diff --git a/examples/oft-upgradeable/solhint.config.js b/examples/oft-upgradeable/solhint.config.js
new file mode 100644
index 000000000..52efe629c
--- /dev/null
+++ b/examples/oft-upgradeable/solhint.config.js
@@ -0,0 +1 @@
+module.exports = require('@layerzerolabs/solhint-config');
diff --git a/examples/oft-upgradeable/test/foundry/MyOFTUpgradeable.sol b/examples/oft-upgradeable/test/foundry/MyOFTUpgradeable.sol
new file mode 100644
index 000000000..36b7306de
--- /dev/null
+++ b/examples/oft-upgradeable/test/foundry/MyOFTUpgradeable.sol
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.20;
+
+import { OFTTest } from "@layerzerolabs/oft-evm-upgradeable/test/OFT.t.sol";
+
+contract MyOFTUpgradeable is OFTTest {
+ // TODO add any additional tests beyond the default set.
+}
diff --git a/examples/oft-upgradeable/test/hardhat/MyOFTUpgradeable.test.ts b/examples/oft-upgradeable/test/hardhat/MyOFTUpgradeable.test.ts
new file mode 100644
index 000000000..30fb25713
--- /dev/null
+++ b/examples/oft-upgradeable/test/hardhat/MyOFTUpgradeable.test.ts
@@ -0,0 +1,100 @@
+import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'
+import { expect } from 'chai'
+import { Contract, ContractFactory } from 'ethers'
+import { deployments, ethers, upgrades } from 'hardhat'
+
+describe('MyOFTUpgradeable Test', () => {
+ // Constant representing a mock Endpoint ID for testing purposes
+ const eidA = 1
+ const eidB = 2
+ // Declaration of variables to be used in the test suite
+ let MyOFT: ContractFactory
+ let EndpointV2Mock: ContractFactory
+ let ownerA: SignerWithAddress
+ let ownerB: SignerWithAddress
+ let endpointOwner: SignerWithAddress
+ let myOFTA: Contract
+ let myOFTB: Contract
+ let mockEndpointV2A: Contract
+ let mockEndpointV2B: Contract
+
+ before(async function () {
+ MyOFT = await ethers.getContractFactory('MyOFTUpgradeable')
+
+ // Fetching the first three signers (accounts) from Hardhat's local Ethereum network
+ const signers = await ethers.getSigners()
+
+ ownerA = signers.at(0)!
+ ownerB = signers.at(1)!
+ endpointOwner = signers.at(2)!
+
+ // The EndpointV2Mock contract comes from @layerzerolabs/test-devtools-evm-hardhat package
+ // and its artifacts are connected as external artifacts to this project
+ //
+ // Unfortunately, hardhat itself does not yet provide a way of connecting external artifacts,
+ // so we rely on hardhat-deploy to create a ContractFactory for EndpointV2Mock
+ //
+ // See https://github.com/NomicFoundation/hardhat/issues/1040
+ const EndpointV2MockArtifact = await deployments.getArtifact('EndpointV2Mock')
+ EndpointV2Mock = new ContractFactory(EndpointV2MockArtifact.abi, EndpointV2MockArtifact.bytecode, endpointOwner)
+ })
+
+ // beforeEach hook for setup that runs before each test in the block
+ beforeEach(async function () {
+ // Deploying a mock LZEndpoint with the given Endpoint ID
+ mockEndpointV2A = await EndpointV2Mock.deploy(eidA)
+ mockEndpointV2B = await EndpointV2Mock.deploy(eidB)
+
+ // Deploying two instances of MyOFT contract with different identifiers and linking them to the mock LZEndpoint
+ myOFTA = await MyOFT.deploy(mockEndpointV2A.address)
+ myOFTB = await MyOFT.deploy(mockEndpointV2B.address)
+
+ // Setting destination endpoints in the LZEndpoint mock for each MyOFT instance
+ await mockEndpointV2A.setDestLzEndpoint(myOFTB.address, mockEndpointV2B.address)
+ await mockEndpointV2B.setDestLzEndpoint(myOFTA.address, mockEndpointV2A.address)
+ })
+
+ it('should upgrade', async () => {
+ // Deploying the upgradeable contract
+ const MyOFTUpgradeable = await ethers.getContractFactory('MyOFTUpgradeable')
+ const myOFTUpgradeable = await upgrades.deployProxy(MyOFTUpgradeable, ['MyOFT', 'MOFT', ownerA.address], {
+ initializer: 'initialize',
+ constructorArgs: [mockEndpointV2A.address],
+ unsafeAllow: ['constructor', 'state-variable-immutable'],
+ })
+ const myOFTUpgradeableImpl = (await upgrades.admin.getInstance(ownerA)).functions.getProxyImplementation(
+ myOFTUpgradeable.address
+ )
+
+ // Upgrade the contract to the mock, so it has a "mint" function
+ const MyOFTUpgradeableMock = await ethers.getContractFactory('MyOFTUpgradeableMock')
+ const myOFTUpgradeableMock = await upgrades.upgradeProxy(myOFTUpgradeable.address, MyOFTUpgradeableMock, {
+ constructorArgs: [mockEndpointV2A.address],
+ unsafeAllow: ['constructor', 'state-variable-immutable'],
+ })
+
+ // Ensure the proxy remains constant after the upgrade
+ expect(myOFTUpgradeable.address).to.equal(myOFTUpgradeableMock.address)
+ const myOFTUpgradeableMockImpl = (await upgrades.admin.getInstance(ownerA)).functions.getProxyImplementation(
+ myOFTUpgradeableMock.address
+ )
+ // ensure the implementation address changed
+ expect(myOFTUpgradeableImpl).to.not.equal(myOFTUpgradeableMockImpl)
+ const [intialBalance] = await myOFTUpgradeableMock.functions.balanceOf(ownerA.address)
+ // ensure we can mint now
+ await (await myOFTUpgradeableMock.functions.mint(ownerA.address, 100)).wait()
+ const [finalBalance] = await myOFTUpgradeableMock.functions.balanceOf(ownerA.address)
+ expect(finalBalance.toNumber()).to.equal(intialBalance.add(100).toNumber())
+
+ // Downgrade the contract to remove mint
+ const myOFTUpgradeableAgain = await upgrades.upgradeProxy(myOFTUpgradeableMock.address, MyOFTUpgradeable, {
+ constructorArgs: [mockEndpointV2A.address],
+ unsafeAllow: ['constructor', 'state-variable-immutable'],
+ })
+ // Ensure the proxy remains constant after the upgrade
+ expect(myOFTUpgradeableMock.address).to.equal(myOFTUpgradeableAgain.address)
+ // Ensure that the tokens don't disappear into thin air
+ const [postUpgradeBalance] = await myOFTUpgradeableMock.functions.balanceOf(ownerA.address)
+ expect(postUpgradeBalance.toNumber()).to.equal(finalBalance.toNumber())
+ })
+})
diff --git a/examples/oft-upgradeable/tsconfig.json b/examples/oft-upgradeable/tsconfig.json
new file mode 100644
index 000000000..027ad0f3f
--- /dev/null
+++ b/examples/oft-upgradeable/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "exclude": ["node_modules"],
+ "include": ["deploy", "tasks", "test", "hardhat.config.ts"],
+ "compilerOptions": {
+ "target": "es2020",
+ "module": "commonjs",
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "resolveJsonModule": true
+ }
+}
diff --git a/packages/create-lz-oapp/src/config.ts b/packages/create-lz-oapp/src/config.ts
index 10561f9ee..ddfe2c023 100644
--- a/packages/create-lz-oapp/src/config.ts
+++ b/packages/create-lz-oapp/src/config.ts
@@ -50,6 +50,12 @@ export const EXAMPLES: Example[] = [
label: 'NativeOFTAdapter',
repository,
directory: 'examples/native-oft-adapter',
+ },
+ {
+ id: 'oft-upgradeable',
+ label: 'Upgradeable OFT',
+ repository,
+ directory: 'examples/oft-upgradeable',
ref,
},
// The Solana OFT example is feature flagged for the time being
diff --git a/packages/oapp-evm-upgradeable/.gitignore b/packages/oapp-evm-upgradeable/.gitignore
new file mode 100644
index 000000000..4d5fb1a70
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/.gitignore
@@ -0,0 +1,6 @@
+cache
+
+# artifacts; ignore all files except the local contract artifacts.
+artifacts/*
+!artifacts/oapp/*
+!artifacts/precrime/*
diff --git a/packages/oapp-evm-upgradeable/README.md b/packages/oapp-evm-upgradeable/README.md
new file mode 100644
index 000000000..30f6c962b
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/README.md
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+@layerzerolabs/oapp-evm-upgradeable
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+```bash
+pnpm install @layerzerolabs/oapp-evm-upgradeable
+```
+
+```bash
+pnpm install @layerzerolabs/oapp-evm-upgradeable
+```
+
+```bash
+npm install @layerzerolabs/oapp-evm-upgradeable
+```
diff --git a/packages/oapp-evm-upgradeable/artifacts/Address.sol/Address.json b/packages/oapp-evm-upgradeable/artifacts/Address.sol/Address.json
index 0ce3f6bc5..4de50ec24 100644
--- a/packages/oapp-evm-upgradeable/artifacts/Address.sol/Address.json
+++ b/packages/oapp-evm-upgradeable/artifacts/Address.sol/Address.json
@@ -18,12 +18,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202d8742e4ba1e0d9d56af4944f1b7f9935974d862128e9662ec43907dcb9a04fd64736f6c63430008160033",
- "sourceMap": "195:6066:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:39;;;;;;;;;;;;;;;;;",
+ "sourceMap": "195:6066:110:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:110;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202d8742e4ba1e0d9d56af4944f1b7f9935974d862128e9662ec43907dcb9a04fd64736f6c63430008160033",
- "sourceMap": "195:6066:39:-:0;;;;;;;;",
+ "sourceMap": "195:6066:110:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -80,5 +80,5 @@
},
"version": 1
},
- "id": 39
+ "id": 110
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/AddressCast.sol/AddressCast.json b/packages/oapp-evm-upgradeable/artifacts/AddressCast.sol/AddressCast.json
index 0393c966c..c9d06b3ac 100644
--- a/packages/oapp-evm-upgradeable/artifacts/AddressCast.sol/AddressCast.json
+++ b/packages/oapp-evm-upgradeable/artifacts/AddressCast.sol/AddressCast.json
@@ -9,12 +9,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d0ef96555913b92086999aaf179337f5bb11bd16e2fd32633db05201e1a2190a64736f6c63430008160033",
- "sourceMap": "64:1401:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1401:19;;;;;;;;;;;;;;;;;",
+ "sourceMap": "64:1401:42:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1401:42;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d0ef96555913b92086999aaf179337f5bb11bd16e2fd32633db05201e1a2190a64736f6c63430008160033",
- "sourceMap": "64:1401:19:-:0;;;;;;;;",
+ "sourceMap": "64:1401:42:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -62,5 +62,5 @@
},
"version": 1
},
- "id": 19
+ "id": 42
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/BitMaps.sol/BitMaps.json b/packages/oapp-evm-upgradeable/artifacts/BitMaps.sol/BitMaps.json
index 5999fd1d7..6b02d6735 100644
--- a/packages/oapp-evm-upgradeable/artifacts/BitMaps.sol/BitMaps.json
+++ b/packages/oapp-evm-upgradeable/artifacts/BitMaps.sol/BitMaps.json
@@ -2,12 +2,12 @@
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220750966d7b60f40f074661c3b3e8aa643e0da9efb2d105b4bb8de340f58204d2964736f6c63430008160033",
- "sourceMap": "244:506:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;244:506:21;;;;;;;;;;;;;;;;;",
+ "sourceMap": "244:506:48:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;244:506:48;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220750966d7b60f40f074661c3b3e8aa643e0da9efb2d105b4bb8de340f58204d2964736f6c63430008160033",
- "sourceMap": "244:506:21:-:0;;;;;;;;",
+ "sourceMap": "244:506:48:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -48,5 +48,5 @@
},
"version": 1
},
- "id": 21
+ "id": 48
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/BytesLib.sol/BytesLib.json b/packages/oapp-evm-upgradeable/artifacts/BytesLib.sol/BytesLib.json
index b0ed522ae..fe39e80e1 100644
--- a/packages/oapp-evm-upgradeable/artifacts/BytesLib.sol/BytesLib.json
+++ b/packages/oapp-evm-upgradeable/artifacts/BytesLib.sol/BytesLib.json
@@ -2,12 +2,12 @@
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a7fceb8eb4802f12d249e2bf9e9530899ef14f8cf97705dcf83b31082b1c4a064736f6c63430008160033",
- "sourceMap": "370:21307:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:21307:32;;;;;;;;;;;;;;;;;",
+ "sourceMap": "370:21307:73:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:21307:73;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a7fceb8eb4802f12d249e2bf9e9530899ef14f8cf97705dcf83b31082b1c4a064736f6c63430008160033",
- "sourceMap": "370:21307:32:-:0;;;;;;;;",
+ "sourceMap": "370:21307:73:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -48,5 +48,5 @@
},
"version": 1
},
- "id": 32
+ "id": 73
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/CalldataBytesLib.sol/CalldataBytesLib.json b/packages/oapp-evm-upgradeable/artifacts/CalldataBytesLib.sol/CalldataBytesLib.json
index 5a7db86b3..776edec3b 100644
--- a/packages/oapp-evm-upgradeable/artifacts/CalldataBytesLib.sol/CalldataBytesLib.json
+++ b/packages/oapp-evm-upgradeable/artifacts/CalldataBytesLib.sol/CalldataBytesLib.json
@@ -2,12 +2,12 @@
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2e3252c4400fd3c35822be86a752d04e6261ed76d7a738786a66132353ae52864736f6c63430008160033",
- "sourceMap": "64:1718:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1718:20;;;;;;;;;;;;;;;;;",
+ "sourceMap": "64:1718:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1718:43;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2e3252c4400fd3c35822be86a752d04e6261ed76d7a738786a66132353ae52864736f6c63430008160033",
- "sourceMap": "64:1718:20:-:0;;;;;;;;",
+ "sourceMap": "64:1718:43:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -48,5 +48,5 @@
},
"version": 1
},
- "id": 20
+ "id": 43
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ContextUpgradeable.sol/ContextUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/ContextUpgradeable.sol/ContextUpgradeable.json
index 98fc75dc7..a7f9f1898 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ContextUpgradeable.sol/ContextUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ContextUpgradeable.sol/ContextUpgradeable.json
@@ -80,5 +80,5 @@
},
"version": 1
},
- "id": 35
+ "id": 96
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/DVNOptions.sol/DVNOptions.json b/packages/oapp-evm-upgradeable/artifacts/DVNOptions.sol/DVNOptions.json
index bf0a946b2..d419a2e75 100644
--- a/packages/oapp-evm-upgradeable/artifacts/DVNOptions.sol/DVNOptions.json
+++ b/packages/oapp-evm-upgradeable/artifacts/DVNOptions.sol/DVNOptions.json
@@ -11,12 +11,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b37e086c3b1942a76701ff3e9b6588897b42be157662598466eaa03127c77dc64736f6c63430008160033",
- "sourceMap": "345:6975:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;345:6975:9;;;;;;;;;;;;;;;;;",
+ "sourceMap": "345:6975:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;345:6975:26;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b37e086c3b1942a76701ff3e9b6588897b42be157662598466eaa03127c77dc64736f6c63430008160033",
- "sourceMap": "345:6975:9:-:0;;;;;;;;",
+ "sourceMap": "345:6975:26:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -90,5 +90,5 @@
},
"version": 1
},
- "id": 9
+ "id": 26
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ExecutorOptions.sol/ExecutorOptions.json b/packages/oapp-evm-upgradeable/artifacts/ExecutorOptions.sol/ExecutorOptions.json
index 1fcdbb1a4..a5573e6b5 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ExecutorOptions.sol/ExecutorOptions.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ExecutorOptions.sol/ExecutorOptions.json
@@ -18,12 +18,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208709f2e348cc6f33a5c25ffcd2bfaac629e8cae37810ea39adfa1038b12cefd764736f6c63430008160033",
- "sourceMap": "133:3427:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;133:3427:22;;;;;;;;;;;;;;;;;",
+ "sourceMap": "133:3427:49:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;133:3427:49;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208709f2e348cc6f33a5c25ffcd2bfaac629e8cae37810ea39adfa1038b12cefd764736f6c63430008160033",
- "sourceMap": "133:3427:22:-:0;;;;;;;;",
+ "sourceMap": "133:3427:49:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -88,5 +88,5 @@
},
"version": 1
},
- "id": 22
+ "id": 49
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IERC165.sol/IERC165.json b/packages/oapp-evm-upgradeable/artifacts/IERC165.sol/IERC165.json
index c4735a7a1..7b650714f 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IERC165.sol/IERC165.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IERC165.sol/IERC165.json
@@ -72,5 +72,5 @@
},
"version": 1
},
- "id": 40
+ "id": 117
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IERC20.sol/IERC20.json b/packages/oapp-evm-upgradeable/artifacts/IERC20.sol/IERC20.json
index 6594164a5..f7af0394e 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IERC20.sol/IERC20.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IERC20.sol/IERC20.json
@@ -292,5 +292,5 @@
},
"version": 1
},
- "id": 36
+ "id": 107
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IERC20Permit.sol/IERC20Permit.json b/packages/oapp-evm-upgradeable/artifacts/IERC20Permit.sol/IERC20Permit.json
index 13edb1195..0fae0ca74 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IERC20Permit.sol/IERC20Permit.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IERC20Permit.sol/IERC20Permit.json
@@ -129,5 +129,5 @@
},
"version": 1
},
- "id": 37
+ "id": 108
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroComposer.sol/ILayerZeroComposer.json b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroComposer.sol/ILayerZeroComposer.json
index 81cc859ba..e3811bbe8 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroComposer.sol/ILayerZeroComposer.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroComposer.sol/ILayerZeroComposer.json
@@ -96,5 +96,5 @@
},
"version": 1
},
- "id": 10
+ "id": 33
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json
index 0b832b0b4..cae88a629 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json
@@ -597,5 +597,5 @@
},
"version": 1
},
- "id": 24
+ "id": 51
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json
index f63428ea6..e104a770a 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json
@@ -2682,5 +2682,5 @@
},
"version": 1
},
- "id": 11
+ "id": 34
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroReceiver.sol/ILayerZeroReceiver.json b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroReceiver.sol/ILayerZeroReceiver.json
index 3fea0c095..2490238be 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroReceiver.sol/ILayerZeroReceiver.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroReceiver.sol/ILayerZeroReceiver.json
@@ -207,5 +207,5 @@
},
"version": 1
},
- "id": 12
+ "id": 35
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json
index fffaa2802..b9b8540f9 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json
@@ -131,5 +131,5 @@
},
"version": 1
},
- "id": 25
+ "id": 53
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IMessageLib.sol/IMessageLib.json b/packages/oapp-evm-upgradeable/artifacts/IMessageLib.sol/IMessageLib.json
index 12fa58712..24a4b993d 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IMessageLib.sol/IMessageLib.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IMessageLib.sol/IMessageLib.json
@@ -236,5 +236,5 @@
},
"version": 1
},
- "id": 13
+ "id": 36
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IMessageLibManager.sol/IMessageLibManager.json b/packages/oapp-evm-upgradeable/artifacts/IMessageLibManager.sol/IMessageLibManager.json
index 96a2fd237..6a4d351d6 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IMessageLibManager.sol/IMessageLibManager.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IMessageLibManager.sol/IMessageLibManager.json
@@ -865,5 +865,5 @@
},
"version": 1
},
- "id": 14
+ "id": 37
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IMessagingChannel.sol/IMessagingChannel.json b/packages/oapp-evm-upgradeable/artifacts/IMessagingChannel.sol/IMessagingChannel.json
index 7a1be3f4a..a13873775 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IMessagingChannel.sol/IMessagingChannel.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IMessagingChannel.sol/IMessagingChannel.json
@@ -501,5 +501,5 @@
},
"version": 1
},
- "id": 15
+ "id": 38
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IMessagingComposer.sol/IMessagingComposer.json b/packages/oapp-evm-upgradeable/artifacts/IMessagingComposer.sol/IMessagingComposer.json
index 7a355c4fe..fd162d057 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IMessagingComposer.sol/IMessagingComposer.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IMessagingComposer.sol/IMessagingComposer.json
@@ -398,5 +398,5 @@
},
"version": 1
},
- "id": 16
+ "id": 39
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/IMessagingContext.sol/IMessagingContext.json b/packages/oapp-evm-upgradeable/artifacts/IMessagingContext.sol/IMessagingContext.json
index 0a370e3c9..4d7de9b34 100644
--- a/packages/oapp-evm-upgradeable/artifacts/IMessagingContext.sol/IMessagingContext.json
+++ b/packages/oapp-evm-upgradeable/artifacts/IMessagingContext.sol/IMessagingContext.json
@@ -79,5 +79,5 @@
},
"version": 1
},
- "id": 17
+ "id": 40
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/ISendLib.sol/ISendLib.json b/packages/oapp-evm-upgradeable/artifacts/ISendLib.sol/ISendLib.json
index 537dc2b1d..515aa3e15 100644
--- a/packages/oapp-evm-upgradeable/artifacts/ISendLib.sol/ISendLib.json
+++ b/packages/oapp-evm-upgradeable/artifacts/ISendLib.sol/ISendLib.json
@@ -568,5 +568,5 @@
},
"version": 1
},
- "id": 18
+ "id": 41
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/Initializable.sol/Initializable.json b/packages/oapp-evm-upgradeable/artifacts/Initializable.sol/Initializable.json
index dd39b0a90..d6769c167 100644
--- a/packages/oapp-evm-upgradeable/artifacts/Initializable.sol/Initializable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/Initializable.sol/Initializable.json
@@ -72,5 +72,5 @@
},
"version": 1
},
- "id": 34
+ "id": 95
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/OAppCoreUpgradeable.sol/OAppCoreUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OAppCoreUpgradeable.sol/OAppCoreUpgradeable.json
index fa313010b..066276d4f 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OAppCoreUpgradeable.sol/OAppCoreUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OAppCoreUpgradeable.sol/OAppCoreUpgradeable.json
@@ -173,7 +173,7 @@
"setPeer(uint32,bytes32)": "3400288b",
"transferOwnership(address)": "f2fde38b"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppCore interface with basic OApp configurations.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor to initialize the OAppCore with the provided endpoint and delegate.\",\"params\":{\"_endpoint\":\"The address of the LOCAL Layer Zero endpoint.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"endpoint\":{\"return\":\"The LayerZero endpoint as an interface.\",\"returns\":{\"_0\":\"The LayerZero endpoint as an interface.\"}}},\"title\":\"OAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":\"OAppCoreUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppCore interface with basic OApp configurations.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor to initialize the OAppCore with the provided endpoint and delegate.\",\"params\":{\"_endpoint\":\"The address of the LOCAL Layer Zero endpoint.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"endpoint\":{\"return\":\"The LayerZero endpoint as an interface.\",\"returns\":{\"_0\":\"The LayerZero endpoint as an interface.\"}}},\"title\":\"OAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":\"OAppCoreUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4\",\"dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -432,10 +432,10 @@
},
"sources": {
"contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
+ "keccak256": "0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140",
"urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
+ "bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4",
+ "dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd"
],
"license": "MIT"
},
diff --git a/packages/oapp-evm-upgradeable/artifacts/OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json
index 95dadbf09..98914c554 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json
@@ -207,7 +207,7 @@
"setPreCrime(address)": "d4243885",
"transferOwnership(address)": "f2fde38b"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for preCrime simulation functionality in an OApp.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"preCrime()\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppPreCrimeSimulator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":\"OAppPreCrimeSimulatorUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":{\"keccak256\":\"0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990\",\"dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for preCrime simulation functionality in an OApp.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"preCrime()\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppPreCrimeSimulator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":\"OAppPreCrimeSimulatorUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":{\"keccak256\":\"0x4db480709caa7ab95f964a0ef2998072ba4e9398a6dc9d8d2d2bba51002d070e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4298491d55c299fd392cdf4e4fa21c8b76823dba00fa1b5fe470724b9d89b59\",\"dweb:/ipfs/QmPBzbeMeA6k52CjFGQ7sBWAiLr5ioK7qaKBcSqVbrBnJ9\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -517,10 +517,10 @@
},
"sources": {
"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
- "keccak256": "0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54",
+ "keccak256": "0x4db480709caa7ab95f964a0ef2998072ba4e9398a6dc9d8d2d2bba51002d070e",
"urls": [
- "bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990",
- "dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7"
+ "bzz-raw://c4298491d55c299fd392cdf4e4fa21c8b76823dba00fa1b5fe470724b9d89b59",
+ "dweb:/ipfs/QmPBzbeMeA6k52CjFGQ7sBWAiLr5ioK7qaKBcSqVbrBnJ9"
],
"license": "MIT"
},
@@ -655,5 +655,5 @@
},
"version": 1
},
- "id": 6
+ "id": 5
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/OAppReceiverUpgradeable.sol/OAppReceiverUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OAppReceiverUpgradeable.sol/OAppReceiverUpgradeable.json
index d3169c5eb..ae9b5bd56 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OAppReceiverUpgradeable.sol/OAppReceiverUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OAppReceiverUpgradeable.sol/OAppReceiverUpgradeable.json
@@ -256,7 +256,7 @@
"setPeer(uint32,bytes32)": "3400288b",
"transferOwnership(address)": "f2fde38b"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppReceiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppReceiverUpgradeable.sol\":\"OAppReceiverUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96\",\"dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppReceiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppReceiverUpgradeable.sol\":\"OAppReceiverUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4\",\"dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x4858233a805ec79d416cc771a505304f452edea7ed1ea697af419885006372ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97e97e0ae88add193ccd28fcbbbd365bae74f70c7d68dcd16aebb958240cd46d\",\"dweb:/ipfs/QmYo5trpG7GiK6nUHzKrumS9NkpbUvmXvdchtYTmjm3ckr\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -651,18 +651,18 @@
},
"sources": {
"contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
+ "keccak256": "0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140",
"urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
+ "bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4",
+ "dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd"
],
"license": "MIT"
},
"contracts/oapp/OAppReceiverUpgradeable.sol": {
- "keccak256": "0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa",
+ "keccak256": "0x4858233a805ec79d416cc771a505304f452edea7ed1ea697af419885006372ea",
"urls": [
- "bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96",
- "dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u"
+ "bzz-raw://97e97e0ae88add193ccd28fcbbbd365bae74f70c7d68dcd16aebb958240cd46d",
+ "dweb:/ipfs/QmYo5trpG7GiK6nUHzKrumS9NkpbUvmXvdchtYTmjm3ckr"
],
"license": "MIT"
},
diff --git a/packages/oapp-evm-upgradeable/artifacts/OAppSenderUpgradeable.sol/OAppSenderUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OAppSenderUpgradeable.sol/OAppSenderUpgradeable.json
index 15be10c02..4ae57a8b1 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OAppSenderUpgradeable.sol/OAppSenderUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OAppSenderUpgradeable.sol/OAppSenderUpgradeable.json
@@ -181,7 +181,7 @@
"setPeer(uint32,bytes32)": "3400288b",
"transferOwnership(address)": "f2fde38b"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppSender\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppSenderUpgradeable.sol\":\"OAppSenderUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07\",\"dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppSender\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppSenderUpgradeable.sol\":\"OAppSenderUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4\",\"dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0x7bb6535161c0a0fcb492a2f5b9a5e7ee96001bb0296c1c5795be3fd48929b1ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://400d8bc9681c75d7173024b66f6a94b4cc7bdf53fb65bbf461c02da835be4ba5\",\"dweb:/ipfs/QmZ9ddvGVX8TCjPwQWLfFBU4Rwtscb3E4Y3d8Dvj1R6niR\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -443,18 +443,18 @@
},
"sources": {
"contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
+ "keccak256": "0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140",
"urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
+ "bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4",
+ "dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd"
],
"license": "MIT"
},
"contracts/oapp/OAppSenderUpgradeable.sol": {
- "keccak256": "0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2",
+ "keccak256": "0x7bb6535161c0a0fcb492a2f5b9a5e7ee96001bb0296c1c5795be3fd48929b1ee",
"urls": [
- "bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07",
- "dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w"
+ "bzz-raw://400d8bc9681c75d7173024b66f6a94b4cc7bdf53fb65bbf461c02da835be4ba5",
+ "dweb:/ipfs/QmZ9ddvGVX8TCjPwQWLfFBU4Rwtscb3E4Y3d8Dvj1R6niR"
],
"license": "MIT"
},
diff --git a/packages/oapp-evm-upgradeable/artifacts/OAppUpgradeable.sol/OAppUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OAppUpgradeable.sol/OAppUpgradeable.json
index f0e5b7da2..2882c9c3f 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OAppUpgradeable.sol/OAppUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OAppUpgradeable.sol/OAppUpgradeable.json
@@ -264,7 +264,7 @@
"setPeer(uint32,bytes32)": "3400288b",
"transferOwnership(address)": "f2fde38b"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"constructor\":{\"details\":\"Constructor to initialize the OApp with the provided endpoint and owner.\",\"params\":{\"_endpoint\":\"The address of the LOCAL LayerZero endpoint.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OApp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppUpgradeable.sol\":\"OAppUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96\",\"dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07\",\"dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w\"]},\"contracts/oapp/OAppUpgradeable.sol\":{\"keccak256\":\"0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf\",\"dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"constructor\":{\"details\":\"Constructor to initialize the OApp with the provided endpoint and owner.\",\"params\":{\"_endpoint\":\"The address of the LOCAL LayerZero endpoint.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OApp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/OAppUpgradeable.sol\":\"OAppUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4\",\"dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x4858233a805ec79d416cc771a505304f452edea7ed1ea697af419885006372ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97e97e0ae88add193ccd28fcbbbd365bae74f70c7d68dcd16aebb958240cd46d\",\"dweb:/ipfs/QmYo5trpG7GiK6nUHzKrumS9NkpbUvmXvdchtYTmjm3ckr\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0x7bb6535161c0a0fcb492a2f5b9a5e7ee96001bb0296c1c5795be3fd48929b1ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://400d8bc9681c75d7173024b66f6a94b4cc7bdf53fb65bbf461c02da835be4ba5\",\"dweb:/ipfs/QmZ9ddvGVX8TCjPwQWLfFBU4Rwtscb3E4Y3d8Dvj1R6niR\"]},\"contracts/oapp/OAppUpgradeable.sol\":{\"keccak256\":\"0x895b6e03b71bfa39a1e3e3631c4ea5bb5b292bcee4c23ff1435a247d58285159\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3faca50f2573e33129f145a48e3f7ee0814e35ee381d919d4563e585173a58d4\",\"dweb:/ipfs/Qmcg74HuJRFYpqDtPXovpqEMLqjUdL7rvad3z6hvGW4ULM\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -672,34 +672,34 @@
},
"sources": {
"contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
+ "keccak256": "0xbe135fd35bf12c97aeb701caeb6c5d0c1c28c1ac2ab1d4219d15f8384951c140",
"urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
+ "bzz-raw://a5cec12ab6677830bf2daefa94c402d848c223a2a081e4892985c1f4b06d30e4",
+ "dweb:/ipfs/QmSV6NwuXCfWMZVFDRmeBgeWGBApwxqQxRbForCC2NTtgd"
],
"license": "MIT"
},
"contracts/oapp/OAppReceiverUpgradeable.sol": {
- "keccak256": "0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa",
+ "keccak256": "0x4858233a805ec79d416cc771a505304f452edea7ed1ea697af419885006372ea",
"urls": [
- "bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96",
- "dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u"
+ "bzz-raw://97e97e0ae88add193ccd28fcbbbd365bae74f70c7d68dcd16aebb958240cd46d",
+ "dweb:/ipfs/QmYo5trpG7GiK6nUHzKrumS9NkpbUvmXvdchtYTmjm3ckr"
],
"license": "MIT"
},
"contracts/oapp/OAppSenderUpgradeable.sol": {
- "keccak256": "0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2",
+ "keccak256": "0x7bb6535161c0a0fcb492a2f5b9a5e7ee96001bb0296c1c5795be3fd48929b1ee",
"urls": [
- "bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07",
- "dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w"
+ "bzz-raw://400d8bc9681c75d7173024b66f6a94b4cc7bdf53fb65bbf461c02da835be4ba5",
+ "dweb:/ipfs/QmZ9ddvGVX8TCjPwQWLfFBU4Rwtscb3E4Y3d8Dvj1R6niR"
],
"license": "MIT"
},
"contracts/oapp/OAppUpgradeable.sol": {
- "keccak256": "0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969",
+ "keccak256": "0x895b6e03b71bfa39a1e3e3631c4ea5bb5b292bcee4c23ff1435a247d58285159",
"urls": [
- "bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf",
- "dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy"
+ "bzz-raw://3faca50f2573e33129f145a48e3f7ee0814e35ee381d919d4563e585173a58d4",
+ "dweb:/ipfs/Qmcg74HuJRFYpqDtPXovpqEMLqjUdL7rvad3z6hvGW4ULM"
],
"license": "MIT"
},
diff --git a/packages/oapp-evm-upgradeable/artifacts/OmniCounterPreCrimeUpgradeable.sol/OmniCounterPreCrimeUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OmniCounterPreCrimeUpgradeable.sol/OmniCounterPreCrimeUpgradeable.json
deleted file mode 100644
index 05b67b989..000000000
--- a/packages/oapp-evm-upgradeable/artifacts/OmniCounterPreCrimeUpgradeable.sol/OmniCounterPreCrimeUpgradeable.json
+++ /dev/null
@@ -1,948 +0,0 @@
-{
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- { "name": "_endpoint", "type": "address", "internalType": "address" },
- { "name": "_counter", "type": "address", "internalType": "address" }
- ],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "buildSimulationResult",
- "inputs": [],
- "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "getConfig",
- "inputs": [
- { "name": "_packets", "type": "bytes[]", "internalType": "bytes[]" },
- {
- "name": "_packetMsgValues",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "getPreCrimePeers",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "tuple[]",
- "internalType": "struct PreCrimePeer[]",
- "components": [
- { "name": "eid", "type": "uint32", "internalType": "uint32" },
- {
- "name": "preCrime",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- { "name": "oApp", "type": "bytes32", "internalType": "bytes32" }
- ]
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "intialize",
- "inputs": [
- { "name": "_delegate", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "maxBatchSize",
- "inputs": [],
- "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "oApp",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "owner",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "preCrime",
- "inputs": [
- { "name": "_packets", "type": "bytes[]", "internalType": "bytes[]" },
- {
- "name": "_packetMsgValues",
- "type": "uint256[]",
- "internalType": "uint256[]"
- },
- { "name": "_simulations", "type": "bytes[]", "internalType": "bytes[]" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "renounceOwnership",
- "inputs": [],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setMaxBatchSize",
- "inputs": [
- { "name": "_maxBatchSize", "type": "uint64", "internalType": "uint64" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setPreCrimePeers",
- "inputs": [
- {
- "name": "_preCrimePeers",
- "type": "tuple[]",
- "internalType": "struct PreCrimePeer[]",
- "components": [
- { "name": "eid", "type": "uint32", "internalType": "uint32" },
- {
- "name": "preCrime",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- { "name": "oApp", "type": "bytes32", "internalType": "bytes32" }
- ]
- }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "simulate",
- "inputs": [
- { "name": "_packets", "type": "bytes[]", "internalType": "bytes[]" },
- {
- "name": "_packetMsgValues",
- "type": "uint256[]",
- "internalType": "uint256[]"
- }
- ],
- "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "simulator",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "transferOwnership",
- "inputs": [
- { "name": "newOwner", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "version",
- "inputs": [],
- "outputs": [
- { "name": "major", "type": "uint64", "internalType": "uint64" },
- { "name": "minor", "type": "uint8", "internalType": "uint8" }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "event",
- "name": "Initialized",
- "inputs": [
- {
- "name": "version",
- "type": "uint64",
- "indexed": false,
- "internalType": "uint64"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "OwnershipTransferred",
- "inputs": [
- {
- "name": "previousOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "newOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "CrimeFound",
- "inputs": [{ "name": "crime", "type": "bytes", "internalType": "bytes" }]
- },
- { "type": "error", "name": "InvalidInitialization", "inputs": [] },
- {
- "type": "error",
- "name": "InvalidSimulationResult",
- "inputs": [
- { "name": "eid", "type": "uint32", "internalType": "uint32" },
- { "name": "reason", "type": "bytes", "internalType": "bytes" }
- ]
- },
- { "type": "error", "name": "NotInitializing", "inputs": [] },
- { "type": "error", "name": "OnlyOffChain", "inputs": [] },
- {
- "type": "error",
- "name": "OwnableInvalidOwner",
- "inputs": [
- { "name": "owner", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "OwnableUnauthorizedAccount",
- "inputs": [
- { "name": "account", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "PacketOversize",
- "inputs": [
- { "name": "max", "type": "uint256", "internalType": "uint256" },
- { "name": "actual", "type": "uint256", "internalType": "uint256" }
- ]
- },
- { "type": "error", "name": "PacketUnsorted", "inputs": [] },
- {
- "type": "error",
- "name": "SimulationFailed",
- "inputs": [{ "name": "reason", "type": "bytes", "internalType": "bytes" }]
- },
- {
- "type": "error",
- "name": "SimulationResultNotFound",
- "inputs": [{ "name": "eid", "type": "uint32", "internalType": "uint32" }]
- }
- ],
- "bytecode": {
- "object": "0x60e06040523480156200001157600080fd5b50604051620027f2380380620027f28339810160408190526200003491620000e5565b6001600160a01b03808316608052811660a0819052604080516352ae287960e01b815290518492849290916352ae2879916004808201926020929091908290030181865afa1580156200008b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b191906200011d565b6001600160a01b031660c052506200014292505050565b80516001600160a01b0381168114620000e057600080fd5b919050565b60008060408385031215620000f957600080fd5b6200010483620000c8565b91506200011460208401620000c8565b90509250929050565b6000602082840312156200013057600080fd5b6200013b82620000c8565b9392505050565b60805160a05160c05161265d620001956000396000818161017b01526118680152600081816102b2015281816105cb0152818161108d01526111a401526000818161172f01526118a6015261265d6000f3fe6080604052600436106100e85760003560e01c80638e9e70991161008a578063bf7b5d7a11610059578063bf7b5d7a146102a0578063f0cd3836146102d4578063f2fde38b146102f4578063f8bcddf61461031457600080fd5b80638e9e709914610229578063982f0d361461023e578063afea44ef1461025e578063b9a1f5e71461027e57600080fd5b806352ae2879116100c657806352ae28791461016957806354fd4d50146101b5578063715018a6146101d75780638da5cb5b146101ec57600080fd5b806310f9cf3a146100ed5780632913daa01461010f57806350dfa93714610149575b600080fd5b3480156100f957600080fd5b5061010d610108366004611d23565b610334565b005b34801561011b57600080fd5b50600080516020612608833981519152546040516001600160401b0390911681526020015b60405180910390f35b61015c610157366004611dbc565b610531565b6040516101409190611e77565b34801561017557600080fd5b5061019d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b3480156101c157600080fd5b5060408051600281526000602082015201610140565b3480156101e357600080fd5b5061010d6105b3565b3480156101f857600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661019d565b34801561023557600080fd5b5061015c6105c7565b34801561024a57600080fd5b5061010d610259366004611e8a565b61080e565b34801561026a57600080fd5b5061010d610279366004611ec8565b61091c565b34801561028a57600080fd5b50610293610954565b6040516101409190611ee5565b3480156102ac57600080fd5b5061019d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e057600080fd5b5061015c6102ef366004611dbc565b6109e5565b34801561030057600080fd5b5061010d61030f366004611e8a565b610bf1565b34801561032057600080fd5b5061010d61032f366004611f44565b610c34565b3361dead1461035657604051634e5ff03360e11b815260040160405180910390fd5b60006103968787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b90506000826001600160401b038111156103b2576103b2611fb8565b6040519080825280602002602001820160405280156103db578160200160208202803683370190505b5090506000836001600160401b038111156103f8576103f8611fb8565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156105105736600087878481811061044e5761044e611fce565b90506020028101906104609190611fe4565b909250905061047360046000838561202a565b61047c91612054565b60e01c85848151811061049157610491611fce565b63ffffffff909216602092830291909101909101526104b3816004818561202a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050865187925086915081106104fb576104fb611fce565b60209081029190910101525050600101610431565b5061051b8383610dc3565b610526838383610e7e565b505050505050505050565b60603361dead1461055557604051634e5ff03360e11b815260040160405180910390fd5b60006105958686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b90506105a081610fdb565b6105a98161119d565b9695505050505050565b6105bb6112ac565b6105c56000611307565b565b60607f00000000000000000000000000000000000000000000000000000000000000008060006000805160206125e8833981519152546001600160401b0381111561061457610614611fb8565b60405190808252806020026020018201604052801561066f57816020015b61065c6040518060600160405280600063ffffffff16815260200160008152602001600081525090565b8152602001906001900390816106325790505b50905060005b6000805160206125e8833981519152548110156107e55760006000805160206125e883398151915282815481106106ae576106ae611fce565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290516356a4728960e01b81526004810182905290935090918201906001600160a01b038716906356a4728990602401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190612084565b81526040516331178bfb60e11b815263ffffffff841660048201526020909101906001600160a01b0387169063622f17f690602401602060405180830381865afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc9190612084565b8152508383815181106107d1576107d1611fce565b602090810291909101015250600101610675565b50806040516020016107f79190611ee5565b604051602081830303815290604052935050505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108535750825b90506000826001600160401b0316600114801561086f5750303b155b90508115801561087d575080155b1561089b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c557845460ff60401b1916600160401b1785555b6108ce86611378565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6109246112ac565b600080516020612608833981519152805467ffffffffffffffff19166001600160401b0392909216919091179055565b606060006000805160206126088339815191526001810180546040805160208084028201810190925282815293945060009084015b828210156109db5760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610989565b5050505091505090565b60603361dead14610a0957604051634e5ff03360e11b815260040160405180910390fd5b600080516020612608833981519152805460408051600160f11b602082015260c09290921b6001600160c01b03191660228301528051808303600a018152602a909201905260008615610aa157610a9c610a978989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b611389565b610b1c565b82600101805480602002602001604051908101604052809291908181526020016000905b82821015610b175760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610ac5565b505050505b805190915015610be6578051604051610b3b908490839060200161209d565b604051602081830303815290604052925060005b8161ffff16811015610be35783838281518110610b6e57610b6e611fce565b602002602001015160000151848381518110610b8c57610b8c611fce565b602002602001015160200151858481518110610baa57610baa611fce565b602002602001015160400151604051602001610bc994939291906120cf565b60408051601f198184030181529190529350600101610b4f565b50505b509695505050505050565b610bf96112ac565b6001600160a01b038116610c2857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610c3181611307565b50565b610c3c6112ac565b600080516020612608833981519152610c646000805160206125e88339815191526000611c33565b60005b82811015610cbd5781600101848483818110610c8557610c85611fce565b835460018101855560009485526020909420606090910292909201926003029091019050610cb38282612120565b5050600101610c67565b50505050565b6060826001600160401b03811115610cdd57610cdd611fb8565b604051908082528060200260200182016040528015610d1657816020015b610d03611c54565b815260200190600190039081610cfb5790505b50905060005b83811015610dbb57366000868684818110610d3957610d39611fce565b9050602002810190610d4b9190611fe4565b91509150610d598282611601565b848481518110610d6b57610d6b611fce565b6020026020010181905250848381518110610d8857610d88611fce565b6020026020010151848481518110610da257610da2611fce565b6020908102919091010151608001525050600101610d1c565b509392505050565b815115610e3f576000610dd583611389565b905060005b8151811015610e3c576000828281518110610df757610df7611fce565b6020026020010151600001519050610e0f84826116d4565b610e335760405162cc979560e11b815263ffffffff82166004820152602401610c1f565b50600101610dda565b50505b6000610e4961172b565b9050610e5582826116d4565b610e795760405162cc979560e11b815263ffffffff82166004820152602401610c1f565b505050565b6000610e8861172b565b9050606060005b8451811015610f00578263ffffffff16858281518110610eb157610eb1611fce565b602002602001015163ffffffff1603610ef857838181518110610ed657610ed6611fce565b6020026020010151806020019051810190610ef191906121af565b9150610f00565b600101610e8f565b5060005b8451811015610914576000858281518110610f2157610f21611fce565b602002602001015190506000858381518110610f3f57610f3f611fce565b6020026020010151806020019051810190610f5a91906121af565b90506000610f6885846117b4565b5090506000610f7783886117b4565b91505080821115610fcb57604051631915975760e01b815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c1f565b505060019092019150610f049050565b600080516020612608833981519152805482516001600160401b03909116101561102d5780548251604051639db0860560e01b81526001600160401b0390921660048301526024820152604401610c1f565b8151156111995760008080805b855181101561091457600086828151811061105757611057611fce565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611100919061228b565b61110a5750611191565b80515163ffffffff868116911614158061112957508051602001518414155b1561114a578051805160209091015190955093506111478585611851565b92505b611153836122c3565b9250826001600160401b03168160000151604001516001600160401b03161461118f576040516350823c8560e01b815260040160405180910390fd5b505b60010161103a565b5050565b60606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163463bd815db060e01b866040516024016111e691906122e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112249190612411565b60006040518083038185875af1925050503d8060008114611261576040519150601f19603f3d011682016040523d82523d6000602084013e611266565b606091505b50915091506000611277838361191a565b905061128161172b565b8160405160200161129392919061242d565b6040516020818303038152906040529350505050919050565b336112de7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146105c55760405163118cdaa760e01b8152336004820152602401610c1f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113806119c2565b610c3181611a0b565b606060006000805160206125e8833981519152805480602002602001604051908101604052809291908181526020016000905b8282101561140e5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016113bc565b505050509050600083516001600160401b0381111561142f5761142f611fb8565b60405190808252806020026020018201604052801561147a57816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161144d5790505b50905060001960005b855181101561152e5760008682815181106114a0576114a0611fce565b60200260200101516000015160000151905060006114be8683611a13565b9050600081121580156114da575060006114d88684611a13565b125b1561152457836114e98161245f565b9450508581815181106114fe576114fe611fce565b602002602001015185858151811061151857611518611fce565b60200260200101819052505b5050600101611483565b50600081126115f957600061154482600161247e565b9050806001600160401b0381111561155e5761155e611fb8565b6040519080825280602002602001820160405280156115a957816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161157c5790505b50945060005b818110156115f6578381815181106115c9576115c9611fce565b60200260200101518682815181106115e3576115e3611fce565b60209081029190910101526001016115af565b50505b505050919050565b611609611c54565b604051806060016040528061161e8585611a6a565b63ffffffff1681526020016116338585611a8d565b81526020016116428585611aa6565b6001600160401b0316905281526116598383611ac9565b63ffffffff16602082015261166e8383611ad9565b6001600160a01b031660408201526116868383611aeb565b60608201526116958383611afb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b835181101561171f578263ffffffff168482815181106116fa576116fa611fce565b602002602001015163ffffffff1603611717576001915050611725565b6001016116d8565b50600090505b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af9190612491565b905090565b60008060005b8451811015611841578363ffffffff168582815181106117dc576117dc611fce565b60200260200101516000015163ffffffff16036118395784818151811061180557611805611fce565b60200260200101516020015185828151811061182357611823611fce565b602002602001015160400151925092505061184a565b6001016117ba565b50600080915091505b9250929050565b60405163283750ff60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906124ae565b9392505050565b60608215611957576040516330a65ec560e11b81526020600482015260096024820152681b9bc81c995d995c9d60ba1b6044820152606401610c1f565b638351eea760e01b611968836124cb565b6001600160e01b0319161461199257816040516330a65ec560e11b8152600401610c1f9190611e77565b6119ac60048084516119a491906124fe565b849190611b16565b9050808060200190518101906119139190612511565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166105c557604051631afcd79f60e31b815260040160405180910390fd5b610bf96119c2565b6000805b8351811015611a5f578263ffffffff16848281518110611a3957611a39611fce565b60200260200101516000015163ffffffff1603611a57579050611725565b600101611a17565b506000199392505050565b6000611a7a600d6009848661202a565b611a8391612054565b60e01c9392505050565b6000611a9d602d600d848661202a565b6119139161259b565b6000611ab660096001848661202a565b611abf916125b9565b60c01c9392505050565b6000611a7a6031602d848661202a565b6000611913611ae88484611c23565b90565b6000611a9d60716051848661202a565b366000611b0b836071818761202a565b915091509250929050565b606081611b2481601f61247e565b1015611b635760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610c1f565b611b6d828461247e565b84511015611bb15760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610c1f565b606082158015611bd05760405191506000825260208201604052611c1a565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611c09578051835260209283019201611bf1565b5050858452601f01601f1916604052505b50949350505050565b6000611a9d60516031848661202a565b5080546000825560030290600052602060002090810190610c319190611cb1565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b5b80821115611cdb57805463ffffffff191681556000600182018190556002820155600301611cb2565b5090565b60008083601f840112611cf157600080fd5b5081356001600160401b03811115611d0857600080fd5b6020830191508360208260051b850101111561184a57600080fd5b60008060008060008060608789031215611d3c57600080fd5b86356001600160401b0380821115611d5357600080fd5b611d5f8a838b01611cdf565b90985096506020890135915080821115611d7857600080fd5b611d848a838b01611cdf565b90965094506040890135915080821115611d9d57600080fd5b50611daa89828a01611cdf565b979a9699509497509295939492505050565b60008060008060408587031215611dd257600080fd5b84356001600160401b0380821115611de957600080fd5b611df588838901611cdf565b90965094506020870135915080821115611e0e57600080fd5b50611e1b87828801611cdf565b95989497509550505050565b60005b83811015611e42578181015183820152602001611e2a565b50506000910152565b60008151808452611e63816020860160208601611e27565b601f01601f19169290920160200192915050565b6020815260006119136020830184611e4b565b600060208284031215611e9c57600080fd5b81356001600160a01b038116811461191357600080fd5b6001600160401b0381168114610c3157600080fd5b600060208284031215611eda57600080fd5b813561191381611eb3565b602080825282518282018190526000919060409081850190868401855b82811015611f37578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101611f02565b5091979650505050505050565b60008060208385031215611f5757600080fd5b82356001600160401b0380821115611f6e57600080fd5b818501915085601f830112611f8257600080fd5b813581811115611f9157600080fd5b866020606083028501011115611fa657600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611ffb57600080fd5b8301803591506001600160401b0382111561201557600080fd5b60200191503681900382131561184a57600080fd5b6000808585111561203a57600080fd5b8386111561204757600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561207c5780818660040360031b1b83161692505b505092915050565b60006020828403121561209657600080fd5b5051919050565b600083516120af818460208801611e27565b60f09390931b6001600160f01b0319169190920190815260020192915050565b600085516120e1818460208a01611e27565b60e09590951b6001600160e01b031916919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c3157600080fd5b813561212b8161210e565b63ffffffff811663ffffffff198354161782555060208201356001820155604082013560028201555050565b604051606081016001600160401b038111828210171561217957612179611fb8565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121a7576121a7611fb8565b604052919050565b600060208083850312156121c257600080fd5b82516001600160401b03808211156121d957600080fd5b818501915085601f8301126121ed57600080fd5b8151818111156121ff576121ff611fb8565b61220d848260051b0161217f565b8181528481019250606091820284018501918883111561222c57600080fd5b938501935b8285101561227f5780858a0312156122495760008081fd5b612251612157565b855161225c8161210e565b815285870151878201526040808701519082015284529384019392850192612231565b50979650505050505050565b60006020828403121561229d57600080fd5b8151801515811461191357600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036122df576122df6122ad565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561240357888303603f1901855281518051805163ffffffff168552602080820151908601526040908101516001600160401b0316908501526101408882015160606123688188018363ffffffff169052565b8984015191506080612384818901846001600160a01b03169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906123bb828901846001600160a01b03169052565b840151610100880184905291506123d487840183611e4b565b9301518684036101208801529291506123ef90508183611e4b565b968901969450505090860190600101612312565b509098975050505050505050565b60008251612423818460208701611e27565b9190910192915050565b63ffffffff60e01b8360e01b16815260008251612451816004850160208701611e27565b919091016004019392505050565b60006001600160ff1b018201612477576124776122ad565b5060010190565b80820180821115611725576117256122ad565b6000602082840312156124a357600080fd5b81516119138161210e565b6000602082840312156124c057600080fd5b815161191381611eb3565b805160208201516001600160e01b031980821692919060048310156115f95760049290920360031b82901b161692915050565b81810381811115611725576117256122ad565b60006020828403121561252357600080fd5b81516001600160401b038082111561253a57600080fd5b818401915084601f83011261254e57600080fd5b81518181111561256057612560611fb8565b612573601f8201601f191660200161217f565b915080825285602082850101111561258a57600080fd5b611c1a816020840160208601611e27565b8035602083101561172557600019602084900360031b1b1692915050565b6001600160c01b0319813581811691600885101561207c5760089490940360031b84901b169092169291505056fe56af11d8938063b7ae95a808f88d40c589be3bbf4cb6facdbc642a7b38e01f0156af11d8938063b7ae95a808f88d40c589be3bbf4cb6facdbc642a7b38e01f00a264697066735822122066a0092dcfc581ba7e9775b4ef3fa56f24076bf5caddd8c46764379fbd724dae64736f6c63430008160033",
- "sourceMap": "315:3694:4:-:0;;;502:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2021:22:7;;;;;2053;;;;;;2092:41;;;-1:-1:-1;;;2092:41:7;;;;571:9:4;;582:8;;2053:22:7;;2092:39;;:41;;;;;;;;;;;;;;;2053:22;2092:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2085:48:7;;;-1:-1:-1;315:3694:4;;-1:-1:-1;;;315:3694:4;14:177:42;93:13;;-1:-1:-1;;;;;135:31:42;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:208::-;564:6;617:2;605:9;596:7;592:23;588:32;585:52;;;633:1;630;623:12;585:52;656:40;686:9;656:40;:::i;:::-;646:50;494:208;-1:-1:-1;;;494:208:42:o;:::-;315:3694:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
- "linkReferences": {}
- },
- "deployedBytecode": {
- "object": "0x6080604052600436106100e85760003560e01c80638e9e70991161008a578063bf7b5d7a11610059578063bf7b5d7a146102a0578063f0cd3836146102d4578063f2fde38b146102f4578063f8bcddf61461031457600080fd5b80638e9e709914610229578063982f0d361461023e578063afea44ef1461025e578063b9a1f5e71461027e57600080fd5b806352ae2879116100c657806352ae28791461016957806354fd4d50146101b5578063715018a6146101d75780638da5cb5b146101ec57600080fd5b806310f9cf3a146100ed5780632913daa01461010f57806350dfa93714610149575b600080fd5b3480156100f957600080fd5b5061010d610108366004611d23565b610334565b005b34801561011b57600080fd5b50600080516020612608833981519152546040516001600160401b0390911681526020015b60405180910390f35b61015c610157366004611dbc565b610531565b6040516101409190611e77565b34801561017557600080fd5b5061019d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b3480156101c157600080fd5b5060408051600281526000602082015201610140565b3480156101e357600080fd5b5061010d6105b3565b3480156101f857600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661019d565b34801561023557600080fd5b5061015c6105c7565b34801561024a57600080fd5b5061010d610259366004611e8a565b61080e565b34801561026a57600080fd5b5061010d610279366004611ec8565b61091c565b34801561028a57600080fd5b50610293610954565b6040516101409190611ee5565b3480156102ac57600080fd5b5061019d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e057600080fd5b5061015c6102ef366004611dbc565b6109e5565b34801561030057600080fd5b5061010d61030f366004611e8a565b610bf1565b34801561032057600080fd5b5061010d61032f366004611f44565b610c34565b3361dead1461035657604051634e5ff03360e11b815260040160405180910390fd5b60006103968787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b90506000826001600160401b038111156103b2576103b2611fb8565b6040519080825280602002602001820160405280156103db578160200160208202803683370190505b5090506000836001600160401b038111156103f8576103f8611fb8565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156105105736600087878481811061044e5761044e611fce565b90506020028101906104609190611fe4565b909250905061047360046000838561202a565b61047c91612054565b60e01c85848151811061049157610491611fce565b63ffffffff909216602092830291909101909101526104b3816004818561202a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050865187925086915081106104fb576104fb611fce565b60209081029190910101525050600101610431565b5061051b8383610dc3565b610526838383610e7e565b505050505050505050565b60603361dead1461055557604051634e5ff03360e11b815260040160405180910390fd5b60006105958686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b90506105a081610fdb565b6105a98161119d565b9695505050505050565b6105bb6112ac565b6105c56000611307565b565b60607f00000000000000000000000000000000000000000000000000000000000000008060006000805160206125e8833981519152546001600160401b0381111561061457610614611fb8565b60405190808252806020026020018201604052801561066f57816020015b61065c6040518060600160405280600063ffffffff16815260200160008152602001600081525090565b8152602001906001900390816106325790505b50905060005b6000805160206125e8833981519152548110156107e55760006000805160206125e883398151915282815481106106ae576106ae611fce565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290516356a4728960e01b81526004810182905290935090918201906001600160a01b038716906356a4728990602401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190612084565b81526040516331178bfb60e11b815263ffffffff841660048201526020909101906001600160a01b0387169063622f17f690602401602060405180830381865afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc9190612084565b8152508383815181106107d1576107d1611fce565b602090810291909101015250600101610675565b50806040516020016107f79190611ee5565b604051602081830303815290604052935050505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108535750825b90506000826001600160401b0316600114801561086f5750303b155b90508115801561087d575080155b1561089b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108c557845460ff60401b1916600160401b1785555b6108ce86611378565b831561091457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6109246112ac565b600080516020612608833981519152805467ffffffffffffffff19166001600160401b0392909216919091179055565b606060006000805160206126088339815191526001810180546040805160208084028201810190925282815293945060009084015b828210156109db5760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610989565b5050505091505090565b60603361dead14610a0957604051634e5ff03360e11b815260040160405180910390fd5b600080516020612608833981519152805460408051600160f11b602082015260c09290921b6001600160c01b03191660228301528051808303600a018152602a909201905260008615610aa157610a9c610a978989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cc392505050565b611389565b610b1c565b82600101805480602002602001604051908101604052809291908181526020016000905b82821015610b175760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610ac5565b505050505b805190915015610be6578051604051610b3b908490839060200161209d565b604051602081830303815290604052925060005b8161ffff16811015610be35783838281518110610b6e57610b6e611fce565b602002602001015160000151848381518110610b8c57610b8c611fce565b602002602001015160200151858481518110610baa57610baa611fce565b602002602001015160400151604051602001610bc994939291906120cf565b60408051601f198184030181529190529350600101610b4f565b50505b509695505050505050565b610bf96112ac565b6001600160a01b038116610c2857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610c3181611307565b50565b610c3c6112ac565b600080516020612608833981519152610c646000805160206125e88339815191526000611c33565b60005b82811015610cbd5781600101848483818110610c8557610c85611fce565b835460018101855560009485526020909420606090910292909201926003029091019050610cb38282612120565b5050600101610c67565b50505050565b6060826001600160401b03811115610cdd57610cdd611fb8565b604051908082528060200260200182016040528015610d1657816020015b610d03611c54565b815260200190600190039081610cfb5790505b50905060005b83811015610dbb57366000868684818110610d3957610d39611fce565b9050602002810190610d4b9190611fe4565b91509150610d598282611601565b848481518110610d6b57610d6b611fce565b6020026020010181905250848381518110610d8857610d88611fce565b6020026020010151848481518110610da257610da2611fce565b6020908102919091010151608001525050600101610d1c565b509392505050565b815115610e3f576000610dd583611389565b905060005b8151811015610e3c576000828281518110610df757610df7611fce565b6020026020010151600001519050610e0f84826116d4565b610e335760405162cc979560e11b815263ffffffff82166004820152602401610c1f565b50600101610dda565b50505b6000610e4961172b565b9050610e5582826116d4565b610e795760405162cc979560e11b815263ffffffff82166004820152602401610c1f565b505050565b6000610e8861172b565b9050606060005b8451811015610f00578263ffffffff16858281518110610eb157610eb1611fce565b602002602001015163ffffffff1603610ef857838181518110610ed657610ed6611fce565b6020026020010151806020019051810190610ef191906121af565b9150610f00565b600101610e8f565b5060005b8451811015610914576000858281518110610f2157610f21611fce565b602002602001015190506000858381518110610f3f57610f3f611fce565b6020026020010151806020019051810190610f5a91906121af565b90506000610f6885846117b4565b5090506000610f7783886117b4565b91505080821115610fcb57604051631915975760e01b815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c1f565b505060019092019150610f049050565b600080516020612608833981519152805482516001600160401b03909116101561102d5780548251604051639db0860560e01b81526001600160401b0390921660048301526024820152604401610c1f565b8151156111995760008080805b855181101561091457600086828151811061105757611057611fce565b60209081029190910181015180518051920151604051635a0dfe4d60e01b815263ffffffff9093166004840152602483015291507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635a0dfe4d90604401602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611100919061228b565b61110a5750611191565b80515163ffffffff868116911614158061112957508051602001518414155b1561114a578051805160209091015190955093506111478585611851565b92505b611153836122c3565b9250826001600160401b03168160000151604001516001600160401b03161461118f576040516350823c8560e01b815260040160405180910390fd5b505b60010161103a565b5050565b60606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163463bd815db060e01b866040516024016111e691906122e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112249190612411565b60006040518083038185875af1925050503d8060008114611261576040519150601f19603f3d011682016040523d82523d6000602084013e611266565b606091505b50915091506000611277838361191a565b905061128161172b565b8160405160200161129392919061242d565b6040516020818303038152906040529350505050919050565b336112de7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146105c55760405163118cdaa760e01b8152336004820152602401610c1f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6113806119c2565b610c3181611a0b565b606060006000805160206125e8833981519152805480602002602001604051908101604052809291908181526020016000905b8282101561140e5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016113bc565b505050509050600083516001600160401b0381111561142f5761142f611fb8565b60405190808252806020026020018201604052801561147a57816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161144d5790505b50905060001960005b855181101561152e5760008682815181106114a0576114a0611fce565b60200260200101516000015160000151905060006114be8683611a13565b9050600081121580156114da575060006114d88684611a13565b125b1561152457836114e98161245f565b9450508581815181106114fe576114fe611fce565b602002602001015185858151811061151857611518611fce565b60200260200101819052505b5050600101611483565b50600081126115f957600061154482600161247e565b9050806001600160401b0381111561155e5761155e611fb8565b6040519080825280602002602001820160405280156115a957816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161157c5790505b50945060005b818110156115f6578381815181106115c9576115c9611fce565b60200260200101518682815181106115e3576115e3611fce565b60209081029190910101526001016115af565b50505b505050919050565b611609611c54565b604051806060016040528061161e8585611a6a565b63ffffffff1681526020016116338585611a8d565b81526020016116428585611aa6565b6001600160401b0316905281526116598383611ac9565b63ffffffff16602082015261166e8383611ad9565b6001600160a01b031660408201526116868383611aeb565b60608201526116958383611afb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b835181101561171f578263ffffffff168482815181106116fa576116fa611fce565b602002602001015163ffffffff1603611717576001915050611725565b6001016116d8565b50600090505b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af9190612491565b905090565b60008060005b8451811015611841578363ffffffff168582815181106117dc576117dc611fce565b60200260200101516000015163ffffffff16036118395784818151811061180557611805611fce565b60200260200101516020015185828151811061182357611823611fce565b602002602001015160400151925092505061184a565b6001016117ba565b50600080915091505b9250929050565b60405163283750ff60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906124ae565b9392505050565b60608215611957576040516330a65ec560e11b81526020600482015260096024820152681b9bc81c995d995c9d60ba1b6044820152606401610c1f565b638351eea760e01b611968836124cb565b6001600160e01b0319161461199257816040516330a65ec560e11b8152600401610c1f9190611e77565b6119ac60048084516119a491906124fe565b849190611b16565b9050808060200190518101906119139190612511565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166105c557604051631afcd79f60e31b815260040160405180910390fd5b610bf96119c2565b6000805b8351811015611a5f578263ffffffff16848281518110611a3957611a39611fce565b60200260200101516000015163ffffffff1603611a57579050611725565b600101611a17565b506000199392505050565b6000611a7a600d6009848661202a565b611a8391612054565b60e01c9392505050565b6000611a9d602d600d848661202a565b6119139161259b565b6000611ab660096001848661202a565b611abf916125b9565b60c01c9392505050565b6000611a7a6031602d848661202a565b6000611913611ae88484611c23565b90565b6000611a9d60716051848661202a565b366000611b0b836071818761202a565b915091509250929050565b606081611b2481601f61247e565b1015611b635760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610c1f565b611b6d828461247e565b84511015611bb15760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610c1f565b606082158015611bd05760405191506000825260208201604052611c1a565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611c09578051835260209283019201611bf1565b5050858452601f01601f1916604052505b50949350505050565b6000611a9d60516031848661202a565b5080546000825560030290600052602060002090810190610c319190611cb1565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915290565b5b80821115611cdb57805463ffffffff191681556000600182018190556002820155600301611cb2565b5090565b60008083601f840112611cf157600080fd5b5081356001600160401b03811115611d0857600080fd5b6020830191508360208260051b850101111561184a57600080fd5b60008060008060008060608789031215611d3c57600080fd5b86356001600160401b0380821115611d5357600080fd5b611d5f8a838b01611cdf565b90985096506020890135915080821115611d7857600080fd5b611d848a838b01611cdf565b90965094506040890135915080821115611d9d57600080fd5b50611daa89828a01611cdf565b979a9699509497509295939492505050565b60008060008060408587031215611dd257600080fd5b84356001600160401b0380821115611de957600080fd5b611df588838901611cdf565b90965094506020870135915080821115611e0e57600080fd5b50611e1b87828801611cdf565b95989497509550505050565b60005b83811015611e42578181015183820152602001611e2a565b50506000910152565b60008151808452611e63816020860160208601611e27565b601f01601f19169290920160200192915050565b6020815260006119136020830184611e4b565b600060208284031215611e9c57600080fd5b81356001600160a01b038116811461191357600080fd5b6001600160401b0381168114610c3157600080fd5b600060208284031215611eda57600080fd5b813561191381611eb3565b602080825282518282018190526000919060409081850190868401855b82811015611f37578151805163ffffffff16855286810151878601528501518585015260609093019290850190600101611f02565b5091979650505050505050565b60008060208385031215611f5757600080fd5b82356001600160401b0380821115611f6e57600080fd5b818501915085601f830112611f8257600080fd5b813581811115611f9157600080fd5b866020606083028501011115611fa657600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611ffb57600080fd5b8301803591506001600160401b0382111561201557600080fd5b60200191503681900382131561184a57600080fd5b6000808585111561203a57600080fd5b8386111561204757600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561207c5780818660040360031b1b83161692505b505092915050565b60006020828403121561209657600080fd5b5051919050565b600083516120af818460208801611e27565b60f09390931b6001600160f01b0319169190920190815260020192915050565b600085516120e1818460208a01611e27565b60e09590951b6001600160e01b031916919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c3157600080fd5b813561212b8161210e565b63ffffffff811663ffffffff198354161782555060208201356001820155604082013560028201555050565b604051606081016001600160401b038111828210171561217957612179611fb8565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121a7576121a7611fb8565b604052919050565b600060208083850312156121c257600080fd5b82516001600160401b03808211156121d957600080fd5b818501915085601f8301126121ed57600080fd5b8151818111156121ff576121ff611fb8565b61220d848260051b0161217f565b8181528481019250606091820284018501918883111561222c57600080fd5b938501935b8285101561227f5780858a0312156122495760008081fd5b612251612157565b855161225c8161210e565b815285870151878201526040808701519082015284529384019392850192612231565b50979650505050505050565b60006020828403121561229d57600080fd5b8151801515811461191357600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b038083168181036122df576122df6122ad565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561240357888303603f1901855281518051805163ffffffff168552602080820151908601526040908101516001600160401b0316908501526101408882015160606123688188018363ffffffff169052565b8984015191506080612384818901846001600160a01b03169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e0906123bb828901846001600160a01b03169052565b840151610100880184905291506123d487840183611e4b565b9301518684036101208801529291506123ef90508183611e4b565b968901969450505090860190600101612312565b509098975050505050505050565b60008251612423818460208701611e27565b9190910192915050565b63ffffffff60e01b8360e01b16815260008251612451816004850160208701611e27565b919091016004019392505050565b60006001600160ff1b018201612477576124776122ad565b5060010190565b80820180821115611725576117256122ad565b6000602082840312156124a357600080fd5b81516119138161210e565b6000602082840312156124c057600080fd5b815161191381611eb3565b805160208201516001600160e01b031980821692919060048310156115f95760049290920360031b82901b161692915050565b81810381811115611725576117256122ad565b60006020828403121561252357600080fd5b81516001600160401b038082111561253a57600080fd5b818401915084601f83011261254e57600080fd5b81518181111561256057612560611fb8565b612573601f8201601f191660200161217f565b915080825285602082850101111561258a57600080fd5b611c1a816020840160208601611e27565b8035602083101561172557600019602084900360031b1b1692915050565b6001600160c01b0319813581811691600885101561207c5760089490940360031b84901b169092169291505056fe56af11d8938063b7ae95a808f88d40c589be3bbf4cb6facdbc642a7b38e01f0156af11d8938063b7ae95a808f88d40c589be3bbf4cb6facdbc642a7b38e01f00a264697066735822122066a0092dcfc581ba7e9775b4ef3fa56f24076bf5caddd8c46764379fbd724dae64736f6c63430008160033",
- "sourceMap": "315:3694:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:726:7;;;;;;;;;;-1:-1:-1;4570:726:7;;;;;:::i;:::-;;:::i;:::-;;2453:152;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2584:14:7;2453:152;;-1:-1:-1;;;;;2584:14:7;;;1673:50:42;;1661:2;1646:18;2453:152:7;;;;;;;;4222:342;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1378:29::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3562:32:42;;;3544:51;;3532:2;3517:18;1378:29:7;3398:203:42;5302:99:7;;;;;;;;;;-1:-1:-1;5302:99:7;;;5389:1;3774:50:42;;5344:12:7;3855:2:42;3840:18;;3833:45;3747:18;5302:99:7;3606:278:42;3155:101:33;;;;;;;;;;;;;:::i;2441:144::-;;;;;;;;;;-1:-1:-1;1313:22:33;2570:8;-1:-1:-1;;;;;2570:8:33;2441:144;;707:603:4;;;;;;;;;;;;;:::i;600:101::-;;;;;;;;;;-1:-1:-1;600:101:4;;;;;:::i;:::-;;:::i;2611:172:7:-;;;;;;;;;;-1:-1:-1;2611:172:7;;;;;:::i;:::-;;:::i;3103:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1338:34::-;;;;;;;;;;;;;;;3281:855;;;;;;;;;;-1:-1:-1;3281:855:7;;;;;:::i;:::-;;:::i;3405:215:33:-;;;;;;;;;;-1:-1:-1;3405:215:33;;;;;:::i;:::-;;:::i;2789:308:7:-;;;;;;;;;;-1:-1:-1;2789:308:7;;;;;:::i;:::-;;:::i;4570:726::-;1714:10;1281:6;1714:30;1710:57;;1753:14;;-1:-1:-1;;;1753:14:7;;;;;;;;;;;1710:57;4745:30:::1;4778:48;4799:8;;4809:16;;4778:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4778:20:7::1;::::0;-1:-1:-1;;;4778:48:7:i:1;:::-;4745:81:::0;-1:-1:-1;4836:20:7::1;4872:12:::0;-1:-1:-1;;;;;4859:33:7;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;4859:33:7::1;-1:-1:-1::0;4836:56:7;-1:-1:-1;4902:26:7::1;4943:12:::0;-1:-1:-1;;;;;4931:32:7;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4902:61;;4979:9;4974:218;4994:23:::0;;::::1;4974:218;;;5038:25;;5066:12;;5079:1;5066:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;5038:43:::0;;-1:-1:-1;5038:43:7;-1:-1:-1;5119:15:7::1;5132:1;5130;5038:43:::0;;5119:15:::1;:::i;:::-;5112:23;::::0;::::1;:::i;:::-;5105:31;;5095:4;5100:1;5095:7;;;;;;;;:::i;:::-;:41;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:41;5167:14:::1;:10:::0;5178:1:::1;5167:10:::0;;:14:::1;:::i;:::-;5150:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;5150:14:7;;:11;;-1:-1:-1;5162:1:7;;-1:-1:-1;5150:14:7;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:31;-1:-1:-1;;5019:3:7::1;;4974:218;;;;5201:40;5227:7;5236:4;5201:25;:40::i;:::-;5252:37;5262:7;5271:4;5277:11;5252:9;:37::i;:::-;4735:561;;;4570:726:::0;;;;;;:::o;4222:342::-;4374:12;1714:10;1281:6;1714:30;1710:57;;1753:14;;-1:-1:-1;;;1753:14:7;;;;;;;;;;;1710:57;4398:30:::1;4431:48;4452:8;;4462:16;;4431:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4431:20:7::1;::::0;-1:-1:-1;;;4431:48:7:i:1;:::-;4398:81;;4489:33;4514:7;4489:24;:33::i;:::-;4539:18;4549:7;4539:9;:18::i;:::-;4532:25:::0;4222:342;-1:-1:-1;;;;;;4222:342:7:o;3155:101:33:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;707:603:4:-;772:12;839:9;;796:32;-1:-1:-1;;;;;;;;;;;993:22:4;-1:-1:-1;;;;;976:40:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;976:40:4;;;;;;;;;;;;;;;;;942:74;;1031:9;1026:238;-1:-1:-1;;;;;;;;;;;1050:22:4;1046:26;;1026:238;;;1093:16;-1:-1:-1;;;;;;;;;;;1128:1:4;1112:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:22;1165:88;;;;;;;;1112:22;;;;1165:88;;;1187:31;;-1:-1:-1;;;1187:31:4;;;;;7791:42:42;;;1112:22:4;;-1:-1:-1;1165:88:4;;;;;-1:-1:-1;;;;;1187:20:4;;;;;7764:18:42;;1187:31:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1165:88;;1220:32;;-1:-1:-1;;;1220:32:4;;;7809:23:42;;1220:32:4;;;7791:42:42;1165:88:4;;;;;-1:-1:-1;;;;;1220:21:4;;;;;7764:18:42;;1220:32:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1165:88;;;1148:11;1160:1;1148:14;;;;;;;;:::i;:::-;;;;;;;;;;:105;-1:-1:-1;1074:3:4;;1026:238;;;;1291:11;1280:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;1273:30;;;;;707:603;:::o;600:101::-;8870:21:34;4302:15;;-1:-1:-1;;;4302:15:34;;;;4301:16;;-1:-1:-1;;;;;4348:14:34;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:34;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:34;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:34;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:34;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:34;-1:-1:-1;;;5013:22:34;;;4979:67;669:25:4::1;684:9;669:14;:25::i;:::-;5070:14:34::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:34;;;5142:14;;-1:-1:-1;1673:50:42;;5142:14:34;;1661:2:42;1646:18;5142:14:34;;;;;;;5066:101;4092:1081;;;;;600:101:4;:::o;2611:172:7:-;2334:13:33;:11;:13::i;:::-;-1:-1:-1;;;;;;;;;;;2746:30:7;;-1:-1:-1;;2746:30:7::1;-1:-1:-1::0;;;;;2746:30:7;;;::::1;::::0;;;::::1;::::0;;2611:172::o;3103:::-;3154:21;3187:25;-1:-1:-1;;;;;;;;;;;3253:15:7;;;3246:22;;;;;;;;;;;;;;;;;;;3187:49;;-1:-1:-1;;;3246:22:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3103:172;:::o;3281:855::-;3417:12;1714:10;1281:6;1714:30;1710:57;;1753:14;;-1:-1:-1;;;1753:14:7;;;;;;;;;;;1710:57;-1:-1:-1;;;;;;;;;;;3555:14:7;;3522:48:::1;::::0;;-1:-1:-1;;;3522:48:7::1;::::0;::::1;9269:51:42::0;9375:3;9353:16;;;;-1:-1:-1;;;;;;9353:16:42;9336:11;;;9329:72;3522:48:7;;;;;;;;;9417:12:42;;;;3522:48:7;;-1:-1:-1;3666:20:7;;:132:::1;;3731:67;3749:48;3770:8;;3780:16;;3749:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3749:20:7::1;::::0;-1:-1:-1;;;3749:48:7:i:1;:::-;3731:17;:67::i;:::-;3666:132;;;3701:1;:15;;3666:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;::::1;::::0;::::1;;;;;;;;;3813:12:::0;;3636:162;;-1:-1:-1;3813:16:7;3809:297:::1;;3866:12:::0;;3902:30:::1;::::0;::::1;::::0;3919:6;;3866:12;;3902:30:::1;;;:::i;:::-;;;;;;;;;;;;;3893:39;;3952:9;3947:149;3971:4;3967:8;;:1;:8;3947:149;;;4026:6;4034:5;4040:1;4034:8;;;;;;;;:::i;:::-;;;;;;;:12;;;4048:5;4054:1;4048:8;;;;;;;;:::i;:::-;;;;;;;:17;;;4067:5;4073:1;4067:8;;;;;;;;:::i;:::-;;;;;;;:13;;;4009:72;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;4009:72:7;;::::1;::::0;;;;;;;-1:-1:-1;3977:3:7::1;;3947:149;;;;3831:275;3809:297;-1:-1:-1::0;4123:6:7;3281:855;-1:-1:-1;;;;;;3281:855:7:o;3405:215:33:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:33;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:33;;3562:1:::1;3534:31;::::0;::::1;3544:51:42::0;3517:18;;3534:31:33::1;;;;;;;;3485:91;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;2789:308:7:-;2334:13:33;:11;:13::i;:::-;-1:-1:-1;;;;;;;;;;;2943:22:7::1;-1:-1:-1::0;;;;;;;;;;;2884:25:7::1;2943:22;:::i;:::-;2980:9;2975:116;2995:25:::0;;::::1;2975:116;;;3041:1;:15;;3062:14;;3077:1;3062:17;;;;;;;:::i;:::-;3041:39:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;3041:39:7;;;::::1;::::0;;;3062:17:::1;::::0;;::::1;::::0;;;::::1;::::0;3041:39:::1;;::::0;;::::1;::::0;-1:-1:-1;3041:39:7::1;3062:17:::0;3041:39;::::1;:::i;:::-;-1:-1:-1::0;;3022:3:7::1;;2975:116;;;;2874:223;2789:308:::0;;:::o;1931:536:31:-;2054:30;2126:8;-1:-1:-1;;;;;2106:36:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2096:46;;2157:9;2152:309;2172:19;;;2152:309;;;2212:21;;2236:8;;2245:1;2236:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2212:35;;;;2274:28;2295:6;;2274:20;:28::i;:::-;2261:7;2269:1;2261:10;;;;;;;;:::i;:::-;;;;;;:41;;;;2431:16;2448:1;2431:19;;;;;;;;:::i;:::-;;;;;;;2412:7;2420:1;2412:10;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:38;-1:-1:-1;;2193:3:31;;2152:309;;;;1931:536;;;;;:::o;5583:660:7:-;5743:15;;:19;5739:328;;5778:27;5808;5826:8;5808:17;:27::i;:::-;5778:57;;5854:9;5849:208;5873:5;:12;5869:1;:16;5849:208;;;5910:18;5931:5;5937:1;5931:8;;;;;;;;:::i;:::-;;;;;;;:12;;;5910:33;;5966:30;5977:5;5984:11;5966:10;:30::i;:::-;5961:81;;6005:37;;-1:-1:-1;;;6005:37:7;;7821:10:42;7809:23;;6005:37:7;;;7791:42:42;7764:18;;6005:37:7;7647:192:42;5961:81:7;-1:-1:-1;5887:3:7;;5849:208;;;;5764:303;5739:328;6119:15;6137:14;:12;:14::i;:::-;6119:32;;6166:27;6177:5;6184:8;6166:10;:27::i;:::-;6161:75;;6202:34;;-1:-1:-1;;;6202:34:7;;7821:10:42;7809:23;;6202:34:7;;;7791:42:42;7764:18;;6202:34:7;7647:192:42;6161:75:7;5683:560;5583:660;;:::o;1316:1083:4:-;1518:15;1536:14;:12;:14::i;:::-;1518:32;;1560:36;1647:9;1642:211;1666:5;:12;1662:1;:16;1642:211;;;1715:8;1703:20;;:5;1709:1;1703:8;;;;;;;;:::i;:::-;;;;;;;:20;;;1699:144;;1773:12;1786:1;1773:15;;;;;;;;:::i;:::-;;;;;;;1762:43;;;;;;;;;;;;:::i;:::-;1743:62;;1823:5;;1699:144;1680:3;;1642:211;;;;1900:9;1895:498;1919:5;:12;1915:1;:16;1895:498;;;1952:16;1971:5;1977:1;1971:8;;;;;;;;:::i;:::-;;;;;;;1952:27;;1993:37;2044:12;2057:1;2044:15;;;;;;;;:::i;:::-;;;;;;;2033:43;;;;;;;;;;;;:::i;:::-;1993:83;;2091:21;2118:45;2135:16;2153:9;2118:16;:45::i;:::-;2090:73;;;2180:22;2206:45;2223:17;2242:8;2206:16;:45::i;:::-;2177:74;;;2285:14;2269:13;:30;2265:118;;;2326:42;;-1:-1:-1;;;2326:42:4;;13119:2:42;2326:42:4;;;13101:21:42;13158:2;13138:18;;;13131:30;13197;13177:18;;;13170:58;13245:18;;2326:42:4;12918:351:42;2265:118:4;-1:-1:-1;;1933:3:4;;;;;-1:-1:-1;1895:498:4;;-1:-1:-1;1895:498:4;6484:1419:7;-1:-1:-1;;;;;;;;;;;6656:14:7;;6638:15;;-1:-1:-1;;;;;6656:14:7;;;-1:-1:-1;6634:92:7;;;6694:14;;6710:15;;6679:47;;-1:-1:-1;;;6679:47:7;;-1:-1:-1;;;;;6694:14:7;;;6679:47;;;13447:50:42;13513:18;;;13506:34;13420:18;;6679:47:7;13274:272:42;6634:92:7;6871:15;;:19;6867:1030;;6906:13;;;;6987:900;7011:8;:15;7007:1;:19;6987:900;;;7051:27;7081:8;7090:1;7081:11;;;;;;;;:::i;:::-;;;;;;;;;;;;7206:13;;:20;;7228;;;7165:84;;-1:-1:-1;;;7165:84:7;;13753:10:42;13741:23;;;7165:84:7;;;13723:42:42;13781:18;;;13774:34;7081:11:7;-1:-1:-1;7188:9:7;-1:-1:-1;;;;;7165:40:7;;;;13696:18:42;;7165:84:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7160:99;;7251:8;;;7160:99;7345:13;;:20;:30;;;;;;;;;:64;;-1:-1:-1;7379:13:7;;:20;;;:30;;;7345:64;7341:253;;;7442:13;;:20;;7493;;;;;7442;;-1:-1:-1;7493:20:7;-1:-1:-1;7543:32:7;7442:20;7493;7543:16;:32::i;:::-;7535:40;;7341:253;7840:7;;;:::i;:::-;;;;-1:-1:-1;;;;;7817:30:7;:6;:13;;;:19;;;-1:-1:-1;;;;;7817:30:7;;7813:59;;7856:16;;-1:-1:-1;;;7856:16:7;;;;;;;;;;;7813:59;7033:854;6987:900;7028:3;;6987:900;;6867:1030;6565:1338;6484:1419;:::o;7909:465::-;7987:12;8012;8026:23;8053:9;-1:-1:-1;;;;;8053:14:7;8076:9;8124:50;;;8176:8;8101:84;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8101:84:7;;;;;;;;;;;;;;-1:-1:-1;;;;;8101:84:7;-1:-1:-1;;;;;;8101:84:7;;;;;;;;;;8053:142;;;;8101:84;8053:142;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:184;;;;8206:19;8228:39;8247:7;8256:10;8228:18;:39::i;:::-;8206:61;;8301:14;:12;:14::i;:::-;8317:6;8284:40;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8277:47;;;;;7909:465;;;:::o;2658:162:33:-;966:10:35;2717:7:33;1313:22;2570:8;-1:-1:-1;;;;;2570:8:33;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:33;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:33;;966:10:35;2763:40:33;;;3544:51:42;3517:18;;2763:40:33;3398:203:42;3774:248:33;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:33;;-1:-1:-1;;;;;3941:19:33;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:34;:18;:20::i;:::-;1929:38:33::1;1954:12;1929:24;:38::i;2812:950:4:-:0;2918:27;2957:30;-1:-1:-1;;;;;;;;;;;2957:48:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3015:30;3067:8;:15;-1:-1:-1;;;;;3048:35:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3048:35:4;;-1:-1:-1;;3048:35:4;;;;;;;;;;;-1:-1:-1;3015:68:4;-1:-1:-1;;;3094:13:4;3122:377;3146:8;:15;3142:1;:19;3122:377;;;3182:13;3198:8;3207:1;3198:11;;;;;;;;:::i;:::-;;;;;;;:18;;;:25;;;3182:41;;3273:12;3288:26;3297:8;3307:6;3288:8;:26::i;:::-;3273:41;;3341:1;3332:5;:10;;:44;;;;;3375:1;3346:26;3355:8;3365:6;3346:8;:26::i;:::-;:30;3332:44;3328:161;;;3396:8;;;;:::i;:::-;;;;3450;3467:5;3450:24;;;;;;;;:::i;:::-;;;;;;;3422:8;3439:6;3422:25;;;;;;;;:::i;:::-;;;;;;:52;;;;3328:161;-1:-1:-1;;3163:3:4;;3122:377;;;;3548:1;3538:6;:11;3534:222;;3565:11;3579:19;3587:6;3597:1;3579:19;:::i;:::-;3565:33;;3639:3;-1:-1:-1;;;;;3620:23:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3620:23:4;;-1:-1:-1;;3620:23:4;;;;;;;;;;;;3612:31;;3662:9;3657:89;3681:3;3677:1;:7;3657:89;;;3720:8;3729:1;3720:11;;;;;;;;:::i;:::-;;;;;;;3709:5;3715:1;3709:8;;;;;;;;:::i;:::-;;;;;;;;;;:22;3686:3;;3657:89;;;;3551:205;3534:222;2947:815;;;2812:950;;;:::o;1215:357:31:-;1278:27;;:::i;:::-;1333:59;;;;;;;;1340:16;:7;;:14;:16::i;:::-;1333:59;;;;;;1358:16;:7;;:14;:16::i;:::-;1333:59;;;;1376:15;:7;;:13;:15::i;:::-;-1:-1:-1;;;;;1333:59:31;;;1317:75;;1418:16;:7;;:14;:16::i;:::-;1402:32;;:13;;;:32;1462:21;:7;;:19;:21::i;:::-;-1:-1:-1;;;;;1444:39:31;:15;;;:39;1507:14;:7;;:12;:14::i;:::-;1493:11;;;:28;1548:17;:7;;:15;:17::i;:::-;1531:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1531:14:31;;;:34;:6;1215:357;-1:-1:-1;;1215:357:31:o;6249:229:7:-;6330:4;;6346:104;6370:6;:13;6366:1;:17;6346:104;;;6421:5;6408:18;;:6;6415:1;6408:9;;;;;;;;:::i;:::-;;;;;;;:18;;;6404:35;;6435:4;6428:11;;;;;6404:35;6385:3;;6346:104;;;;6466:5;6459:12;;6249:229;;;;;:::o;9047:125::-;9102:6;9148:10;-1:-1:-1;;;;;9127:36:7;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9120:45;;9047:125;:::o;2405:401:4:-;2529:7;2538;2562:9;2557:220;2581:12;:19;2577:1;:23;2557:220;;;2654:10;2625:39;;:12;2638:1;2625:15;;;;;;;;:::i;:::-;;;;;;;:25;;;:39;;;2621:146;;2692:12;2705:1;2692:15;;;;;;;;:::i;:::-;;;;;;;:28;;;2722:12;2735:1;2722:15;;;;;;;;:::i;:::-;;;;;;;:29;;;2684:68;;;;;;;2621:146;2602:3;;2557:220;;;;2794:1;2797;2786:13;;;;2405:401;;;;;;:::o;9218:191:7:-;9333:69;;-1:-1:-1;;;9333:69:7;;-1:-1:-1;;;;;9379:4:7;18070:32:42;;9333:69:7;;;18052:51:42;18151:10;18139:23;;18119:18;;;18112:51;18179:18;;;18172:34;;;-1:-1:-1;;9354:10:7;9333:45;;;;;;18025:18:42;;9333:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9326:76;9218:191;-1:-1:-1;;;9218:191:7:o;8380:621::-;8472:19;8560:8;8556:50;;;8577:29;;-1:-1:-1;;;8577:29:7;;18672:2:42;8577:29:7;;;18654:21:42;18711:1;18691:18;;;18684:29;-1:-1:-1;;;18729:18:42;;;18722:39;18778:18;;8577:29:7;18471:331:42;8556:50:7;-1:-1:-1;;;8674:19:7;8681:11;8674:19;:::i;:::-;-1:-1:-1;;;;;;8674:71:7;;8670:138;;8785:11;8768:29;;-1:-1:-1;;;8768:29:7;;;;;;;;:::i;8670:138::-;8904:44;8922:1;8946;8925:11;:18;:22;;;;:::i;:::-;8904:11;;:44;:17;:44::i;:::-;8895:53;;8978:6;8967:27;;;;;;;;;;;;:::i;7084:141:34:-;8870:21;8560:40;-1:-1:-1;;;8560:40:34;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:34;;;;;;;;;;;1980:235:33;6931:20:34;:18;:20::i;3768:239:4:-;3852:6;;3870:112;3894:6;:13;3890:1;:17;3870:112;;;3949:4;3932:21;;:6;3939:1;3932:9;;;;;;;;:::i;:::-;;;;;;;:13;;;:21;;;3928:43;;3969:1;-1:-1:-1;3955:16:4;;3928:43;3909:3;;3870:112;;;-1:-1:-1;;;3998:2:4;3768:239;-1:-1:-1;;;3768:239:4:o;2230:148:23:-;2293:6;2332:37;605:2;557:1;2332:7;;:37;:::i;:::-;2325:45;;;:::i;:::-;2318:53;;;2230:148;-1:-1:-1;;;2230:148:23:o;2384:142::-;2447:7;2481:37;655:2;605;2481:7;;:37;:::i;:::-;2473:46;;;:::i;2078:146::-;2140:6;2179:36;557:1;493;2179:7;;:36;:::i;:::-;2172:44;;;:::i;:::-;2165:52;;;2078:146;-1:-1:-1;;;2078:146:23:o;2671:150::-;2734:6;2773:39;706:2;655;2773:7;;:39;:::i;2976:130::-;3044:7;3070:29;:17;3079:7;;3070:8;:17::i;:::-;1210:15:19;1084:151;3112:138:23;3173:7;3207:35;862:3;785:2;3207:7;;:35;:::i;3256:135::-;3320:14;;3359:24;:7;862:3;3359:7;;:24;:::i;:::-;3346:38;;;;3256:135;;;;;:::o;9457:2804:32:-;9603:12;9655:7;9639:12;9655:7;9649:2;9639:12;:::i;:::-;:23;;9631:50;;;;-1:-1:-1;;;9631:50:32;;20827:2:42;9631:50:32;;;20809:21:42;20866:2;20846:18;;;20839:30;-1:-1:-1;;;20885:18:42;;;20878:44;20939:18;;9631:50:32;20625:338:42;9631:50:32;9716:16;9725:7;9716:6;:16;:::i;:::-;9699:6;:13;:33;;9691:63;;;;-1:-1:-1;;;9691:63:32;;21170:2:42;9691:63:32;;;21152:21:42;21209:2;21189:18;;;21182:30;-1:-1:-1;;;21228:18:42;;;21221:47;21285:18;;9691:63:32;20968:341:42;9691:63:32;9765:22;9828:15;;9856:1967;;;;11964:4;11958:11;11945:24;;12150:1;12139:9;12132:20;12198:4;12187:9;12183:20;12177:4;12170:34;9821:2397;;9856:1967;10038:4;10032:11;10019:24;;10697:2;10688:7;10684:16;11079:9;11072:17;11066:4;11062:28;11050:9;11039;11035:25;11031:60;11127:7;11123:2;11119:16;11379:6;11365:9;11358:17;11352:4;11348:28;11336:9;11328:6;11324:22;11320:57;11316:70;11153:425;11412:3;11408:2;11405:11;11153:425;;;11550:9;;11539:21;;11453:4;11445:13;;;;11485;11153:425;;;-1:-1:-1;;11596:26:32;;;11804:2;11787:11;-1:-1:-1;;11783:25:32;11777:4;11770:39;-1:-1:-1;9821:2397:32;-1:-1:-1;12245:9:32;9457:2804;-1:-1:-1;;;;9457:2804:32:o;2827:143:23:-;2892:7;2926:36;785:2;706;2926:7;;:36;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:374:42:-;84:8;94:6;148:3;141:4;133:6;129:17;125:27;115:55;;166:1;163;156:12;115:55;-1:-1:-1;189:20:42;;-1:-1:-1;;;;;221:30:42;;218:50;;;264:1;261;254:12;218:50;301:4;293:6;289:17;277:29;;361:3;354:4;344:6;341:1;337:14;329:6;325:27;321:38;318:47;315:67;;;378:1;375;368:12;393:1131;573:6;581;589;597;605;613;666:2;654:9;645:7;641:23;637:32;634:52;;;682:1;679;672:12;634:52;722:9;709:23;-1:-1:-1;;;;;792:2:42;784:6;781:14;778:34;;;808:1;805;798:12;778:34;847:77;916:7;907:6;896:9;892:22;847:77;:::i;:::-;943:8;;-1:-1:-1;821:103:42;-1:-1:-1;1031:2:42;1016:18;;1003:32;;-1:-1:-1;1047:16:42;;;1044:36;;;1076:1;1073;1066:12;1044:36;1115:79;1186:7;1175:8;1164:9;1160:24;1115:79;:::i;:::-;1213:8;;-1:-1:-1;1089:105:42;-1:-1:-1;1301:2:42;1286:18;;1273:32;;-1:-1:-1;1317:16:42;;;1314:36;;;1346:1;1343;1336:12;1314:36;;1385:79;1456:7;1445:8;1434:9;1430:24;1385:79;:::i;:::-;393:1131;;;;-1:-1:-1;393:1131:42;;-1:-1:-1;393:1131:42;;1483:8;;393:1131;-1:-1:-1;;;393:1131:42:o;1734:798::-;1867:6;1875;1883;1891;1944:2;1932:9;1923:7;1919:23;1915:32;1912:52;;;1960:1;1957;1950:12;1912:52;2000:9;1987:23;-1:-1:-1;;;;;2070:2:42;2062:6;2059:14;2056:34;;;2086:1;2083;2076:12;2056:34;2125:77;2194:7;2185:6;2174:9;2170:22;2125:77;:::i;:::-;2221:8;;-1:-1:-1;2099:103:42;-1:-1:-1;2309:2:42;2294:18;;2281:32;;-1:-1:-1;2325:16:42;;;2322:36;;;2354:1;2351;2344:12;2322:36;;2393:79;2464:7;2453:8;2442:9;2438:24;2393:79;:::i;:::-;1734:798;;;;-1:-1:-1;2491:8:42;-1:-1:-1;;;;1734:798:42:o;2537:250::-;2622:1;2632:113;2646:6;2643:1;2640:13;2632:113;;;2722:11;;;2716:18;2703:11;;;2696:39;2668:2;2661:10;2632:113;;;-1:-1:-1;;2779:1:42;2761:16;;2754:27;2537:250::o;2792:270::-;2833:3;2871:5;2865:12;2898:6;2893:3;2886:19;2914:76;2983:6;2976:4;2971:3;2967:14;2960:4;2953:5;2949:16;2914:76;:::i;:::-;3044:2;3023:15;-1:-1:-1;;3019:29:42;3010:39;;;;3051:4;3006:50;;2792:270;-1:-1:-1;;2792:270:42:o;3067:217::-;3214:2;3203:9;3196:21;3177:4;3234:44;3274:2;3263:9;3259:18;3251:6;3234:44;:::i;3889:286::-;3948:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;4043:23;;-1:-1:-1;;;;;4095:31:42;;4085:42;;4075:70;;4141:1;4138;4131:12;4180:129;-1:-1:-1;;;;;4258:5:42;4254:30;4247:5;4244:41;4234:69;;4299:1;4296;4289:12;4314:245;4372:6;4425:2;4413:9;4404:7;4400:23;4396:32;4393:52;;;4441:1;4438;4431:12;4393:52;4480:9;4467:23;4499:30;4523:5;4499:30;:::i;4663:870::-;4894:2;4946:21;;;5016:13;;4919:18;;;5038:22;;;4865:4;;4894:2;5079;;5097:18;;;;5138:15;;;4865:4;5181:326;5195:6;5192:1;5189:13;5181:326;;;5254:13;;5296:9;;5307:10;5292:26;5280:39;;5359:11;;;5353:18;5339:12;;;5332:40;5412:11;;5406:18;5392:12;;;5385:40;5454:4;5445:14;;;;5482:15;;;;5217:1;5210:9;5181:326;;;-1:-1:-1;5524:3:42;;4663:870;-1:-1:-1;;;;;;;4663:870:42:o;5538:650::-;5656:6;5664;5717:2;5705:9;5696:7;5692:23;5688:32;5685:52;;;5733:1;5730;5723:12;5685:52;5773:9;5760:23;-1:-1:-1;;;;;5843:2:42;5835:6;5832:14;5829:34;;;5859:1;5856;5849:12;5829:34;5897:6;5886:9;5882:22;5872:32;;5942:7;5935:4;5931:2;5927:13;5923:27;5913:55;;5964:1;5961;5954:12;5913:55;6004:2;5991:16;6030:2;6022:6;6019:14;6016:34;;;6046:1;6043;6036:12;6016:34;6102:7;6097:2;6089:4;6081:6;6077:17;6073:2;6069:26;6065:35;6062:48;6059:68;;;6123:1;6120;6113:12;6059:68;6154:2;6146:11;;;;;6176:6;;-1:-1:-1;5538:650:42;;-1:-1:-1;;;;5538:650:42:o;6193:127::-;6254:10;6249:3;6245:20;6242:1;6235:31;6285:4;6282:1;6275:15;6309:4;6306:1;6299:15;6325:127;6386:10;6381:3;6377:20;6374:1;6367:31;6417:4;6414:1;6407:15;6441:4;6438:1;6431:15;6457:521;6534:4;6540:6;6600:11;6587:25;6694:2;6690:7;6679:8;6663:14;6659:29;6655:43;6635:18;6631:68;6621:96;;6713:1;6710;6703:12;6621:96;6740:33;;6792:20;;;-1:-1:-1;;;;;;6824:30:42;;6821:50;;;6867:1;6864;6857:12;6821:50;6900:4;6888:17;;-1:-1:-1;6931:14:42;6927:27;;;6917:38;;6914:58;;;6968:1;6965;6958:12;6983:331;7088:9;7099;7141:8;7129:10;7126:24;7123:44;;;7163:1;7160;7153:12;7123:44;7192:6;7182:8;7179:20;7176:40;;;7212:1;7209;7202:12;7176:40;-1:-1:-1;;7238:23:42;;;7283:25;;;;;-1:-1:-1;6983:331:42:o;7319:323::-;-1:-1:-1;;;;;;7439:19:42;;7515:11;;;;7546:1;7538:10;;7535:101;;;7623:2;7617;7610:3;7607:1;7603:11;7600:1;7596:19;7592:28;7588:2;7584:37;7580:46;7571:55;;7535:101;;;7319:323;;;;:::o;7844:184::-;7914:6;7967:2;7955:9;7946:7;7942:23;7938:32;7935:52;;;7983:1;7980;7973:12;7935:52;-1:-1:-1;8006:16:42;;7844:184;-1:-1:-1;7844:184:42:o;9440:410::-;9595:3;9633:6;9627:13;9649:66;9708:6;9703:3;9696:4;9688:6;9684:17;9649:66;:::i;:::-;9802:3;9780:16;;;;-1:-1:-1;;;;;;9776:38:42;9737:16;;;;9762:53;;;9842:1;9831:13;;9440:410;-1:-1:-1;;9440:410:42:o;9855:549::-;10066:3;10104:6;10098:13;10120:66;10179:6;10174:3;10167:4;10159:6;10155:17;10120:66;:::i;:::-;10273:3;10251:16;;;;-1:-1:-1;;;;;;10247:43:42;10208:16;;;;10233:58;;;10318:1;10307:13;;10300:29;;;;10356:2;10345:14;;10338:30;10395:2;10384:14;;9855:549;-1:-1:-1;;9855:549:42:o;10409:121::-;10494:10;10487:5;10483:22;10476:5;10473:33;10463:61;;10520:1;10517;10510:12;10535:432;10710:5;10697:19;10725:32;10749:7;10725:32;:::i;:::-;10830:10;10821:7;10817:24;10803:10;10799:15;10792:4;10786:11;10782:33;10779:63;10773:4;10766:77;;10897:2;10890:5;10886:14;10873:28;10869:1;10863:4;10859:12;10852:50;10956:2;10949:5;10945:14;10932:28;10928:1;10922:4;10918:12;10911:50;10535:432;;:::o;10972:253::-;11044:2;11038:9;11086:4;11074:17;;-1:-1:-1;;;;;11106:34:42;;11142:22;;;11103:62;11100:88;;;11168:18;;:::i;:::-;11204:2;11197:22;10972:253;:::o;11230:275::-;11301:2;11295:9;11366:2;11347:13;;-1:-1:-1;;11343:27:42;11331:40;;-1:-1:-1;;;;;11386:34:42;;11422:22;;;11383:62;11380:88;;;11448:18;;:::i;:::-;11484:2;11477:22;11230:275;;-1:-1:-1;11230:275:42:o;11510:1403::-;11632:6;11663:2;11706;11694:9;11685:7;11681:23;11677:32;11674:52;;;11722:1;11719;11712:12;11674:52;11755:9;11749:16;-1:-1:-1;;;;;11825:2:42;11817:6;11814:14;11811:34;;;11841:1;11838;11831:12;11811:34;11879:6;11868:9;11864:22;11854:32;;11924:7;11917:4;11913:2;11909:13;11905:27;11895:55;;11946:1;11943;11936:12;11895:55;11975:2;11969:9;11997:2;11993;11990:10;11987:36;;;12003:18;;:::i;:::-;12043:36;12075:2;12070;12067:1;12063:10;12059:19;12043:36;:::i;:::-;12113:15;;;12144:12;;;;-1:-1:-1;12175:4:42;12214:13;;;12206:22;;12202:31;;;12245:19;;;12242:39;;;12277:1;12274;12267:12;12242:39;12301:11;;;;12321:562;12337:6;12332:3;12329:15;12321:562;;;12417:2;12411:3;12402:7;12398:17;12394:26;12391:116;;;12461:1;12490:2;12486;12479:14;12391:116;12533:22;;:::i;:::-;12589:3;12583:10;12606:32;12630:7;12606:32;:::i;:::-;12651:22;;12715:12;;;12709:19;12693:14;;;12686:43;12752:2;12796:12;;;12790:19;12774:14;;;12767:43;12823:18;;12354:12;;;;12861;;;;12321:562;;;-1:-1:-1;12902:5:42;11510:1403;-1:-1:-1;;;;;;;11510:1403:42:o;13819:277::-;13886:6;13939:2;13927:9;13918:7;13914:23;13910:32;13907:52;;;13955:1;13952;13945:12;13907:52;13987:9;13981:16;14040:5;14033:13;14026:21;14019:5;14016:32;14006:60;;14062:1;14059;14052:12;14101:127;14162:10;14157:3;14153:20;14150:1;14143:31;14193:4;14190:1;14183:15;14217:4;14214:1;14207:15;14233:209;14271:3;-1:-1:-1;;;;;14352:2:42;14345:5;14341:14;14379:2;14370:7;14367:15;14364:41;;14385:18;;:::i;:::-;14434:1;14421:15;;14233:209;-1:-1:-1;;;14233:209:42:o;14697:1923::-;14901:4;14930:2;14970;14959:9;14955:18;15000:2;14989:9;14982:21;15023:6;15058;15052:13;15089:6;15081;15074:22;15115:2;15105:12;;15148:2;15137:9;15133:18;15126:25;;15210:2;15200:6;15197:1;15193:14;15182:9;15178:30;15174:39;15248:2;15240:6;15236:15;15269:1;15279:1312;15293:6;15290:1;15287:13;15279:1312;;;15358:22;;;-1:-1:-1;;15354:36:42;15342:49;;15414:13;;15494:9;;14523:12;;14537:10;14519:29;14507:42;;14598:4;14587:16;;;14581:23;14565:14;;;14558:47;14658:4;14647:16;;;14641:23;-1:-1:-1;;;;;14637:48:42;14621:14;;;14614:72;15450:6;15559:2;15555;15551:11;15545:18;15586:4;15603:48;15647:2;15639:6;15635:15;15621:12;4640:10;4629:22;4617:35;;4564:94;15603:48;15700:2;15696;15692:11;15686:18;15664:40;;15727:4;15744:51;15791:2;15783:6;15779:15;15763:14;-1:-1:-1;;;;;3355:31:42;3343:44;;3289:104;15744:51;15824:11;;;15818:18;15859:4;15883:15;;;15876:27;;;;15932:11;;;15926:18;15968:4;15992:16;;;15985:28;;;;16054:11;;;16048:18;;-1:-1:-1;16090:4:42;;16107:52;16142:16;;;16048:18;-1:-1:-1;;;;;3355:31:42;3343:44;;3289:104;16107:52;16200:12;;16194:19;16245:6;16233:19;;16226:31;;;16194:19;-1:-1:-1;16284:49:42;16317:15;;;16194:19;16284:49;:::i;:::-;16374:12;;16368:19;16428;;;16419:6;16407:19;;16400:48;16368:19;16270:63;-1:-1:-1;16471:40:42;;-1:-1:-1;16270:63:42;16368:19;16471:40;:::i;:::-;16569:12;;;;16461:50;-1:-1:-1;;;16534:15:42;;;;15315:1;15308:9;15279:1312;;;-1:-1:-1;16608:6:42;;14697:1923;-1:-1:-1;;;;;;;;14697:1923:42:o;16625:287::-;16754:3;16792:6;16786:13;16808:66;16867:6;16862:3;16855:4;16847:6;16843:17;16808:66;:::i;:::-;16890:16;;;;;16625:287;-1:-1:-1;;16625:287:42:o;16917:394::-;17133:10;17128:3;17124:20;17115:6;17110:3;17106:16;17102:43;17097:3;17090:56;17072:3;17175:6;17169:13;17191:74;17258:6;17254:1;17249:3;17245:11;17238:4;17230:6;17226:17;17191:74;:::i;:::-;17285:16;;;;17303:1;17281:24;;16917:394;-1:-1:-1;;;16917:394:42:o;17316:147::-;17354:3;-1:-1:-1;;;;;17375:30:42;;17372:56;;17408:18;;:::i;:::-;-1:-1:-1;17455:1:42;17444:13;;17316:147::o;17468:125::-;17533:9;;;17554:10;;;17551:36;;;17567:18;;:::i;17598:249::-;17667:6;17720:2;17708:9;17699:7;17695:23;17691:32;17688:52;;;17736:1;17733;17726:12;17688:52;17768:9;17762:16;17787:30;17811:5;17787:30;:::i;18217:249::-;18286:6;18339:2;18327:9;18318:7;18314:23;18310:32;18307:52;;;18355:1;18352;18345:12;18307:52;18387:9;18381:16;18406:30;18430:5;18406:30;:::i;18807:361::-;18924:12;;18972:4;18961:16;;18955:23;-1:-1:-1;;;;;;19035:11:42;;;;18924:12;18955:23;19069:1;19058:13;;19055:107;;;19130:1;19126:14;;;;19123:1;19119:22;19115:31;;;19107:40;19103:49;;18807:361;-1:-1:-1;;18807:361:42:o;19173:128::-;19240:9;;;19261:11;;;19258:37;;;19275:18;;:::i;19306:718::-;19385:6;19438:2;19426:9;19417:7;19413:23;19409:32;19406:52;;;19454:1;19451;19444:12;19406:52;19487:9;19481:16;-1:-1:-1;;;;;19557:2:42;19549:6;19546:14;19543:34;;;19573:1;19570;19563:12;19543:34;19611:6;19600:9;19596:22;19586:32;;19656:7;19649:4;19645:2;19641:13;19637:27;19627:55;;19678:1;19675;19668:12;19627:55;19707:2;19701:9;19729:2;19725;19722:10;19719:36;;;19735:18;;:::i;:::-;19777:53;19820:2;19801:13;;-1:-1:-1;;19797:27:42;19826:2;19793:36;19777:53;:::i;:::-;19764:66;;19853:2;19846:5;19839:17;19893:7;19888:2;19883;19879;19875:11;19871:20;19868:33;19865:53;;;19914:1;19911;19904:12;19865:53;19927:67;19991:2;19986;19979:5;19975:14;19970:2;19966;19962:11;19927:67;:::i;20029:255::-;20149:19;;20188:2;20180:11;;20177:101;;;-1:-1:-1;;20249:2:42;20245:12;;;20242:1;20238:20;20234:33;20223:45;20029:255;;;;:::o;20289:331::-;-1:-1:-1;;;;;;20409:19:42;;20493:11;;;;20524:1;20516:10;;20513:101;;;20585:1;20581:11;;;;20578:1;20574:19;20570:28;;;20562:37;20558:46;;;;20289:331;-1:-1:-1;;20289:331:42:o",
- "linkReferences": {},
- "immutableReferences": {
- "2263": [
- { "start": 5935, "length": 32 },
- { "start": 6310, "length": 32 }
- ],
- "2265": [
- { "start": 690, "length": 32 },
- { "start": 1483, "length": 32 },
- { "start": 4237, "length": 32 },
- { "start": 4516, "length": 32 }
- ],
- "2267": [
- { "start": 379, "length": 32 },
- { "start": 6248, "length": 32 }
- ]
- }
- },
- "methodIdentifiers": {
- "buildSimulationResult()": "8e9e7099",
- "getConfig(bytes[],uint256[])": "f0cd3836",
- "getPreCrimePeers()": "b9a1f5e7",
- "intialize(address)": "982f0d36",
- "maxBatchSize()": "2913daa0",
- "oApp()": "52ae2879",
- "owner()": "8da5cb5b",
- "preCrime(bytes[],uint256[],bytes[])": "10f9cf3a",
- "renounceOwnership()": "715018a6",
- "setMaxBatchSize(uint64)": "afea44ef",
- "setPreCrimePeers((uint32,bytes32,bytes32)[])": "f8bcddf6",
- "simulate(bytes[],uint256[])": "50dfa937",
- "simulator()": "bf7b5d7a",
- "transferOwnership(address)": "f2fde38b",
- "version()": "54fd4d50"
- },
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_endpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_counter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPreCrimePeers\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"intialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatchSize\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_maxBatchSize\",\"type\":\"uint64\"}],\"name\":\"setMaxBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"_preCrimePeers\",\"type\":\"tuple[]\"}],\"name\":\"setPreCrimePeers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"simulator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol\":\"OmniCounterPreCrimeUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96\",\"dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07\",\"dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w\"]},\"contracts/oapp/OAppUpgradeable.sol\":{\"keccak256\":\"0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf\",\"dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy\"]},\"contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol\":{\"keccak256\":\"0xabc8a0b4bb97506be844e40bfc937f482cbb4dbcf7e703d76694f1104f8543c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a454809402646afb94c602d745eb6d1d380f89209c8b15022168c58fca05dcd\",\"dweb:/ipfs/QmRo4z139UFbNVioB19jfboxK28onXZid3ZV1sPQYz9RF3\"]},\"contracts/oapp/examples/OmniCounterUpgradeable.sol\":{\"keccak256\":\"0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d\",\"dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG\"]},\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":{\"keccak256\":\"0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990\",\"dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7\"]},\"contracts/precrime/PreCrimeUpgradeable.sol\":{\"keccak256\":\"0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768\",\"dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol\":{\"keccak256\":\"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141\",\"dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol\":{\"keccak256\":\"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d\",\"dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol\":{\"keccak256\":\"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f\",\"dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol\":{\"keccak256\":\"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2\",\"dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol\":{\"keccak256\":\"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f\",\"dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}",
- "metadata": {
- "compiler": { "version": "0.8.22+commit.4fc1097e" },
- "language": "Solidity",
- "output": {
- "abi": [
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_endpoint",
- "type": "address"
- },
- { "internalType": "address", "name": "_counter", "type": "address" }
- ],
- "stateMutability": "nonpayable",
- "type": "constructor"
- },
- {
- "inputs": [
- { "internalType": "bytes", "name": "crime", "type": "bytes" }
- ],
- "type": "error",
- "name": "CrimeFound"
- },
- { "inputs": [], "type": "error", "name": "InvalidInitialization" },
- {
- "inputs": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" },
- { "internalType": "bytes", "name": "reason", "type": "bytes" }
- ],
- "type": "error",
- "name": "InvalidSimulationResult"
- },
- { "inputs": [], "type": "error", "name": "NotInitializing" },
- { "inputs": [], "type": "error", "name": "OnlyOffChain" },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "type": "error",
- "name": "OwnableInvalidOwner"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "account", "type": "address" }
- ],
- "type": "error",
- "name": "OwnableUnauthorizedAccount"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "max", "type": "uint256" },
- { "internalType": "uint256", "name": "actual", "type": "uint256" }
- ],
- "type": "error",
- "name": "PacketOversize"
- },
- { "inputs": [], "type": "error", "name": "PacketUnsorted" },
- {
- "inputs": [
- { "internalType": "bytes", "name": "reason", "type": "bytes" }
- ],
- "type": "error",
- "name": "SimulationFailed"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" }
- ],
- "type": "error",
- "name": "SimulationResultNotFound"
- },
- {
- "inputs": [
- {
- "internalType": "uint64",
- "name": "version",
- "type": "uint64",
- "indexed": false
- }
- ],
- "type": "event",
- "name": "Initialized",
- "anonymous": false
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "previousOwner",
- "type": "address",
- "indexed": true
- },
- {
- "internalType": "address",
- "name": "newOwner",
- "type": "address",
- "indexed": true
- }
- ],
- "type": "event",
- "name": "OwnershipTransferred",
- "anonymous": false
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "buildSimulationResult",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }]
- },
- {
- "inputs": [
- {
- "internalType": "bytes[]",
- "name": "_packets",
- "type": "bytes[]"
- },
- {
- "internalType": "uint256[]",
- "name": "_packetMsgValues",
- "type": "uint256[]"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "getConfig",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "getPreCrimePeers",
- "outputs": [
- {
- "internalType": "struct PreCrimePeer[]",
- "name": "",
- "type": "tuple[]",
- "components": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" },
- {
- "internalType": "bytes32",
- "name": "preCrime",
- "type": "bytes32"
- },
- { "internalType": "bytes32", "name": "oApp", "type": "bytes32" }
- ]
- }
- ]
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_delegate",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "intialize"
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "maxBatchSize",
- "outputs": [
- { "internalType": "uint64", "name": "", "type": "uint64" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "oApp",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "owner",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [
- {
- "internalType": "bytes[]",
- "name": "_packets",
- "type": "bytes[]"
- },
- {
- "internalType": "uint256[]",
- "name": "_packetMsgValues",
- "type": "uint256[]"
- },
- {
- "internalType": "bytes[]",
- "name": "_simulations",
- "type": "bytes[]"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "preCrime"
- },
- {
- "inputs": [],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "renounceOwnership"
- },
- {
- "inputs": [
- {
- "internalType": "uint64",
- "name": "_maxBatchSize",
- "type": "uint64"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setMaxBatchSize"
- },
- {
- "inputs": [
- {
- "internalType": "struct PreCrimePeer[]",
- "name": "_preCrimePeers",
- "type": "tuple[]",
- "components": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" },
- {
- "internalType": "bytes32",
- "name": "preCrime",
- "type": "bytes32"
- },
- { "internalType": "bytes32", "name": "oApp", "type": "bytes32" }
- ]
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setPreCrimePeers"
- },
- {
- "inputs": [
- {
- "internalType": "bytes[]",
- "name": "_packets",
- "type": "bytes[]"
- },
- {
- "internalType": "uint256[]",
- "name": "_packetMsgValues",
- "type": "uint256[]"
- }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "simulate",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "simulator",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [
- { "internalType": "address", "name": "newOwner", "type": "address" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "transferOwnership"
- },
- {
- "inputs": [],
- "stateMutability": "pure",
- "type": "function",
- "name": "version",
- "outputs": [
- { "internalType": "uint64", "name": "major", "type": "uint64" },
- { "internalType": "uint8", "name": "minor", "type": "uint8" }
- ]
- }
- ],
- "devdoc": {
- "kind": "dev",
- "methods": {
- "owner()": { "details": "Returns the address of the current owner." },
- "renounceOwnership()": {
- "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
- },
- "transferOwnership(address)": {
- "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
- }
- },
- "version": 1
- },
- "userdoc": { "kind": "user", "methods": {}, "version": 1 }
- },
- "settings": {
- "remappings": [
- "@layerzerolabs/=node_modules/@layerzerolabs/",
- "@openzeppelin/=node_modules/@openzeppelin/",
- "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/",
- "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/",
- "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"
- ],
- "optimizer": { "enabled": true, "runs": 200 },
- "metadata": { "bytecodeHash": "ipfs" },
- "compilationTarget": {
- "contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol": "OmniCounterPreCrimeUpgradeable"
- },
- "evmVersion": "paris",
- "libraries": {}
- },
- "sources": {
- "contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
- "urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppReceiverUpgradeable.sol": {
- "keccak256": "0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa",
- "urls": [
- "bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96",
- "dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppSenderUpgradeable.sol": {
- "keccak256": "0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2",
- "urls": [
- "bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07",
- "dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppUpgradeable.sol": {
- "keccak256": "0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969",
- "urls": [
- "bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf",
- "dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy"
- ],
- "license": "MIT"
- },
- "contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol": {
- "keccak256": "0xabc8a0b4bb97506be844e40bfc937f482cbb4dbcf7e703d76694f1104f8543c7",
- "urls": [
- "bzz-raw://1a454809402646afb94c602d745eb6d1d380f89209c8b15022168c58fca05dcd",
- "dweb:/ipfs/QmRo4z139UFbNVioB19jfboxK28onXZid3ZV1sPQYz9RF3"
- ],
- "license": "MIT"
- },
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": {
- "keccak256": "0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286",
- "urls": [
- "bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d",
- "dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG"
- ],
- "license": "MIT"
- },
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
- "keccak256": "0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54",
- "urls": [
- "bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990",
- "dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7"
- ],
- "license": "MIT"
- },
- "contracts/precrime/PreCrimeUpgradeable.sol": {
- "keccak256": "0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6",
- "urls": [
- "bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768",
- "dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": {
- "keccak256": "0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35",
- "urls": [
- "bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141",
- "dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": {
- "keccak256": "0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49",
- "urls": [
- "bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf",
- "dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": {
- "keccak256": "0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3",
- "urls": [
- "bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083",
- "dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": {
- "keccak256": "0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0",
- "urls": [
- "bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933",
- "dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": {
- "keccak256": "0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c",
- "urls": [
- "bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0",
- "dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": {
- "keccak256": "0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc",
- "urls": [
- "bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b",
- "dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": {
- "keccak256": "0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972",
- "urls": [
- "bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927",
- "dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": {
- "keccak256": "0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901",
- "urls": [
- "bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d",
- "dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": {
- "keccak256": "0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e",
- "urls": [
- "bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6",
- "dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": {
- "keccak256": "0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625",
- "urls": [
- "bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97",
- "dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": {
- "keccak256": "0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb",
- "urls": [
- "bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1",
- "dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": {
- "keccak256": "0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875",
- "urls": [
- "bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d",
- "dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": {
- "keccak256": "0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9",
- "urls": [
- "bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f",
- "dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": {
- "keccak256": "0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28",
- "urls": [
- "bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2",
- "dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": {
- "keccak256": "0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680",
- "urls": [
- "bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09",
- "dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": {
- "keccak256": "0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58",
- "urls": [
- "bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd",
- "dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": {
- "keccak256": "0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d",
- "urls": [
- "bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2",
- "dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol": {
- "keccak256": "0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378",
- "urls": [
- "bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f",
- "dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": {
- "keccak256": "0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2",
- "urls": [
- "bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a",
- "dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": {
- "keccak256": "0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84",
- "urls": [
- "bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e",
- "dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": {
- "keccak256": "0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6",
- "urls": [
- "bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc",
- "dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": {
- "keccak256": "0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a",
- "urls": [
- "bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535",
- "dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq"
- ],
- "license": "Unlicense"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
- "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
- "urls": [
- "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
- "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
- "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
- "urls": [
- "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
- "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
- "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
- "urls": [
- "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
- "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
- "keccak256": "0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70",
- "urls": [
- "bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c",
- "dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
- "keccak256": "0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff",
- "urls": [
- "bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d",
- "dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
- "keccak256": "0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386",
- "urls": [
- "bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0",
- "dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/Address.sol": {
- "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721",
- "urls": [
- "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245",
- "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
- "keccak256": "0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b",
- "urls": [
- "bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df",
- "dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
- "keccak256": "0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe",
- "urls": [
- "bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c",
- "dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"
- ],
- "license": "MIT"
- }
- },
- "version": 1
- },
- "id": 4
-}
diff --git a/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/MsgCodec.json b/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/MsgCodec.json
deleted file mode 100644
index 72e28b5f3..000000000
--- a/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/MsgCodec.json
+++ /dev/null
@@ -1,340 +0,0 @@
-{
- "abi": [],
- "bytecode": {
- "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b589784f82c817585ff131c317a36028d3e59431d47edfb686088f03b7de2f9664736f6c63430008160033",
- "sourceMap": "596:1117:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;596:1117:5;;;;;;;;;;;;;;;;;",
- "linkReferences": {}
- },
- "deployedBytecode": {
- "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b589784f82c817585ff131c317a36028d3e59431d47edfb686088f03b7de2f9664736f6c63430008160033",
- "sourceMap": "596:1117:5:-:0;;;;;;;;",
- "linkReferences": {}
- },
- "methodIdentifiers": {},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/examples/OmniCounterUpgradeable.sol\":\"MsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96\",\"dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07\",\"dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w\"]},\"contracts/oapp/OAppUpgradeable.sol\":{\"keccak256\":\"0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf\",\"dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy\"]},\"contracts/oapp/examples/OmniCounterUpgradeable.sol\":{\"keccak256\":\"0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d\",\"dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG\"]},\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":{\"keccak256\":\"0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990\",\"dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol\":{\"keccak256\":\"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141\",\"dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol\":{\"keccak256\":\"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d\",\"dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol\":{\"keccak256\":\"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f\",\"dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol\":{\"keccak256\":\"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2\",\"dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol\":{\"keccak256\":\"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f\",\"dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}",
- "metadata": {
- "compiler": { "version": "0.8.22+commit.4fc1097e" },
- "language": "Solidity",
- "output": {
- "abi": [],
- "devdoc": { "kind": "dev", "methods": {}, "version": 1 },
- "userdoc": { "kind": "user", "methods": {}, "version": 1 }
- },
- "settings": {
- "remappings": [
- "@layerzerolabs/=node_modules/@layerzerolabs/",
- "@openzeppelin/=node_modules/@openzeppelin/",
- "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/",
- "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/",
- "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"
- ],
- "optimizer": { "enabled": true, "runs": 200 },
- "metadata": { "bytecodeHash": "ipfs" },
- "compilationTarget": {
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": "MsgCodec"
- },
- "evmVersion": "paris",
- "libraries": {}
- },
- "sources": {
- "contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
- "urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppReceiverUpgradeable.sol": {
- "keccak256": "0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa",
- "urls": [
- "bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96",
- "dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppSenderUpgradeable.sol": {
- "keccak256": "0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2",
- "urls": [
- "bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07",
- "dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppUpgradeable.sol": {
- "keccak256": "0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969",
- "urls": [
- "bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf",
- "dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy"
- ],
- "license": "MIT"
- },
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": {
- "keccak256": "0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286",
- "urls": [
- "bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d",
- "dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG"
- ],
- "license": "MIT"
- },
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
- "keccak256": "0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54",
- "urls": [
- "bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990",
- "dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": {
- "keccak256": "0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35",
- "urls": [
- "bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141",
- "dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": {
- "keccak256": "0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49",
- "urls": [
- "bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf",
- "dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": {
- "keccak256": "0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3",
- "urls": [
- "bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083",
- "dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": {
- "keccak256": "0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0",
- "urls": [
- "bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933",
- "dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": {
- "keccak256": "0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c",
- "urls": [
- "bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0",
- "dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": {
- "keccak256": "0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc",
- "urls": [
- "bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b",
- "dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": {
- "keccak256": "0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972",
- "urls": [
- "bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927",
- "dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": {
- "keccak256": "0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901",
- "urls": [
- "bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d",
- "dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": {
- "keccak256": "0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e",
- "urls": [
- "bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6",
- "dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": {
- "keccak256": "0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625",
- "urls": [
- "bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97",
- "dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": {
- "keccak256": "0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb",
- "urls": [
- "bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1",
- "dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": {
- "keccak256": "0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875",
- "urls": [
- "bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d",
- "dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": {
- "keccak256": "0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9",
- "urls": [
- "bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f",
- "dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": {
- "keccak256": "0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28",
- "urls": [
- "bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2",
- "dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": {
- "keccak256": "0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680",
- "urls": [
- "bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09",
- "dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": {
- "keccak256": "0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58",
- "urls": [
- "bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd",
- "dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": {
- "keccak256": "0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d",
- "urls": [
- "bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2",
- "dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol": {
- "keccak256": "0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378",
- "urls": [
- "bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f",
- "dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": {
- "keccak256": "0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2",
- "urls": [
- "bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a",
- "dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": {
- "keccak256": "0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84",
- "urls": [
- "bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e",
- "dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": {
- "keccak256": "0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6",
- "urls": [
- "bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc",
- "dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": {
- "keccak256": "0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a",
- "urls": [
- "bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535",
- "dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq"
- ],
- "license": "Unlicense"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
- "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
- "urls": [
- "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
- "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
- "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
- "urls": [
- "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
- "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
- "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
- "urls": [
- "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
- "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
- "keccak256": "0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70",
- "urls": [
- "bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c",
- "dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
- "keccak256": "0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff",
- "urls": [
- "bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d",
- "dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
- "keccak256": "0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386",
- "urls": [
- "bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0",
- "dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/Address.sol": {
- "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721",
- "urls": [
- "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245",
- "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
- "keccak256": "0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b",
- "urls": [
- "bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df",
- "dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
- "keccak256": "0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe",
- "urls": [
- "bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c",
- "dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"
- ],
- "license": "MIT"
- }
- },
- "version": 1
- },
- "id": 5
-}
diff --git a/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/OmniCounterUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/OmniCounterUpgradeable.json
deleted file mode 100644
index 457daf0e3..000000000
--- a/packages/oapp-evm-upgradeable/artifacts/OmniCounterUpgradeable.sol/OmniCounterUpgradeable.json
+++ /dev/null
@@ -1,1752 +0,0 @@
-{
- "abi": [
- {
- "type": "constructor",
- "inputs": [
- { "name": "_endpoint", "type": "address", "internalType": "address" }
- ],
- "stateMutability": "nonpayable"
- },
- { "type": "fallback", "stateMutability": "payable" },
- { "type": "receive", "stateMutability": "payable" },
- {
- "type": "function",
- "name": "admin",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "allowInitializePath",
- "inputs": [
- {
- "name": "origin",
- "type": "tuple",
- "internalType": "struct Origin",
- "components": [
- { "name": "srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "sender", "type": "bytes32", "internalType": "bytes32" },
- { "name": "nonce", "type": "uint64", "internalType": "uint64" }
- ]
- }
- ],
- "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "batchIncrement",
- "inputs": [
- { "name": "_eids", "type": "uint32[]", "internalType": "uint32[]" },
- { "name": "_types", "type": "uint8[]", "internalType": "uint8[]" },
- { "name": "_options", "type": "bytes[]", "internalType": "bytes[]" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "brokenIncrement",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" },
- { "name": "_type", "type": "uint8", "internalType": "uint8" },
- { "name": "_options", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "composedCount",
- "inputs": [],
- "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "count",
- "inputs": [],
- "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "eid",
- "inputs": [],
- "outputs": [{ "name": "", "type": "uint32", "internalType": "uint32" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "endpoint",
- "inputs": [],
- "outputs": [
- {
- "name": "",
- "type": "address",
- "internalType": "contract ILayerZeroEndpointV2"
- }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "inboundCount",
- "inputs": [
- { "name": "srcEid", "type": "uint32", "internalType": "uint32" }
- ],
- "outputs": [
- { "name": "count", "type": "uint256", "internalType": "uint256" }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "increment",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" },
- { "name": "_type", "type": "uint8", "internalType": "uint8" },
- { "name": "_options", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "initialize",
- "inputs": [
- { "name": "_delegate", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "isComposeMsgSender",
- "inputs": [
- {
- "name": "",
- "type": "tuple",
- "internalType": "struct Origin",
- "components": [
- { "name": "srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "sender", "type": "bytes32", "internalType": "bytes32" },
- { "name": "nonce", "type": "uint64", "internalType": "uint64" }
- ]
- },
- { "name": "", "type": "bytes", "internalType": "bytes" },
- { "name": "_sender", "type": "address", "internalType": "address" }
- ],
- "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "isPeer",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" },
- { "name": "_peer", "type": "bytes32", "internalType": "bytes32" }
- ],
- "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "lzCompose",
- "inputs": [
- { "name": "_oApp", "type": "address", "internalType": "address" },
- { "name": "", "type": "bytes32", "internalType": "bytes32" },
- { "name": "_message", "type": "bytes", "internalType": "bytes" },
- { "name": "", "type": "address", "internalType": "address" },
- { "name": "", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "lzReceive",
- "inputs": [
- {
- "name": "_origin",
- "type": "tuple",
- "internalType": "struct Origin",
- "components": [
- { "name": "srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "sender", "type": "bytes32", "internalType": "bytes32" },
- { "name": "nonce", "type": "uint64", "internalType": "uint64" }
- ]
- },
- { "name": "_guid", "type": "bytes32", "internalType": "bytes32" },
- { "name": "_message", "type": "bytes", "internalType": "bytes" },
- { "name": "_executor", "type": "address", "internalType": "address" },
- { "name": "_extraData", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "lzReceiveAndRevert",
- "inputs": [
- {
- "name": "_packets",
- "type": "tuple[]",
- "internalType": "struct InboundPacket[]",
- "components": [
- {
- "name": "origin",
- "type": "tuple",
- "internalType": "struct Origin",
- "components": [
- {
- "name": "srcEid",
- "type": "uint32",
- "internalType": "uint32"
- },
- {
- "name": "sender",
- "type": "bytes32",
- "internalType": "bytes32"
- },
- { "name": "nonce", "type": "uint64", "internalType": "uint64" }
- ]
- },
- { "name": "dstEid", "type": "uint32", "internalType": "uint32" },
- {
- "name": "receiver",
- "type": "address",
- "internalType": "address"
- },
- { "name": "guid", "type": "bytes32", "internalType": "bytes32" },
- { "name": "value", "type": "uint256", "internalType": "uint256" },
- {
- "name": "executor",
- "type": "address",
- "internalType": "address"
- },
- { "name": "message", "type": "bytes", "internalType": "bytes" },
- { "name": "extraData", "type": "bytes", "internalType": "bytes" }
- ]
- }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "lzReceiveSimulate",
- "inputs": [
- {
- "name": "_origin",
- "type": "tuple",
- "internalType": "struct Origin",
- "components": [
- { "name": "srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "sender", "type": "bytes32", "internalType": "bytes32" },
- { "name": "nonce", "type": "uint64", "internalType": "uint64" }
- ]
- },
- { "name": "_guid", "type": "bytes32", "internalType": "bytes32" },
- { "name": "_message", "type": "bytes", "internalType": "bytes" },
- { "name": "_executor", "type": "address", "internalType": "address" },
- { "name": "_extraData", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [],
- "stateMutability": "payable"
- },
- {
- "type": "function",
- "name": "nextNonce",
- "inputs": [
- { "name": "_srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "_sender", "type": "bytes32", "internalType": "bytes32" }
- ],
- "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "oApp",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "oAppVersion",
- "inputs": [],
- "outputs": [
- { "name": "senderVersion", "type": "uint64", "internalType": "uint64" },
- {
- "name": "receiverVersion",
- "type": "uint64",
- "internalType": "uint64"
- }
- ],
- "stateMutability": "pure"
- },
- {
- "type": "function",
- "name": "outboundCount",
- "inputs": [
- { "name": "dstEid", "type": "uint32", "internalType": "uint32" }
- ],
- "outputs": [
- { "name": "count", "type": "uint256", "internalType": "uint256" }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "owner",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "peers",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" }
- ],
- "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "preCrime",
- "inputs": [],
- "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "quote",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" },
- { "name": "_type", "type": "uint8", "internalType": "uint8" },
- { "name": "_options", "type": "bytes", "internalType": "bytes" }
- ],
- "outputs": [
- { "name": "nativeFee", "type": "uint256", "internalType": "uint256" },
- { "name": "lzTokenFee", "type": "uint256", "internalType": "uint256" }
- ],
- "stateMutability": "view"
- },
- {
- "type": "function",
- "name": "renounceOwnership",
- "inputs": [],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setAdmin",
- "inputs": [
- { "name": "_admin", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setDelegate",
- "inputs": [
- { "name": "_delegate", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setOrderedNonce",
- "inputs": [
- { "name": "_orderedNonce", "type": "bool", "internalType": "bool" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setPeer",
- "inputs": [
- { "name": "_eid", "type": "uint32", "internalType": "uint32" },
- { "name": "_peer", "type": "bytes32", "internalType": "bytes32" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "setPreCrime",
- "inputs": [
- { "name": "_preCrime", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "skipInboundNonce",
- "inputs": [
- { "name": "_srcEid", "type": "uint32", "internalType": "uint32" },
- { "name": "_sender", "type": "bytes32", "internalType": "bytes32" },
- { "name": "_nonce", "type": "uint64", "internalType": "uint64" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "transferOwnership",
- "inputs": [
- { "name": "newOwner", "type": "address", "internalType": "address" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "function",
- "name": "withdraw",
- "inputs": [
- { "name": "_to", "type": "address", "internalType": "address payable" },
- { "name": "_amount", "type": "uint256", "internalType": "uint256" }
- ],
- "outputs": [],
- "stateMutability": "nonpayable"
- },
- {
- "type": "event",
- "name": "Initialized",
- "inputs": [
- {
- "name": "version",
- "type": "uint64",
- "indexed": false,
- "internalType": "uint64"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "OwnershipTransferred",
- "inputs": [
- {
- "name": "previousOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- },
- {
- "name": "newOwner",
- "type": "address",
- "indexed": true,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "PeerSet",
- "inputs": [
- {
- "name": "eid",
- "type": "uint32",
- "indexed": false,
- "internalType": "uint32"
- },
- {
- "name": "peer",
- "type": "bytes32",
- "indexed": false,
- "internalType": "bytes32"
- }
- ],
- "anonymous": false
- },
- {
- "type": "event",
- "name": "PreCrimeSet",
- "inputs": [
- {
- "name": "preCrimeAddress",
- "type": "address",
- "indexed": false,
- "internalType": "address"
- }
- ],
- "anonymous": false
- },
- {
- "type": "error",
- "name": "AddressEmptyCode",
- "inputs": [
- { "name": "target", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "AddressInsufficientBalance",
- "inputs": [
- { "name": "account", "type": "address", "internalType": "address" }
- ]
- },
- { "type": "error", "name": "FailedInnerCall", "inputs": [] },
- { "type": "error", "name": "InvalidDelegate", "inputs": [] },
- { "type": "error", "name": "InvalidEndpointCall", "inputs": [] },
- { "type": "error", "name": "InvalidInitialization", "inputs": [] },
- {
- "type": "error",
- "name": "InvalidOptionType",
- "inputs": [
- { "name": "optionType", "type": "uint16", "internalType": "uint16" }
- ]
- },
- { "type": "error", "name": "LzTokenUnavailable", "inputs": [] },
- {
- "type": "error",
- "name": "NoPeer",
- "inputs": [{ "name": "eid", "type": "uint32", "internalType": "uint32" }]
- },
- {
- "type": "error",
- "name": "NotEnoughNative",
- "inputs": [
- { "name": "msgValue", "type": "uint256", "internalType": "uint256" }
- ]
- },
- { "type": "error", "name": "NotInitializing", "inputs": [] },
- {
- "type": "error",
- "name": "OnlyEndpoint",
- "inputs": [
- { "name": "addr", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "OnlyPeer",
- "inputs": [
- { "name": "eid", "type": "uint32", "internalType": "uint32" },
- { "name": "sender", "type": "bytes32", "internalType": "bytes32" }
- ]
- },
- { "type": "error", "name": "OnlySelf", "inputs": [] },
- {
- "type": "error",
- "name": "OwnableInvalidOwner",
- "inputs": [
- { "name": "owner", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "OwnableUnauthorizedAccount",
- "inputs": [
- { "name": "account", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "SafeCastOverflowedUintDowncast",
- "inputs": [
- { "name": "bits", "type": "uint8", "internalType": "uint8" },
- { "name": "value", "type": "uint256", "internalType": "uint256" }
- ]
- },
- {
- "type": "error",
- "name": "SafeERC20FailedOperation",
- "inputs": [
- { "name": "token", "type": "address", "internalType": "address" }
- ]
- },
- {
- "type": "error",
- "name": "SimulationResult",
- "inputs": [{ "name": "result", "type": "bytes", "internalType": "bytes" }]
- }
- ],
- "bytecode": {
- "object": "0x60a06040523480156200001157600080fd5b5060405162002d6938038062002d69833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612c8f620000da600039600081816103830152818161066e01528181610a1801528181610e9001528181610fed015281816110bf015281816115e1015281816117e001528181611a3701528181611c5d0152611d160152612c8f6000f3fe6080604052600436106101e55760003560e01c806382413eac11610101578063ca5eb5e11161009a578063d42438851161006c578063d4243885146105cc578063f2fde38b146105ec578063f3fef3a31461060c578063f851a4401461062c578063ff7bd03d1461064c57005b8063ca5eb5e114610551578063d045a0dc14610571578063d0a1026014610584578063d22446ce1461059757005b8063bb0b6a53116100d3578063bb0b6a53146104cb578063bd815db01461050b578063c4d66de81461051e578063c95c55be1461053e57005b806382413eac1461045f5780638da5cb5b1461048e578063b731ea0a146104a3578063b7abbb5d146104b857005b806356a472891161017e578063622f17f611610150578063622f17f6146103a5578063704b6c02146103d25780637112f86f146103f2578063715018a6146104125780637d25a05e1461042757005b806356a47289146102f45780635a0dfe4d146103215780635b849af6146103515780635e280f111461037157005b80633400288b116101b75780633400288b14610261578063416ecebf1461028157806352ae2879146102ba578063542e7b56146102e157005b806306661abd146101ee57806313137d651461021757806317442b701461022a578063257f4e051461024b57005b366101ec57005b005b3480156101fa57600080fd5b5061020460005481565b6040519081526020015b60405180910390f35b6101ec610225366004612197565b61066c565b34801561023657600080fd5b5060408051600180825260208201520161020e565b34801561025757600080fd5b5061020460015481565b34801561026d57600080fd5b506101ec61027c366004612248565b61072c565b34801561028d57600080fd5b506002546102a590600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161020e565b3480156102c657600080fd5b50305b6040516001600160a01b03909116815260200161020e565b6101ec6102ef3660046122b8565b610799565b34801561030057600080fd5b5061020461030f366004612351565b60056020526000908152604090205481565b34801561032d57600080fd5b5061034161033c366004612248565b610946565b604051901515815260200161020e565b34801561035d57600080fd5b506101ec61036c36600461237c565b610972565b34801561037d57600080fd5b506102c97f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b157600080fd5b506102046103c0366004612351565b60066020526000908152604090205481565b3480156103de57600080fd5b506101ec6103ed366004612399565b61098d565b3480156103fe57600080fd5b506101ec61040d3660046123cb565b6109d9565b34801561041e57600080fd5b506101ec610ae9565b34801561043357600080fd5b50610447610442366004612248565b610afd565b6040516001600160401b03909116815260200161020e565b34801561046b57600080fd5b5061034161047a36600461240d565b6001600160a01b0381163014949350505050565b34801561049a57600080fd5b506102c9610b4f565b3480156104af57600080fd5b506102c9610b84565b6101ec6104c6366004612489565b610bad565b3480156104d757600080fd5b506102046104e6366004612351565b63ffffffff166000908152600080516020612c3a833981519152602052604090205490565b6101ec6105193660046124eb565b610c30565b34801561052a57600080fd5b506101ec610539366004612399565b610da3565b6101ec61054c366004612489565b610f75565b34801561055d57600080fd5b506101ec61056c366004612399565b610fc6565b6101ec61057f366004612197565b611045565b6101ec61059236600461252c565b611074565b3480156105a357600080fd5b506105b76105b2366004612489565b611253565b6040805192835260208301919091520161020e565b3480156105d857600080fd5b506101ec6105e7366004612399565b6112ca565b3480156105f857600080fd5b506101ec610607366004612399565b611345565b34801561061857600080fd5b506101ec6106273660046125ac565b611383565b34801561063857600080fd5b506002546102c9906001600160a01b031681565b34801561065857600080fd5b506103416106673660046125ca565b611450565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146106bc576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b602087018035906106d6906106d1908a612351565b61146e565b14610714576106e86020880188612351565b60405163309afaf360e21b815263ffffffff9091166004820152602088013560248201526044016106b3565b610723878787878787876114c0565b50505050505050565b610734611732565b63ffffffff82166000818152600080516020612c3a833981519152602081815260409283902085905582519384528301849052815190927f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b92908290030190a1505050565b84811480156107a757508483145b6107f35760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106b3565b6107fb6120db565b3460005b8781101561093b57600061081460018a6125fc565b82146108205730610822565b335b905060008a8a848181106108385761083861260f565b905060200201602081019061084d9190612351565b905060008989858181106108635761086361260f565b90506020020160208101906108789190612625565b905061090f8261089a83600260149054906101000a900463ffffffff16611764565b8a8a888181106108ac576108ac61260f565b90506020028101906108be9190612640565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d8152602081019190915292508991506117ad9050565b955061091a826118b8565b60408601515161092a90866125fc565b945050600190920191506107ff9050565b505050505050505050565b63ffffffff82166000908152600080516020612c3a833981519152602052604090205481145b92915050565b61097a611732565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146109b75760405162461bcd60e51b81526004016106b390612686565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6109e1611732565b604051636b85c48160e11b815230600482015263ffffffff84166024820152604481018390526001600160401b03821660648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d70b890290608401600060405180830381600087803b158015610a6457600080fd5b505af1158015610a78573d6000803e3d6000fd5b505060045460ff16159150610ae490505763ffffffff83166000908152600360209081526040808320858452909152812080546001600160401b031691610abe836126aa565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b505050565b610af1611732565b610afb60006118e1565b565b60045460009060ff1615610b475763ffffffff83166000908152600360209081526040808320858452909152902054610b40906001600160401b031660016126d0565b905061096c565b50600061096c565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6000807fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b600610b74565b610c2084610bcd85600260149054906101000a900463ffffffff16611764565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051808201909152348152602081019190915292503391506117ad9050565b50610c2a846118b8565b50505050565b60005b81811015610d225736838383818110610c4e57610c4e61260f565b9050602002810190610c6091906126f7565b9050610c7c610c726020830183612351565b6020830135610946565b610c865750610d1a565b3063d045a0dc60c08301358360a0810135610ca5610100830183612640565b610cb6610100890160e08a01612399565b610cc46101208a018a612640565b6040518963ffffffff1660e01b8152600401610ce69796959493929190612741565b6000604051808303818588803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b5050505050505b600101610c33565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d899190810190612803565b604051638351eea760e01b81526004016106b391906128d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610de85750825b90506000826001600160401b03166001148015610e045750303b155b905081158015610e12575080155b15610e305760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e5a57845460ff60401b1916600160401b1785555b610e6386611952565b610e6c86611963565b600280546001600160a01b031916331790556040805163416ecebf60e01b815290517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163416ecebf9160048083019260209291908290030181865afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0791906128e3565b600260146101000a81548163ffffffff021916908363ffffffff1602179055508315610f6d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6002546001600160a01b03163314610f9f5760405162461bcd60e51b81526004016106b390612686565b610fbf84610bcd85600260149054906101000a900463ffffffff16611764565b5050505050565b610fce611732565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561103157600080fd5b505af1158015610fbf573d6000803e3d6000fd5b3330146110655760405163029a949d60e31b815260040160405180910390fd5b61072387878787878787610714565b6001600160a01b03871630146110b45760405162461bcd60e51b81526020600482015260056024820152640216f4170760dc1b60448201526064016106b3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111185760405162461bcd60e51b815260206004820152600960248201526808595b991c1bda5b9d60ba1b60448201526064016106b3565b60006111248686611974565b905060011960ff82160161114f5760018060008282546111449190612900565b909155506112499050565b60031960ff82160161120a57600180600082825461116d9190612900565b909155506000905061117f8787611996565b905061118a816118b8565b60006111c262030d4060006111bb60408051600360f01b602082015281516002818303018152602290910190915290565b91906119b9565b9050611202826111e56001600260149054906101000a900463ffffffff16611764565b8360405180604001604052803481526020016000815250306117ad565b505050611249565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d657373616765207479706560601b60448201526064016106b3565b5050505050505050565b60008060006112b48761127888600260149054906101000a900463ffffffff16611764565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611a21915050565b8051602090910151909890975095505050505050565b6112d2611732565b7fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b60080546001600160a01b0383166001600160a01b03199091168117825560408051918252517fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609181900360200190a15050565b61134d611732565b6001600160a01b03811661137757604051631e4fbdf760e01b8152600060048201526024016106b3565b611380816118e1565b50565b6002546001600160a01b031633146113ad5760405162461bcd60e51b81526004016106b390612686565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146113fa576040519150601f19603f3d011682016040523d82523d6000602084013e6113ff565b606091505b5050905080610ae45760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106b3565b600060208201803590611467906104e69085612351565b1492915050565b63ffffffff81166000908152600080516020612c3a83398151915260208190526040822054806114b95760405163f6ff4fb760e01b815263ffffffff851660048201526024016106b3565b9392505050565b6114ea6114d06020890189612351565b60208901356114e560608b0160408c01612913565b611b02565b60006114f68686611974565b905060001960ff82160161158b5760008054908061151383612930565b91905055506115228686611bf7565b3410156115715760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106b3565b61158661158160208a018a612351565b611c0f565b611249565b60ff8116600214806115a0575060ff81166004145b15611656576000805490806115b483612930565b909155506115ca905061158160208a018a612351565b604051633e5ac80960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061161f9030908b906000908c908c90600401612949565b600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b50505050611249565b60021960ff82160161120a5760008054908061167183612930565b90915550611687905061158160208a018a612351565b61169c61169760208a018a612351565b6118b8565b60006116cd62030d40600a6111bb60408051600360f01b602082015281516002818303018152602290910190915290565b905061172b6116df60208b018b612351565b60025460408051600160f81b6020820152600160a01b90920460e01b6001600160e01b0319166021830152600a60258084019190915281518084039091018152604590920190526111e5565b5050611249565b3361173b610b4f565b6001600160a01b031614610afb5760405163118cdaa760e01b81523360048201526024016106b3565b6040516001600160f81b031960f884901b1660208201526001600160e01b031960e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b6117b56120db565b60006117c48460000151611c30565b6020850151909150156117de576117de8460200151611c59565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff16815260200161182e8c61146e565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b815260040161186a92919061297b565b60806040518083038185885af1158015611888573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ad9190612a42565b979650505050505050565b63ffffffff811660009081526006602052604081208054916118d983612930565b919050555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61195a611d3f565b61138081611d88565b61196b611d3f565b61138081611d90565b60006119836001828486612aa9565b61198c91612ad3565b60f81c9392505050565b60006119a6600560018486612aa9565b6119af91612b03565b60e01c9392505050565b60608360036119c9826000611dbf565b61ffff16146119fd576119dd816000611dbf565b604051633a51740d60e01b815261ffff90911660048201526024016106b3565b6000611a098585611e1c565b9050611a1786600183611e8c565b9695505050505050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611a848961146e565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611ab992919061297b565b6040805180830381865afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190612b31565b95945050505050565b63ffffffff831660009081526003602090815260408083208584529091529020546004546001600160401b039091169060ff1615611b9b57611b458160016126d0565b6001600160401b0316826001600160401b031614611b9b5760405162461bcd60e51b81526020600482015260136024820152724f4170703a20696e76616c6964206e6f6e636560681b60448201526064016106b3565b806001600160401b0316826001600160401b03161115610c2a5763ffffffff84166000908152600360209081526040808320868452909152902080546001600160401b03841667ffffffffffffffff1990911617905550505050565b6000611c068260058186612aa9565b6114b991612b4d565b63ffffffff811660009081526005602052604081208054916118d983612930565b600081341015611c55576040516304fb820960e51b81523460048201526024016106b3565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdd9190612b6b565b90506001600160a01b038116611d06576040516329b99a9560e11b815260040160405180910390fd5b611d3b6001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085611ef7565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610afb57604051631afcd79f60e31b815260040160405180910390fd5b61134d611d3f565b611d98611d3f565b6001600160a01b038116610fce57604051632d618d8160e21b815260040160405180910390fd5b6000611dcc826002612900565b83511015611e135760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b60448201526064016106b3565b50016002015190565b60606fffffffffffffffffffffffffffffffff821615611e6d57604080516001600160801b0319608086811b8216602084015285901b166030820152016040516020818303038152906040526114b9565b6040516001600160801b0319608085901b166020820152603001611796565b6060836003611e9c826000611dbf565b61ffff1614611eb0576119dd816000611dbf565b846001611ebd8551611f51565b611ec8906001612b88565b8686604051602001611ede959493929190612ba3565b6040516020818303038152906040529150509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c2a908590611f80565b600061ffff821115611c55576040516306dfcc6560e41b815260106004820152602481018390526044016106b3565b6000611f956001600160a01b03841683611fe3565b90508051600014158015611fba575080806020019051810190611fb89190612c0a565b155b15610ae457604051635274afe760e01b81526001600160a01b03841660048201526024016106b3565b60606114b98383600084600080856001600160a01b031684866040516120099190612c27565b60006040518083038185875af1925050503d8060008114612046576040519150601f19603f3d011682016040523d82523d6000602084013e61204b565b606091505b5091509150611a1786838360608261206b57612066826120b2565b6114b9565b815115801561208257506001600160a01b0384163b155b156120ab57604051639996b31560e01b81526001600160a01b03851660048201526024016106b3565b50806114b9565b8051156120c25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000801916815260200160006001600160401b0316815260200161211d604051806040016040528060008152602001600081525090565b905290565b60006060828403121561213457600080fd5b50919050565b60008083601f84011261214c57600080fd5b5081356001600160401b0381111561216357600080fd5b60208301915083602082850101111561217b57600080fd5b9250929050565b6001600160a01b038116811461138057600080fd5b600080600080600080600060e0888a0312156121b257600080fd5b6121bc8989612122565b96506060880135955060808801356001600160401b03808211156121df57600080fd5b6121eb8b838c0161213a565b909750955060a08a0135915061220082612182565b90935060c0890135908082111561221657600080fd5b506122238a828b0161213a565b989b979a50959850939692959293505050565b63ffffffff8116811461138057600080fd5b6000806040838503121561225b57600080fd5b823561226681612236565b946020939093013593505050565b60008083601f84011261228657600080fd5b5081356001600160401b0381111561229d57600080fd5b6020830191508360208260051b850101111561217b57600080fd5b600080600080600080606087890312156122d157600080fd5b86356001600160401b03808211156122e857600080fd5b6122f48a838b01612274565b9098509650602089013591508082111561230d57600080fd5b6123198a838b01612274565b9096509450604089013591508082111561233257600080fd5b5061233f89828a01612274565b979a9699509497509295939492505050565b60006020828403121561236357600080fd5b81356114b981612236565b801515811461138057600080fd5b60006020828403121561238e57600080fd5b81356114b98161236e565b6000602082840312156123ab57600080fd5b81356114b981612182565b6001600160401b038116811461138057600080fd5b6000806000606084860312156123e057600080fd5b83356123eb81612236565b9250602084013591506040840135612402816123b6565b809150509250925092565b60008060008060a0858703121561242357600080fd5b61242d8686612122565b935060608501356001600160401b0381111561244857600080fd5b6124548782880161213a565b909450925050608085013561246881612182565b939692955090935050565b803560ff8116811461248457600080fd5b919050565b6000806000806060858703121561249f57600080fd5b84356124aa81612236565b93506124b860208601612473565b925060408501356001600160401b038111156124d357600080fd5b6124df8782880161213a565b95989497509550505050565b600080602083850312156124fe57600080fd5b82356001600160401b0381111561251457600080fd5b61252085828601612274565b90969095509350505050565b600080600080600080600060a0888a03121561254757600080fd5b873561255281612182565b96506020880135955060408801356001600160401b038082111561257557600080fd5b6125818b838c0161213a565b909750955060608a0135915061259682612182565b9093506080890135908082111561221657600080fd5b600080604083850312156125bf57600080fd5b823561226681612182565b6000606082840312156125dc57600080fd5b6114b98383612122565b634e487b7160e01b600052601160045260246000fd5b8181038181111561096c5761096c6125e6565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561263757600080fd5b6114b982612473565b6000808335601e1984360301811261265757600080fd5b8301803591506001600160401b0382111561267157600080fd5b60200191503681900382131561217b57600080fd5b6020808252600a908201526937b7363c9030b236b4b760b11b604082015260600190565b60006001600160401b038083168181036126c6576126c66125e6565b6001019392505050565b6001600160401b038181168382160190808211156126f0576126f06125e6565b5092915050565b6000823561013e1983360301811261270e57600080fd5b9190910192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000883561274e81612236565b63ffffffff16825260208981013590830152604089013561276e816123b6565b6001600160401b03811660408401525087606083015260e0608083015261279960e083018789612718565b6001600160a01b03861660a084015282810360c08401526127bb818587612718565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156127fa5781810151838201526020016127e2565b50506000910152565b60006020828403121561281557600080fd5b81516001600160401b038082111561282c57600080fd5b818401915084601f83011261284057600080fd5b815181811115612852576128526127c9565b604051601f8201601f19908116603f0116810190838211818310171561287a5761287a6127c9565b8160405282815287602084870101111561289357600080fd5b6118ad8360208301602088016127df565b600081518084526128bc8160208601602086016127df565b601f01601f19169290920160200192915050565b6020815260006114b960208301846128a4565b6000602082840312156128f557600080fd5b81516114b981612236565b8082018082111561096c5761096c6125e6565b60006020828403121561292557600080fd5b81356114b9816123b6565b600060018201612942576129426125e6565b5060010190565b60018060a01b038616815284602082015261ffff841660408201526080606082015260006118ad608083018486612718565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526129b160e08401826128a4565b90506060850151603f198483030160a08501526129ce82826128a4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612a0657600080fd5b604051604081018181106001600160401b0382111715612a2857612a286127c9565b604052825181526020928301519281019290925250919050565b600060808284031215612a5457600080fd5b604051606081018181106001600160401b0382111715612a7657612a766127c9565b604052825181526020830151612a8b816123b6565b6020820152612a9d84604085016129f4565b60408201529392505050565b60008085851115612ab957600080fd5b83861115612ac657600080fd5b5050820193919092039150565b6001600160f81b03198135818116916001851015612afb5780818660010360031b1b83161692505b505092915050565b6001600160e01b03198135818116916004851015612afb5760049490940360031b84901b1690921692915050565b600060408284031215612b4357600080fd5b6114b983836129f4565b8035602083101561096c57600019602084900360031b1b1692915050565b600060208284031215612b7d57600080fd5b81516114b981612182565b61ffff8181168382160190808211156126f0576126f06125e6565b60008651612bb5818460208b016127df565b6001600160f81b031960f888811b82169285019283526001600160f01b031960f089901b16600184015286901b1660038201528351612bfb8160048401602088016127df565b01600401979650505050505050565b600060208284031215612c1c57600080fd5b81516114b98161236e565b6000825161270e8184602087016127df56fe72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900a264697066735822122063bb3767e08b96a1356b860946aa0e84cda903caab398e233dfdb62f71e126ae64736f6c63430008160033",
- "sourceMap": "1715:9343:5:-:0;;;2293:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1301:42:0;;;1715:9343:5;;14:290:42;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:42;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:42:o;:::-;1715:9343:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
- "linkReferences": {}
- },
- "deployedBytecode": {
- "object": "0x6080604052600436106101e55760003560e01c806382413eac11610101578063ca5eb5e11161009a578063d42438851161006c578063d4243885146105cc578063f2fde38b146105ec578063f3fef3a31461060c578063f851a4401461062c578063ff7bd03d1461064c57005b8063ca5eb5e114610551578063d045a0dc14610571578063d0a1026014610584578063d22446ce1461059757005b8063bb0b6a53116100d3578063bb0b6a53146104cb578063bd815db01461050b578063c4d66de81461051e578063c95c55be1461053e57005b806382413eac1461045f5780638da5cb5b1461048e578063b731ea0a146104a3578063b7abbb5d146104b857005b806356a472891161017e578063622f17f611610150578063622f17f6146103a5578063704b6c02146103d25780637112f86f146103f2578063715018a6146104125780637d25a05e1461042757005b806356a47289146102f45780635a0dfe4d146103215780635b849af6146103515780635e280f111461037157005b80633400288b116101b75780633400288b14610261578063416ecebf1461028157806352ae2879146102ba578063542e7b56146102e157005b806306661abd146101ee57806313137d651461021757806317442b701461022a578063257f4e051461024b57005b366101ec57005b005b3480156101fa57600080fd5b5061020460005481565b6040519081526020015b60405180910390f35b6101ec610225366004612197565b61066c565b34801561023657600080fd5b5060408051600180825260208201520161020e565b34801561025757600080fd5b5061020460015481565b34801561026d57600080fd5b506101ec61027c366004612248565b61072c565b34801561028d57600080fd5b506002546102a590600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161020e565b3480156102c657600080fd5b50305b6040516001600160a01b03909116815260200161020e565b6101ec6102ef3660046122b8565b610799565b34801561030057600080fd5b5061020461030f366004612351565b60056020526000908152604090205481565b34801561032d57600080fd5b5061034161033c366004612248565b610946565b604051901515815260200161020e565b34801561035d57600080fd5b506101ec61036c36600461237c565b610972565b34801561037d57600080fd5b506102c97f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b157600080fd5b506102046103c0366004612351565b60066020526000908152604090205481565b3480156103de57600080fd5b506101ec6103ed366004612399565b61098d565b3480156103fe57600080fd5b506101ec61040d3660046123cb565b6109d9565b34801561041e57600080fd5b506101ec610ae9565b34801561043357600080fd5b50610447610442366004612248565b610afd565b6040516001600160401b03909116815260200161020e565b34801561046b57600080fd5b5061034161047a36600461240d565b6001600160a01b0381163014949350505050565b34801561049a57600080fd5b506102c9610b4f565b3480156104af57600080fd5b506102c9610b84565b6101ec6104c6366004612489565b610bad565b3480156104d757600080fd5b506102046104e6366004612351565b63ffffffff166000908152600080516020612c3a833981519152602052604090205490565b6101ec6105193660046124eb565b610c30565b34801561052a57600080fd5b506101ec610539366004612399565b610da3565b6101ec61054c366004612489565b610f75565b34801561055d57600080fd5b506101ec61056c366004612399565b610fc6565b6101ec61057f366004612197565b611045565b6101ec61059236600461252c565b611074565b3480156105a357600080fd5b506105b76105b2366004612489565b611253565b6040805192835260208301919091520161020e565b3480156105d857600080fd5b506101ec6105e7366004612399565b6112ca565b3480156105f857600080fd5b506101ec610607366004612399565b611345565b34801561061857600080fd5b506101ec6106273660046125ac565b611383565b34801561063857600080fd5b506002546102c9906001600160a01b031681565b34801561065857600080fd5b506103416106673660046125ca565b611450565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146106bc576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b602087018035906106d6906106d1908a612351565b61146e565b14610714576106e86020880188612351565b60405163309afaf360e21b815263ffffffff9091166004820152602088013560248201526044016106b3565b610723878787878787876114c0565b50505050505050565b610734611732565b63ffffffff82166000818152600080516020612c3a833981519152602081815260409283902085905582519384528301849052815190927f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b92908290030190a1505050565b84811480156107a757508483145b6107f35760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106b3565b6107fb6120db565b3460005b8781101561093b57600061081460018a6125fc565b82146108205730610822565b335b905060008a8a848181106108385761083861260f565b905060200201602081019061084d9190612351565b905060008989858181106108635761086361260f565b90506020020160208101906108789190612625565b905061090f8261089a83600260149054906101000a900463ffffffff16611764565b8a8a888181106108ac576108ac61260f565b90506020028101906108be9190612640565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d8152602081019190915292508991506117ad9050565b955061091a826118b8565b60408601515161092a90866125fc565b945050600190920191506107ff9050565b505050505050505050565b63ffffffff82166000908152600080516020612c3a833981519152602052604090205481145b92915050565b61097a611732565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146109b75760405162461bcd60e51b81526004016106b390612686565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6109e1611732565b604051636b85c48160e11b815230600482015263ffffffff84166024820152604481018390526001600160401b03821660648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d70b890290608401600060405180830381600087803b158015610a6457600080fd5b505af1158015610a78573d6000803e3d6000fd5b505060045460ff16159150610ae490505763ffffffff83166000908152600360209081526040808320858452909152812080546001600160401b031691610abe836126aa565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b505050565b610af1611732565b610afb60006118e1565b565b60045460009060ff1615610b475763ffffffff83166000908152600360209081526040808320858452909152902054610b40906001600160401b031660016126d0565b905061096c565b50600061096c565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6000807fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b600610b74565b610c2084610bcd85600260149054906101000a900463ffffffff16611764565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051808201909152348152602081019190915292503391506117ad9050565b50610c2a846118b8565b50505050565b60005b81811015610d225736838383818110610c4e57610c4e61260f565b9050602002810190610c6091906126f7565b9050610c7c610c726020830183612351565b6020830135610946565b610c865750610d1a565b3063d045a0dc60c08301358360a0810135610ca5610100830183612640565b610cb6610100890160e08a01612399565b610cc46101208a018a612640565b6040518963ffffffff1660e01b8152600401610ce69796959493929190612741565b6000604051808303818588803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b5050505050505b600101610c33565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d899190810190612803565b604051638351eea760e01b81526004016106b391906128d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610de85750825b90506000826001600160401b03166001148015610e045750303b155b905081158015610e12575080155b15610e305760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e5a57845460ff60401b1916600160401b1785555b610e6386611952565b610e6c86611963565b600280546001600160a01b031916331790556040805163416ecebf60e01b815290517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163416ecebf9160048083019260209291908290030181865afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0791906128e3565b600260146101000a81548163ffffffff021916908363ffffffff1602179055508315610f6d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6002546001600160a01b03163314610f9f5760405162461bcd60e51b81526004016106b390612686565b610fbf84610bcd85600260149054906101000a900463ffffffff16611764565b5050505050565b610fce611732565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561103157600080fd5b505af1158015610fbf573d6000803e3d6000fd5b3330146110655760405163029a949d60e31b815260040160405180910390fd5b61072387878787878787610714565b6001600160a01b03871630146110b45760405162461bcd60e51b81526020600482015260056024820152640216f4170760dc1b60448201526064016106b3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111185760405162461bcd60e51b815260206004820152600960248201526808595b991c1bda5b9d60ba1b60448201526064016106b3565b60006111248686611974565b905060011960ff82160161114f5760018060008282546111449190612900565b909155506112499050565b60031960ff82160161120a57600180600082825461116d9190612900565b909155506000905061117f8787611996565b905061118a816118b8565b60006111c262030d4060006111bb60408051600360f01b602082015281516002818303018152602290910190915290565b91906119b9565b9050611202826111e56001600260149054906101000a900463ffffffff16611764565b8360405180604001604052803481526020016000815250306117ad565b505050611249565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d657373616765207479706560601b60448201526064016106b3565b5050505050505050565b60008060006112b48761127888600260149054906101000a900463ffffffff16611764565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611a21915050565b8051602090910151909890975095505050505050565b6112d2611732565b7fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b60080546001600160a01b0383166001600160a01b03199091168117825560408051918252517fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609181900360200190a15050565b61134d611732565b6001600160a01b03811661137757604051631e4fbdf760e01b8152600060048201526024016106b3565b611380816118e1565b50565b6002546001600160a01b031633146113ad5760405162461bcd60e51b81526004016106b390612686565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146113fa576040519150601f19603f3d011682016040523d82523d6000602084013e6113ff565b606091505b5050905080610ae45760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106b3565b600060208201803590611467906104e69085612351565b1492915050565b63ffffffff81166000908152600080516020612c3a83398151915260208190526040822054806114b95760405163f6ff4fb760e01b815263ffffffff851660048201526024016106b3565b9392505050565b6114ea6114d06020890189612351565b60208901356114e560608b0160408c01612913565b611b02565b60006114f68686611974565b905060001960ff82160161158b5760008054908061151383612930565b91905055506115228686611bf7565b3410156115715760405162461bcd60e51b815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106b3565b61158661158160208a018a612351565b611c0f565b611249565b60ff8116600214806115a0575060ff81166004145b15611656576000805490806115b483612930565b909155506115ca905061158160208a018a612351565b604051633e5ac80960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061161f9030908b906000908c908c90600401612949565b600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b50505050611249565b60021960ff82160161120a5760008054908061167183612930565b90915550611687905061158160208a018a612351565b61169c61169760208a018a612351565b6118b8565b60006116cd62030d40600a6111bb60408051600360f01b602082015281516002818303018152602290910190915290565b905061172b6116df60208b018b612351565b60025460408051600160f81b6020820152600160a01b90920460e01b6001600160e01b0319166021830152600a60258084019190915281518084039091018152604590920190526111e5565b5050611249565b3361173b610b4f565b6001600160a01b031614610afb5760405163118cdaa760e01b81523360048201526024016106b3565b6040516001600160f81b031960f884901b1660208201526001600160e01b031960e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b6117b56120db565b60006117c48460000151611c30565b6020850151909150156117de576117de8460200151611c59565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff16815260200161182e8c61146e565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b815260040161186a92919061297b565b60806040518083038185885af1158015611888573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ad9190612a42565b979650505050505050565b63ffffffff811660009081526006602052604081208054916118d983612930565b919050555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61195a611d3f565b61138081611d88565b61196b611d3f565b61138081611d90565b60006119836001828486612aa9565b61198c91612ad3565b60f81c9392505050565b60006119a6600560018486612aa9565b6119af91612b03565b60e01c9392505050565b60608360036119c9826000611dbf565b61ffff16146119fd576119dd816000611dbf565b604051633a51740d60e01b815261ffff90911660048201526024016106b3565b6000611a098585611e1c565b9050611a1786600183611e8c565b9695505050505050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611a848961146e565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611ab992919061297b565b6040805180830381865afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190612b31565b95945050505050565b63ffffffff831660009081526003602090815260408083208584529091529020546004546001600160401b039091169060ff1615611b9b57611b458160016126d0565b6001600160401b0316826001600160401b031614611b9b5760405162461bcd60e51b81526020600482015260136024820152724f4170703a20696e76616c6964206e6f6e636560681b60448201526064016106b3565b806001600160401b0316826001600160401b03161115610c2a5763ffffffff84166000908152600360209081526040808320868452909152902080546001600160401b03841667ffffffffffffffff1990911617905550505050565b6000611c068260058186612aa9565b6114b991612b4d565b63ffffffff811660009081526005602052604081208054916118d983612930565b600081341015611c55576040516304fb820960e51b81523460048201526024016106b3565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdd9190612b6b565b90506001600160a01b038116611d06576040516329b99a9560e11b815260040160405180910390fd5b611d3b6001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085611ef7565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610afb57604051631afcd79f60e31b815260040160405180910390fd5b61134d611d3f565b611d98611d3f565b6001600160a01b038116610fce57604051632d618d8160e21b815260040160405180910390fd5b6000611dcc826002612900565b83511015611e135760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b60448201526064016106b3565b50016002015190565b60606fffffffffffffffffffffffffffffffff821615611e6d57604080516001600160801b0319608086811b8216602084015285901b166030820152016040516020818303038152906040526114b9565b6040516001600160801b0319608085901b166020820152603001611796565b6060836003611e9c826000611dbf565b61ffff1614611eb0576119dd816000611dbf565b846001611ebd8551611f51565b611ec8906001612b88565b8686604051602001611ede959493929190612ba3565b6040516020818303038152906040529150509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c2a908590611f80565b600061ffff821115611c55576040516306dfcc6560e41b815260106004820152602481018390526044016106b3565b6000611f956001600160a01b03841683611fe3565b90508051600014158015611fba575080806020019051810190611fb89190612c0a565b155b15610ae457604051635274afe760e01b81526001600160a01b03841660048201526024016106b3565b60606114b98383600084600080856001600160a01b031684866040516120099190612c27565b60006040518083038185875af1925050503d8060008114612046576040519150601f19603f3d011682016040523d82523d6000602084013e61204b565b606091505b5091509150611a1786838360608261206b57612066826120b2565b6114b9565b815115801561208257506001600160a01b0384163b155b156120ab57604051639996b31560e01b81526001600160a01b03851660048201526024016106b3565b50806114b9565b8051156120c25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000801916815260200160006001600160401b0316815260200161211d604051806040016040528060008152602001600081525090565b905290565b60006060828403121561213457600080fd5b50919050565b60008083601f84011261214c57600080fd5b5081356001600160401b0381111561216357600080fd5b60208301915083602082850101111561217b57600080fd5b9250929050565b6001600160a01b038116811461138057600080fd5b600080600080600080600060e0888a0312156121b257600080fd5b6121bc8989612122565b96506060880135955060808801356001600160401b03808211156121df57600080fd5b6121eb8b838c0161213a565b909750955060a08a0135915061220082612182565b90935060c0890135908082111561221657600080fd5b506122238a828b0161213a565b989b979a50959850939692959293505050565b63ffffffff8116811461138057600080fd5b6000806040838503121561225b57600080fd5b823561226681612236565b946020939093013593505050565b60008083601f84011261228657600080fd5b5081356001600160401b0381111561229d57600080fd5b6020830191508360208260051b850101111561217b57600080fd5b600080600080600080606087890312156122d157600080fd5b86356001600160401b03808211156122e857600080fd5b6122f48a838b01612274565b9098509650602089013591508082111561230d57600080fd5b6123198a838b01612274565b9096509450604089013591508082111561233257600080fd5b5061233f89828a01612274565b979a9699509497509295939492505050565b60006020828403121561236357600080fd5b81356114b981612236565b801515811461138057600080fd5b60006020828403121561238e57600080fd5b81356114b98161236e565b6000602082840312156123ab57600080fd5b81356114b981612182565b6001600160401b038116811461138057600080fd5b6000806000606084860312156123e057600080fd5b83356123eb81612236565b9250602084013591506040840135612402816123b6565b809150509250925092565b60008060008060a0858703121561242357600080fd5b61242d8686612122565b935060608501356001600160401b0381111561244857600080fd5b6124548782880161213a565b909450925050608085013561246881612182565b939692955090935050565b803560ff8116811461248457600080fd5b919050565b6000806000806060858703121561249f57600080fd5b84356124aa81612236565b93506124b860208601612473565b925060408501356001600160401b038111156124d357600080fd5b6124df8782880161213a565b95989497509550505050565b600080602083850312156124fe57600080fd5b82356001600160401b0381111561251457600080fd5b61252085828601612274565b90969095509350505050565b600080600080600080600060a0888a03121561254757600080fd5b873561255281612182565b96506020880135955060408801356001600160401b038082111561257557600080fd5b6125818b838c0161213a565b909750955060608a0135915061259682612182565b9093506080890135908082111561221657600080fd5b600080604083850312156125bf57600080fd5b823561226681612182565b6000606082840312156125dc57600080fd5b6114b98383612122565b634e487b7160e01b600052601160045260246000fd5b8181038181111561096c5761096c6125e6565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561263757600080fd5b6114b982612473565b6000808335601e1984360301811261265757600080fd5b8301803591506001600160401b0382111561267157600080fd5b60200191503681900382131561217b57600080fd5b6020808252600a908201526937b7363c9030b236b4b760b11b604082015260600190565b60006001600160401b038083168181036126c6576126c66125e6565b6001019392505050565b6001600160401b038181168382160190808211156126f0576126f06125e6565b5092915050565b6000823561013e1983360301811261270e57600080fd5b9190910192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000883561274e81612236565b63ffffffff16825260208981013590830152604089013561276e816123b6565b6001600160401b03811660408401525087606083015260e0608083015261279960e083018789612718565b6001600160a01b03861660a084015282810360c08401526127bb818587612718565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156127fa5781810151838201526020016127e2565b50506000910152565b60006020828403121561281557600080fd5b81516001600160401b038082111561282c57600080fd5b818401915084601f83011261284057600080fd5b815181811115612852576128526127c9565b604051601f8201601f19908116603f0116810190838211818310171561287a5761287a6127c9565b8160405282815287602084870101111561289357600080fd5b6118ad8360208301602088016127df565b600081518084526128bc8160208601602086016127df565b601f01601f19169290920160200192915050565b6020815260006114b960208301846128a4565b6000602082840312156128f557600080fd5b81516114b981612236565b8082018082111561096c5761096c6125e6565b60006020828403121561292557600080fd5b81356114b9816123b6565b600060018201612942576129426125e6565b5060010190565b60018060a01b038616815284602082015261ffff841660408201526080606082015260006118ad608083018486612718565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526129b160e08401826128a4565b90506060850151603f198483030160a08501526129ce82826128a4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612a0657600080fd5b604051604081018181106001600160401b0382111715612a2857612a286127c9565b604052825181526020928301519281019290925250919050565b600060808284031215612a5457600080fd5b604051606081018181106001600160401b0382111715612a7657612a766127c9565b604052825181526020830151612a8b816123b6565b6020820152612a9d84604085016129f4565b60408201529392505050565b60008085851115612ab957600080fd5b83861115612ac657600080fd5b5050820193919092039150565b6001600160f81b03198135818116916001851015612afb5780818660010360031b1b83161692505b505092915050565b6001600160e01b03198135818116916004851015612afb5760049490940360031b84901b1690921692915050565b600060408284031215612b4357600080fd5b6114b983836129f4565b8035602083101561096c57600019602084900360031b1b1692915050565b600060208284031215612b7d57600080fd5b81516114b981612182565b61ffff8181168382160190808211156126f0576126f06125e6565b60008651612bb5818460208b016127df565b6001600160f81b031960f888811b82169285019283526001600160f01b031960f089901b16600184015286901b1660038201528351612bfb8160048401602088016127df565b01600401979650505050505050565b600060208284031215612c1c57600080fd5b81516114b98161236e565b6000825161270e8184602087016127df56fe72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900a264697066735822122063bb3767e08b96a1356b860946aa0e84cda903caab398e233dfdb62f71e126ae64736f6c63430008160033",
- "sourceMap": "1715:9343:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1893:20;;;;;;;;;;;;;;;;;;;160:25:42;;;148:2;133:18;1893:20:5;;;;;;;;4764:708:1;;;;;;:::i;:::-;;:::i;1871:257:3:-;;;;;;;;;;-1:-1:-1;1871:257:3;;;887:1:2;2103:34:42;;;2168:2;2153:18;;2146:43;2039:18;1871:257:3;1896:299:42;1919:28:5;;;;;;;;;;;;;;;;3022:202:0;;;;;;;;;;-1:-1:-1;3022:202:0;;;;;:::i;:::-;;:::i;1980:17:5:-;;;;;;;;;;-1:-1:-1;1980:17:5;;;;-1:-1:-1;;;1980:17:5;;;;;;;;;2818:10:42;2806:23;;;2788:42;;2776:2;2761:18;1980:17:5;2644:192:42;2058:93:6;;;;;;;;;;-1:-1:-1;2139:4:6;2058:93;;;-1:-1:-1;;;;;3005:32:42;;;2987:51;;2975:2;2960:18;2058:93:6;2841:203:42;3817:997:5;;;;;;:::i;:::-;;:::i;2161:59::-;;;;;;;;;;-1:-1:-1;2161:59:5;;;;;:::i;:::-;;;;;;;;;;;;;;10498:124;;;;;;;;;;-1:-1:-1;10498:124:5;;;;;:::i;:::-;;:::i;:::-;;;4933:14:42;;4926:22;4908:41;;4896:2;4881:18;10498:124:5;4768:187:42;9172:109:5;;;;;;;;;;-1:-1:-1;9172:109:5;;;;;:::i;:::-;;:::i;1029:46:0:-;;;;;;;;;;;;;;;2226:60:5;;;;;;;;;;-1:-1:-1;2226:60:5;;;;;:::i;:::-;;;;;;;;;;;;;;2736:84;;;;;;;;;;-1:-1:-1;2736:84:5;;;;;:::i;:::-;;:::i;10234:258::-;;;;;;;;;;-1:-1:-1;10234:258:5;;;;;:::i;:::-;;:::i;3155:101:33:-;;;;;;;;;;;;;:::i;9781:328:5:-;;;;;;;;;;-1:-1:-1;9781:328:5;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6571:31:42;;;6553:50;;6541:2;6526:18;9781:328:5;6409:200:42;2409:216:1;;;;;;;;;;-1:-1:-1;2409:216:1;;;;;:::i;:::-;-1:-1:-1;;;;;2594:24:1;;2613:4;2594:24;2409:216;;;;;;;2441:144:33;;;;;;;;;;;;;:::i;1586:180:6:-;;;;;;;;;;;;;:::i;3082:319:5:-;;;;;;:::i;:::-;;:::i;2336:163:0:-;;;;;;;;;;-1:-1:-1;2336:163:0;;;;;:::i;:::-;2479:13;;2394:7;2479:13;;;-1:-1:-1;;;;;;;;;;;2479:13:0;;;;;;;2336:163;2968:1333:6;;;;;;:::i;:::-;;:::i;2359:217:5:-;;;;;;;;;;-1:-1:-1;2359:217:5;;;;;:::i;:::-;;:::i;3510:301::-;;;;;;:::i;:::-;;:::i;4117:105:0:-;;;;;;;;;;-1:-1:-1;4117:105:0;;;;;:::i;:::-;;:::i;4949:409:6:-;;;;;;:::i;:::-;;:::i;7916:1003:5:-;;;;;;:::i;:::-;;:::i;4871:385::-;;;;;;;;;;-1:-1:-1;4871:385:5;;;;;:::i;:::-;;:::i;:::-;;;;9965:25:42;;;10021:2;10006:18;;9999:34;;;;9938:18;4871:385:5;9791:248:42;2283:226:6;;;;;;;;;;-1:-1:-1;2283:226:6;;;;;:::i;:::-;;:::i;3405:215:33:-;;;;;;;;;;-1:-1:-1;3405:215:33;;;;;:::i;:::-;;:::i;2826:199:5:-;;;;;;;;;;-1:-1:-1;2826:199:5;;;;;:::i;:::-;;:::i;1954:20::-;;;;;;;;;;-1:-1:-1;1954:20:5;;;;-1:-1:-1;;;;;1954:20:5;;;3167:149:1;;;;;;;;;;-1:-1:-1;3167:149:1;;;;;:::i;:::-;;:::i;4764:708::-;5077:8;-1:-1:-1;;;;;5069:31:1;5090:10;5069:31;5065:68;;5109:24;;-1:-1:-1;;;5109:24:1;;5122:10;5109:24;;;2987:51:42;2960:18;;5109:24:1;;;;;;;;5065:68;5269:14;;;;;;5233:32;;5250:14;;5269:7;5250:14;:::i;:::-;5233:16;:32::i;:::-;:50;5229:103;;5301:14;;;;:7;:14;:::i;:::-;5292:40;;-1:-1:-1;;;5292:40:1;;10815:10:42;10803:23;;;5292:40:1;;;10785:42:42;5317:14:1;;;;10843:18:42;;;10836:34;10758:18;;5292:40:1;10613:263:42;5229:103:1;5406:59;5417:7;5426:5;5433:8;;5443:9;5454:10;;5406;:59::i;:::-;4764:708;;;;;;;:::o;3022:202:0:-;2334:13:33;:11;:13::i;:::-;3161::0::1;::::0;::::1;3102:25;3161:13:::0;;;-1:-1:-1;;;;;;;;;;;3161:13:0::1;::::0;;;;;;;;:21;;;3197:20;;10785:42:42;;;10843:18;;10836:34;;;3197:20:0;;923:23;;3197:20:::1;::::0;;;;;;;::::1;3092:132;3022:202:::0;;:::o;3817:997:5:-;3983:31;;;:64;;;;-1:-1:-1;4018:29:5;;;3983:64;3975:105;;;;-1:-1:-1;;;3975:105:5;;11083:2:42;3975:105:5;;;11065:21:42;11122:2;11102:18;;;11095:30;11161;11141:18;;;11134:58;11209:18;;3975:105:5;10881:352:42;3975:105:5;4091:31;;:::i;:::-;4154:9;4132:19;4173:635;4193:16;;;4173:635;;;4230:21;4259:16;4274:1;4259:5;:16;:::i;:::-;4254:1;:21;:50;;4299:4;4254:50;;;4278:10;4254:50;4230:74;;4318:13;4334:5;;4340:1;4334:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4318:24;;4356:13;4372:6;;4379:1;4372:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4356:25;;4500:207;4525:6;4549:29;4565:7;4574:3;;;;;;;;;;;4549:15;:29::i;:::-;4596:8;;4605:1;4596:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;4500:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4625:28:5;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4679:13:5;;-1:-1:-1;4500:7:5;;-1:-1:-1;4500:207:5:i;:::-;4490:217;;4721:26;4740:6;4721:18;:26::i;:::-;4776:11;;;;:21;4761:36;;;;:::i;:::-;;-1:-1:-1;;4211:3:5;;;;;-1:-1:-1;4173:635:5;;-1:-1:-1;4173:635:5;;;3965:849;;3817:997;;;;;;:::o;10498:124::-;2479:13:0;;;10572:4:5;2479:13:0;;;-1:-1:-1;;;;;;;;;;;2479:13:0;;;;;;10595:20:5;;10498:124;;;;;:::o;9172:109::-;2334:13:33;:11;:13::i;:::-;9246:12:5::1;:28:::0;;-1:-1:-1;;9246:28:5::1;::::0;::::1;;::::0;;;::::1;::::0;;9172:109::o;2736:84::-;2635:5;;-1:-1:-1;;;;;2635:5:5;2621:10;:19;2613:42;;;;-1:-1:-1;;;2613:42:5;;;;;;;:::i;:::-;2799:5:::1;:14:::0;;-1:-1:-1;;;;;;2799:14:5::1;-1:-1:-1::0;;;;;2799:14:5;;;::::1;::::0;;;::::1;::::0;;2736:84::o;10234:258::-;2334:13:33;:11;:13::i;:::-;10343:54:5::1;::::0;-1:-1:-1;;;10343:54:5;;10365:4:::1;10343:54;::::0;::::1;12914:51:42::0;13013:10;13001:23;;12981:18;;;12974:51;13041:18;;;13034:34;;;-1:-1:-1;;;;;13104:31:42;;13084:18;;;13077:59;10343:8:5::1;-1:-1:-1::0;;;;;10343:13:5::1;::::0;::::1;::::0;12886:19:42;;10343:54:5::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10411:12:5::1;::::0;::::1;;10407:79;::::0;-1:-1:-1;10407:79:5::1;::::0;-1:-1:-1;10407:79:5::1;10439:25;::::0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;:34;;;;;;;;:36;;-1:-1:-1;;;;;10439:36:5::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;10439:36:5::1;;;;;-1:-1:-1::0;;;;;10439:36:5::1;;;;;;;10407:79;10234:258:::0;;;:::o;3155:101:33:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;9781:328:5:-;9893:12;;9871:6;;9893:12;;9889:214;;;9928:25;;;;;;;:16;:25;;;;;;;;:34;;;;;;;;;:38;;-1:-1:-1;;;;;9928:34:5;;:38;:::i;:::-;9921:45;;;;9889:214;-1:-1:-1;10004:1:5;9997:8;;2441:144:33;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:33;;2441:144;-1:-1:-1;;2441:144:33:o;1586:180:6:-;1638:7;;1195:36;1698:34;1045:202;3082:319:5;3259:101;3267:4;3273:27;3289:5;3296:3;;;;;;;;;;;3273:15;:27::i;:::-;3302:8;;3259:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3312:26:5;;;;;;;;;3325:9;3312:26;;;;;;;;;;-1:-1:-1;3348:10:5;;-1:-1:-1;3259:7:5;;-1:-1:-1;3259:101:5:i;:::-;;3370:24;3389:4;3370:18;:24::i;:::-;3082:319;;;;:::o;2968:1333:6:-;3069:9;3064:1037;3084:19;;;3064:1037;;;3124:29;3156:8;;3165:1;3156:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3124:43;-1:-1:-1;3250:50:6;3257:20;;;;3124:43;3257:20;:::i;:::-;3279;;;;3250:6;:50::i;:::-;3245:65;;3302:8;;;3245:65;3872:4;:22;3903:12;;;;:6;3966:11;;;;3995:14;;;;3903:6;3995:14;:::i;:::-;4027:15;;;;;;;;:::i;:::-;4060:16;;;;:6;:16;:::i;:::-;3872:218;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3110:991;3064:1037;3105:3;;3064:1037;;;;4258:10;-1:-1:-1;;;;;4248:43:6;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4248:45:6;;;;;;;;;;;;:::i;:::-;4231:63;;-1:-1:-1;;;4231:63:6;;;;;;;;:::i;2359:217:5:-;8870:21:34;4302:15;;-1:-1:-1;;;4302:15:34;;;;4301:16;;-1:-1:-1;;;;;4348:14:34;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:34;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:34;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:34;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:34;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:34;-1:-1:-1;;;5013:22:34;;;4979:67;2427:25:5::1;2442:9;2427:14;:25::i;:::-;2462:26;2478:9;2462:15;:26::i;:::-;2499:5;:18:::0;;-1:-1:-1;;;;;;2499:18:5::1;2507:10;2499:18;::::0;;2533:36:::1;::::0;;-1:-1:-1;;;2533:36:5;;;;2554:8:::1;-1:-1:-1::0;;;;;2533:34:5::1;::::0;::::1;::::0;:36:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:34;:36:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2527:3;;:42;;;;;;;;;;;;;;;;;;5070:14:34::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:34;;;5142:14;;-1:-1:-1;6553:50:42;;5142:14:34;;6541:2:42;6526:18;5142:14:34;;;;;;;5066:101;4092:1081;;;;;2359:217:5;:::o;3510:301::-;2635:5;;-1:-1:-1;;;;;2635:5:5;2621:10;:19;2613:42;;;;-1:-1:-1;;;2613:42:5;;;;;;;:::i;:::-;3703:101:::1;3711:4;3717:27;3733:5;3740:3;;;;;;;;;;;3717:15;:27::i;3703:101::-;;3510:301:::0;;;;:::o;4117:105:0:-;2334:13:33;:11;:13::i;:::-;4184:31:0::1;::::0;-1:-1:-1;;;4184:31:0;;-1:-1:-1;;;;;3005:32:42;;;4184:31:0::1;::::0;::::1;2987:51:42::0;4184:8:0::1;:20;::::0;::::1;::::0;2960:18:42;;4184:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;4949:409:6::0;5228:10;5250:4;5228:27;5224:50;;5264:10;;-1:-1:-1;;;5264:10:6;;;;;;;;;;;5224:50;5284:67;5303:7;5312:5;5319:8;;5329:9;5340:10;;5284:18;:67::i;7916:1003:5:-;-1:-1:-1;;;;;8109:22:5;;8126:4;8109:22;8101:40;;;;-1:-1:-1;;;8101:40:5;;17672:2:42;8101:40:5;;;17654:21:42;17711:1;17691:18;;;17684:29;-1:-1:-1;;;17729:18:42;;;17722:35;17774:18;;8101:40:5;17470:328:42;8101:40:5;8159:10;-1:-1:-1;;;;;8181:8:5;8159:31;;8151:53;;;;-1:-1:-1;;;8151:53:5;;18005:2:42;8151:53:5;;;17987:21:42;18044:1;18024:18;;;18017:29;-1:-1:-1;;;18062:18:42;;;18055:39;18111:18;;8151:53:5;17803:332:42;8151:53:5;8215:13;8231:18;:8;;:16;:18::i;:::-;8215:34;-1:-1:-1;;;8263:33:5;;;;8259:654;;8329:1;8312:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;8259:654:5;;-1:-1:-1;8259:654:5;;-1:-1:-1;;8351:37:5;;;;8347:566;;8421:1;8404:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;8437:13:5;;-1:-1:-1;8453:17:5;:8;;:15;:17::i;:::-;8437:33;;8484:26;8503:6;8484:18;:26::i;:::-;8524:20;8547:65;8602:6;8610:1;8547:27;1379:24:28;;;-1:-1:-1;;;1379:24:28;;;23934:51:42;1379:24:28;;;;;;;;;24001:11:42;;;;1379:24:28;;;;1303:107;8547:27:5;:54;:65;:54;:65::i;:::-;8524:88;;8626:215;8651:6;8675:43;658:1;8714:3;;;;;;;;;;;8675:15;:43::i;:::-;8736:7;8761:26;;;;;;;;8774:9;8761:26;;;;8785:1;8761:26;;;8821:4;8626:7;:215::i;:::-;;8390:462;;8347:566;;;8872:30;;-1:-1:-1;;;8872:30:5;;18472:2:42;8872:30:5;;;18454:21:42;18511:2;18491:18;;;18484:30;-1:-1:-1;;;18530:18:42;;;18523:50;18590:18;;8872:30:5;18270:344:42;8347:566:5;8091:828;7916:1003;;;;;;;:::o;4871:385::-;4988:17;5007:18;5117:23;5143:58;5150:4;5156:27;5172:5;5179:3;;;;;;;;;;;5156:15;:27::i;:::-;5185:8;;5143:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5143:58:5;-1:-1:-1;5143:6:5;;-1:-1:-1;;5143:58:5:i;:::-;5219:13;;5234:14;;;;;5219:13;;5234:14;;-1:-1:-1;4871:385:5;-1:-1:-1;;;;;;4871:385:5:o;2283:226:6:-;2334:13:33;:11;:13::i;:::-;1195:36:6;2443:22;;-1:-1:-1;;;;;2443:22:6;::::1;-1:-1:-1::0;;;;;;2443:22:6;;::::1;::::0;::::1;::::0;;2480::::1;::::0;;2987:51:42;;;2480:22:6;::::1;::::0;;;;2975:2:42;2480:22:6;;::::1;2348:161;2283:226:::0;:::o;3405:215:33:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:33;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:33;;3562:1:::1;3534:31;::::0;::::1;2987:51:42::0;2960:18;;3534:31:33::1;2841:203:42::0;3485:91:33::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;2826:199:5:-;2635:5;;-1:-1:-1;;;;;2635:5:5;2621:10;:19;2613:42;;;;-1:-1:-1;;;2613:42:5;;;;;;;:::i;:::-;2912:12:::1;2930:3;-1:-1:-1::0;;;;;2930:8:5::1;2947:7;2930:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2911:49;;;2978:7;2970:48;;;::::0;-1:-1:-1;;;2970:48:5;;19031:2:42;2970:48:5::1;::::0;::::1;19013:21:42::0;19070:2;19050:18;;;19043:30;19109;19089:18;;;19082:58;19157:18;;2970:48:5::1;18829:352:42::0;3167:149:1;3249:4;3296:13;;;;;;3272:20;;3278:13;;3296:6;3278:13;:::i;3272:20::-;:37;;3167:149;-1:-1:-1;;3167:149:1:o;3522:257:0:-;3685:13;;;3592:7;3685:13;;;-1:-1:-1;;;;;;;;;;;3685:13:0;;;;;;;;;3708:43;;3739:12;;-1:-1:-1;;;3739:12:0;;2818:10:42;2806:23;;3739:12:0;;;2788:42:42;2761:18;;3739:12:0;2644:192:42;3708:43:0;3768:4;3522:257;-1:-1:-1;;;3522:257:0:o;5717:1995:5:-;5930:59;5943:14;;;;:7;:14;:::i;:::-;5959;;;;5975:13;;;;;;;;:::i;:::-;5930:12;:59::i;:::-;5999:17;6019:18;:8;;:16;:18::i;:::-;5999:38;-1:-1:-1;;;6052:36:5;;;;6048:1658;;6104:5;:7;;;:5;:7;;;:::i;:::-;;;;;;6737:16;:8;;:14;:16::i;:::-;6724:9;:29;;6716:73;;;;-1:-1:-1;;;6716:73:5;;19778:2:42;6716:73:5;;;19760:21:42;19817:2;19797:18;;;19790:30;19856:33;19836:18;;;19829:61;19907:18;;6716:73:5;19576:355:42;6716:73:5;6804:33;6822:14;;;;:7;:14;:::i;:::-;6804:17;:33::i;:::-;6048:1658;;;6858:37;;;705:1;6858:37;;:82;;-1:-1:-1;6899:41:5;;;798:1;6899:41;6858:82;6854:852;;;6956:5;:7;;;:5;:7;;;:::i;:::-;;;;-1:-1:-1;6977:33:5;;-1:-1:-1;6995:14:5;;;;:7;:14;:::i;6977:33::-;7024:55;;-1:-1:-1;;;7024:55:5;;-1:-1:-1;;;;;7024:8:5;:20;;;;:55;;7053:4;;7060:5;;7067:1;;7070:8;;;;7024:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6854:852;;;-1:-1:-1;;7100:32:5;;;;7096:610;;7148:5;:7;;;:5;:7;;;:::i;:::-;;;;-1:-1:-1;7169:33:5;;-1:-1:-1;7187:14:5;;;;:7;:14;:::i;7169:33::-;7256:34;7275:14;;;;:7;:14;:::i;:::-;7256:18;:34::i;:::-;7304:20;7327:66;7382:6;7390:2;7327:27;1379:24:28;;;-1:-1:-1;;;1379:24:28;;;23934:51:42;1379:24:28;;;;;;;;;24001:11:42;;;;1379:24:28;;;;1303:107;7327:66:5;7304:89;-1:-1:-1;7407:227:5;7432:14;;;;:7;:14;:::i;:::-;7503:3;;1209:40;;;-1:-1:-1;;;1209:40:5;;;25267:49:42;-1:-1:-1;;;7503:3:5;;;25371::42;25349:16;-1:-1:-1;;;;;;25349:16:42;25332:11;;;25325:64;7508:2:5;25405:11:42;;;;25398:27;;;;1209:40:5;;;;;;;;;;25441:12:42;;;;1209:40:5;;7464:47;1094:162;7407:227;;7134:511;7096:610;;2658:162:33;966:10:35;2717:7:33;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:33;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:33;;966:10:35;2763:40:33;;;2987:51:42;2960:18;;2763:40:33;2841:203:42;950:138:5;1049:32;;-1:-1:-1;;;;;;20635:3:42;20613:16;;;20609:36;1049:32:5;;;20597:49:42;-1:-1:-1;;;;;;20701:3:42;20679:16;;;20675:43;20662:11;;;20655:64;1018:12:5;;20735:11:42;;1049:32:5;;;;;;;;;;;;;1042:39;;950:138;;;;:::o;3543:766:2:-;3744:31;;:::i;:::-;3909:20;3932:26;3943:4;:14;;;3932:10;:26::i;:::-;3972:15;;;;3909:49;;-1:-1:-1;3972:19:2;3968:53;;3993:28;4005:4;:15;;;3993:11;:28::i;:::-;4051:8;-1:-1:-1;;;;;4051:13:2;;4073:12;4164:92;;;;;;;;4180:7;4164:92;;;;;;4189:25;4206:7;4189:16;:25::i;:::-;4164:92;;;;4216:8;4164:92;;;;4226:8;4164:92;;;;4254:1;4236:4;:15;;;:19;4164:92;;;;;4274:14;4051:251;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4032:270;3543:766;-1:-1:-1;;;;;;;3543:766:2:o;7816:94:5:-;7879:22;;;;;;;:13;:22;;;;;:24;;;;;;:::i;:::-;;;;;;7816:94;:::o;3774:248:33:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:33;;-1:-1:-1;;;;;3941:19:33;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:34;:18;:20::i;:::-;1929:38:33::1;1954:12;1929:24;:38::i;1781:123:0:-:0;6931:20:34;:18;:20::i;:::-;1861:36:0::1;1887:9;1861:25;:36::i;1262:151:5:-:0;1327:5;1364:40;896:1;1327:5;1364:8;;:40;:::i;:::-;1357:48;;;:::i;:::-;1351:55;;;1262:151;-1:-1:-1;;;1262:151:5:o;1419:149::-;1483:6;1522:37;942:1;896;1522:8;;:37;:::i;:::-;1515:45;;;:::i;:::-;1508:53;;;1419:149;-1:-1:-1;;;1419:149:5:o;2101:357:28:-;2263:12;2244:8;817:1;1068:20;2244:8;1086:1;1068:17;:20::i;:::-;:30;;;1064:82;;1125:20;:8;1143:1;1125:17;:20::i;:::-;1107:39;;-1:-1:-1;;;1107:39:28;;24197:6:42;24185:19;;;1107:39:28;;;24167:38:42;24140:18;;1107:39:28;24023:188:42;1064:82:28;2287:19:::1;2309:51;2347:4;2353:6;2309:37;:51::i;:::-;2287:73;;2377:74;2395:8;294:1:22;2444:6:28;2377:17;:74::i;:::-;2370:81:::0;2101:357;-1:-1:-1;;;;;;2101:357:28:o;2393:391:2:-;-1:-1:-1;;;;;;;;;;;;;;;;;2614:8:2;-1:-1:-1;;;;;2614:14:2;;2646:86;;;;;;;;2662:7;2646:86;;;;;;2671:25;2688:7;2671:16;:25::i;:::-;2646:86;;;;2698:8;2646:86;;;;2708:8;2646:86;;;;2718:13;2646:86;;;;;2758:4;2614:163;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2595:182;2393:391;-1:-1:-1;;;;;2393:391:2:o;9287:488:5:-;9406:25;;;9384:19;9406:25;;;:16;:25;;;;;;;;:34;;;;;;;;;9454:12;;-1:-1:-1;;;;;9406:34:5;;;;9454:12;;9450:101;;;9500:16;:12;9515:1;9500:16;:::i;:::-;-1:-1:-1;;;;;9490:26:5;:6;-1:-1:-1;;;;;9490:26:5;;9482:58;;;;-1:-1:-1;;;9482:58:5;;24682:2:42;9482:58:5;;;24664:21:42;24721:2;24701:18;;;24694:30;-1:-1:-1;;;24740:18:42;;;24733:49;24799:18;;9482:58:5;24480:343:42;9482:58:5;9687:12;-1:-1:-1;;;;;9678:21:5;:6;-1:-1:-1;;;;;9678:21:5;;9674:95;;;9715:25;;;;;;;:16;:25;;;;;;;;:34;;;;;;;;:43;;-1:-1:-1;;;;;9715:43:5;;-1:-1:-1;;9715:43:5;;;;;;9374:401;9287:488;;;:::o;1574:137::-;1637:7;1679:23;:8;942:1;1679:8;;:23;:::i;:::-;1671:32;;;:::i;7718:92::-;7780:21;;;;;;;:12;:21;;;;;:23;;;;;;:::i;10746:199::-;10821:17;10866:10;10854:9;:22;10850:61;;;10885:26;;-1:-1:-1;;;10885:26:5;;10901:9;10885:26;;;160:25:42;133:18;;10885:26:5;14:177:42;10850:61:5;-1:-1:-1;10928:10:5;10746:199::o;5573:410:2:-;5726:15;5744:8;-1:-1:-1;;;;;5744:16:2;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5726:36;-1:-1:-1;;;;;;5776:21:2;;5772:54;;5806:20;;-1:-1:-1;;;5806:20:2;;;;;;;;;;;5772:54;5900:76;-1:-1:-1;;;;;5900:32:2;;5933:10;5953:8;5964:11;5900:32;:76::i;:::-;5632:351;5573:410;:::o;7084:141:34:-;8870:21;8560:40;-1:-1:-1;;;8560:40:34;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:34;;;;;;;;;;;1980:235:33;6931:20:34;:18;:20::i;1910:191:0:-;6931:20:34;:18;:20::i;:::-;-1:-1:-1;;;;;2004:23:0;::::1;2000:53;;2036:17;;-1:-1:-1::0;;;2036:17:0::1;;;;;;;;;;;12935:305:32::0;13013:6;13056:10;:6;13065:1;13056:10;:::i;:::-;13039:6;:13;:27;;13031:60;;;;-1:-1:-1;;;13031:60:32;;25922:2:42;13031:60:32;;;25904:21:42;25961:2;25941:18;;;25934:30;-1:-1:-1;;;25980:18:42;;;25973:50;26040:18;;13031:60:32;25720:344:42;13031:60:32;-1:-1:-1;13168:29:32;13184:3;13168:29;13162:36;;12935:305::o;2968:191:22:-;3052:12;3083:11;;;;:69;;3122:30;;;-1:-1:-1;;;;;;26304:3:42;26300:16;;;26296:25;;3122:30:22;;;26284:38:42;26356:16;;;26352:25;26338:12;;;26331:47;26394:12;3122:30:22;;;;;;;;;;;;3083:69;;;3097:22;;-1:-1:-1;;;;;;26566:3:42;26562:16;;;26558:62;3097:22:22;;;26546:75:42;26637:12;;3097:22:22;26417:238:42;5725:435:28;5889:12;5870:8;817:1;1068:20;5870:8;1086:1;1068:17;:20::i;:::-;:30;;;1064:82;;1125:20;:8;1143:1;1125:17;:20::i;1064:82::-;5966:8:::1;238:1:22;6035:25:28;:7;:14;:23;:25::i;:::-;:29;::::0;6063:1:::1;6035:29;:::i;:::-;6103:11;6132:7;5932:221;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5913:240;;5725:435:::0;;;;;;:::o;1702:188:38:-;1829:53;;;-1:-1:-1;;;;;27886:15:42;;;1829:53:38;;;27868:34:42;27938:15;;27918:18;;;27911:43;27970:18;;;;27963:34;;;1829:53:38;;;;;;;;;;27803:18:42;;;;1829:53:38;;;;;;;;-1:-1:-1;;;;;1829:53:38;-1:-1:-1;;;1829:53:38;;;1802:81;;1822:5;;1802:19;:81::i;16291:213:41:-;16347:6;16377:16;16369:24;;16365:103;;;16416:41;;-1:-1:-1;;;16416:41:41;;16447:2;16416:41;;;28189:36:42;28241:18;;;28234:34;;;28162:18;;16416:41:41;28008:266:42;4059:629:38;4478:23;4504:33;-1:-1:-1;;;;;4504:27:38;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4631:40;;-1:-1:-1;;;4631:40:38;;-1:-1:-1;;;;;3005:32:42;;4631:40:38;;;2987:51:42;2960:18;;4631:40:38;2841:203:42;2705:151:39;2780:12;2811:38;2833:6;2841:4;2847:1;2780:12;3421;3435:23;3462:6;-1:-1:-1;;;;;3462:11:39;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:39;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:39;;-1:-1:-1;;;;;3005:32:42;;5121:24:39;;;2987:51:42;2960:18;;5121:24:39;2841:203:42;5041:119:39;-1:-1:-1;5180:10:39;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:39;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:154:42:-;255:5;300:2;291:6;286:3;282:16;278:25;275:45;;;316:1;313;306:12;275:45;-1:-1:-1;338:6:42;196:154;-1:-1:-1;196:154:42:o;355:347::-;406:8;416:6;470:3;463:4;455:6;451:17;447:27;437:55;;488:1;485;478:12;437:55;-1:-1:-1;511:20:42;;-1:-1:-1;;;;;543:30:42;;540:50;;;586:1;583;576:12;540:50;623:4;615:6;611:17;599:29;;675:3;668:4;659:6;651;647:19;643:30;640:39;637:59;;;692:1;689;682:12;637:59;355:347;;;;;:::o;707:131::-;-1:-1:-1;;;;;782:31:42;;772:42;;762:70;;828:1;825;818:12;843:1048;986:6;994;1002;1010;1018;1026;1034;1087:3;1075:9;1066:7;1062:23;1058:33;1055:53;;;1104:1;1101;1094:12;1055:53;1127;1172:7;1161:9;1127:53;:::i;:::-;1117:63;;1227:2;1216:9;1212:18;1199:32;1189:42;;1282:3;1271:9;1267:19;1254:33;-1:-1:-1;;;;;1347:2:42;1339:6;1336:14;1333:34;;;1363:1;1360;1353:12;1333:34;1402:58;1452:7;1443:6;1432:9;1428:22;1402:58;:::i;:::-;1479:8;;-1:-1:-1;1376:84:42;-1:-1:-1;1564:3:42;1549:19;;1536:33;;-1:-1:-1;1578:31:42;1536:33;1578:31;:::i;:::-;1628:5;;-1:-1:-1;1686:3:42;1671:19;;1658:33;;1703:16;;;1700:36;;;1732:1;1729;1722:12;1700:36;;1771:60;1823:7;1812:8;1801:9;1797:24;1771:60;:::i;:::-;843:1048;;;;-1:-1:-1;843:1048:42;;-1:-1:-1;843:1048:42;;;;1745:86;;-1:-1:-1;;;843:1048:42:o;2200:121::-;2285:10;2278:5;2274:22;2267:5;2264:33;2254:61;;2311:1;2308;2301:12;2326:313;2393:6;2401;2454:2;2442:9;2433:7;2429:23;2425:32;2422:52;;;2470:1;2467;2460:12;2422:52;2509:9;2496:23;2528:30;2552:5;2528:30;:::i;:::-;2577:5;2629:2;2614:18;;;;2601:32;;-1:-1:-1;;;2326:313:42:o;3049:366::-;3111:8;3121:6;3175:3;3168:4;3160:6;3156:17;3152:27;3142:55;;3193:1;3190;3183:12;3142:55;-1:-1:-1;3216:20:42;;-1:-1:-1;;;;;3248:30:42;;3245:50;;;3291:1;3288;3281:12;3245:50;3328:4;3320:6;3316:17;3304:29;;3388:3;3381:4;3371:6;3368:1;3364:14;3356:6;3352:27;3348:38;3345:47;3342:67;;;3405:1;3402;3395:12;3420:1093;3586:6;3594;3602;3610;3618;3626;3679:2;3667:9;3658:7;3654:23;3650:32;3647:52;;;3695:1;3692;3685:12;3647:52;3735:9;3722:23;-1:-1:-1;;;;;3805:2:42;3797:6;3794:14;3791:34;;;3821:1;3818;3811:12;3791:34;3860:69;3921:7;3912:6;3901:9;3897:22;3860:69;:::i;:::-;3948:8;;-1:-1:-1;3834:95:42;-1:-1:-1;4036:2:42;4021:18;;4008:32;;-1:-1:-1;4052:16:42;;;4049:36;;;4081:1;4078;4071:12;4049:36;4120:71;4183:7;4172:8;4161:9;4157:24;4120:71;:::i;:::-;4210:8;;-1:-1:-1;4094:97:42;-1:-1:-1;4298:2:42;4283:18;;4270:32;;-1:-1:-1;4314:16:42;;;4311:36;;;4343:1;4340;4333:12;4311:36;;4382:71;4445:7;4434:8;4423:9;4419:24;4382:71;:::i;:::-;3420:1093;;;;-1:-1:-1;3420:1093:42;;-1:-1:-1;3420:1093:42;;4472:8;;3420:1093;-1:-1:-1;;;3420:1093:42:o;4518:245::-;4576:6;4629:2;4617:9;4608:7;4604:23;4600:32;4597:52;;;4645:1;4642;4635:12;4597:52;4684:9;4671:23;4703:30;4727:5;4703:30;:::i;4960:118::-;5046:5;5039:13;5032:21;5025:5;5022:32;5012:60;;5068:1;5065;5058:12;5083:241;5139:6;5192:2;5180:9;5171:7;5167:23;5163:32;5160:52;;;5208:1;5205;5198:12;5160:52;5247:9;5234:23;5266:28;5288:5;5266:28;:::i;5566:247::-;5625:6;5678:2;5666:9;5657:7;5653:23;5649:32;5646:52;;;5694:1;5691;5684:12;5646:52;5733:9;5720:23;5752:31;5777:5;5752:31;:::i;5818:129::-;-1:-1:-1;;;;;5896:5:42;5892:30;5885:5;5882:41;5872:69;;5937:1;5934;5927:12;5952:452;6027:6;6035;6043;6096:2;6084:9;6075:7;6071:23;6067:32;6064:52;;;6112:1;6109;6102:12;6064:52;6151:9;6138:23;6170:30;6194:5;6170:30;:::i;:::-;6219:5;-1:-1:-1;6271:2:42;6256:18;;6243:32;;-1:-1:-1;6327:2:42;6312:18;;6299:32;6340;6299;6340;:::i;:::-;6391:7;6381:17;;;5952:452;;;;;:::o;6614:670::-;6728:6;6736;6744;6752;6805:3;6793:9;6784:7;6780:23;6776:33;6773:53;;;6822:1;6819;6812:12;6773:53;6845;6890:7;6879:9;6845:53;:::i;:::-;6835:63;;6949:2;6938:9;6934:18;6921:32;-1:-1:-1;;;;;6968:6:42;6965:30;6962:50;;;7008:1;7005;6998:12;6962:50;7047:58;7097:7;7088:6;7077:9;7073:22;7047:58;:::i;:::-;7124:8;;-1:-1:-1;7021:84:42;-1:-1:-1;;7209:3:42;7194:19;;7181:33;7223:31;7181:33;7223:31;:::i;:::-;6614:670;;;;-1:-1:-1;6614:670:42;;-1:-1:-1;;6614:670:42:o;7289:156::-;7355:20;;7415:4;7404:16;;7394:27;;7384:55;;7435:1;7432;7425:12;7384:55;7289:156;;;:::o;7450:612::-;7535:6;7543;7551;7559;7612:2;7600:9;7591:7;7587:23;7583:32;7580:52;;;7628:1;7625;7618:12;7580:52;7667:9;7654:23;7686:30;7710:5;7686:30;:::i;:::-;7735:5;-1:-1:-1;7759:36:42;7791:2;7776:18;;7759:36;:::i;:::-;7749:46;;7846:2;7835:9;7831:18;7818:32;-1:-1:-1;;;;;7865:6:42;7862:30;7859:50;;;7905:1;7902;7895:12;7859:50;7944:58;7994:7;7985:6;7974:9;7970:22;7944:58;:::i;:::-;7450:612;;;;-1:-1:-1;8021:8:42;-1:-1:-1;;;;7450:612:42:o;8249:469::-;8368:6;8376;8429:2;8417:9;8408:7;8404:23;8400:32;8397:52;;;8445:1;8442;8435:12;8397:52;8485:9;8472:23;-1:-1:-1;;;;;8510:6:42;8507:30;8504:50;;;8550:1;8547;8540:12;8504:50;8589:69;8650:7;8641:6;8630:9;8626:22;8589:69;:::i;:::-;8677:8;;8563:95;;-1:-1:-1;8249:469:42;-1:-1:-1;;;;8249:469:42:o;8723:1063::-;8840:6;8848;8856;8864;8872;8880;8888;8941:3;8929:9;8920:7;8916:23;8912:33;8909:53;;;8958:1;8955;8948:12;8909:53;8997:9;8984:23;9016:31;9041:5;9016:31;:::i;:::-;9066:5;-1:-1:-1;9118:2:42;9103:18;;9090:32;;-1:-1:-1;9173:2:42;9158:18;;9145:32;-1:-1:-1;;;;;9226:14:42;;;9223:34;;;9253:1;9250;9243:12;9223:34;9292:58;9342:7;9333:6;9322:9;9318:22;9292:58;:::i;:::-;9369:8;;-1:-1:-1;9266:84:42;-1:-1:-1;9456:2:42;9441:18;;9428:32;;-1:-1:-1;9469:33:42;9428:32;9469:33;:::i;:::-;9521:7;;-1:-1:-1;9581:3:42;9566:19;;9553:33;;9598:16;;;9595:36;;;9627:1;9624;9617:12;10044:323;10120:6;10128;10181:2;10169:9;10160:7;10156:23;10152:32;10149:52;;;10197:1;10194;10187:12;10149:52;10236:9;10223:23;10255:31;10280:5;10255:31;:::i;10372:236::-;10457:6;10510:2;10498:9;10489:7;10485:23;10481:32;10478:52;;;10526:1;10523;10516:12;10478:52;10549:53;10594:7;10583:9;10549:53;:::i;11238:127::-;11299:10;11294:3;11290:20;11287:1;11280:31;11330:4;11327:1;11320:15;11354:4;11351:1;11344:15;11370:128;11437:9;;;11458:11;;;11455:37;;;11472:18;;:::i;11503:127::-;11564:10;11559:3;11555:20;11552:1;11545:31;11595:4;11592:1;11585:15;11619:4;11616:1;11609:15;11635:182;11692:6;11745:2;11733:9;11724:7;11720:23;11716:32;11713:52;;;11761:1;11758;11751:12;11713:52;11784:27;11801:9;11784:27;:::i;11822:521::-;11899:4;11905:6;11965:11;11952:25;12059:2;12055:7;12044:8;12028:14;12024:29;12020:43;12000:18;11996:68;11986:96;;12078:1;12075;12068:12;11986:96;12105:33;;12157:20;;;-1:-1:-1;;;;;;12189:30:42;;12186:50;;;12232:1;12229;12222:12;12186:50;12265:4;12253:17;;-1:-1:-1;12296:14:42;12292:27;;;12282:38;;12279:58;;;12333:1;12330;12323:12;12348:334;12550:2;12532:21;;;12589:2;12569:18;;;12562:30;-1:-1:-1;;;12623:2:42;12608:18;;12601:40;12673:2;12658:18;;12348:334::o;13147:209::-;13185:3;-1:-1:-1;;;;;13266:2:42;13259:5;13255:14;13293:2;13284:7;13281:15;13278:41;;13299:18;;:::i;:::-;13348:1;13335:15;;13147:209;-1:-1:-1;;;13147:209:42:o;13361:180::-;-1:-1:-1;;;;;13466:10:42;;;13478;;;13462:27;;13501:11;;;13498:37;;;13515:18;;:::i;:::-;13498:37;13361:180;;;;:::o;13546:331::-;13645:4;13703:11;13690:25;13797:3;13793:8;13782;13766:14;13762:29;13758:44;13738:18;13734:69;13724:97;;13817:1;13814;13807:12;13724:97;13838:33;;;;;13546:331;-1:-1:-1;;13546:331:42:o;13882:266::-;13970:6;13965:3;13958:19;14022:6;14015:5;14008:4;14003:3;13999:14;13986:43;-1:-1:-1;14074:1:42;14049:16;;;14067:4;14045:27;;;14038:38;;;;14130:2;14109:15;;;-1:-1:-1;;14105:29:42;14096:39;;;14092:50;;13882:266::o;14153:1059::-;14463:4;14508:6;14495:20;14524:30;14548:5;14524:30;:::i;:::-;14592:10;14581:22;14563:41;;14667:4;14655:17;;;14642:31;14620:20;;;14613:61;14723:4;14711:17;;14698:31;14738:32;14698:31;14738:32;:::i;:::-;-1:-1:-1;;;;;14812:7:42;14808:32;14801:4;14790:9;14786:20;14779:62;;14877:6;14872:2;14861:9;14857:18;14850:34;14921:3;14915;14904:9;14900:19;14893:32;14948:62;15005:3;14994:9;14990:19;14982:6;14974;14948:62;:::i;:::-;-1:-1:-1;;;;;15047:32:42;;15067:3;15026:19;;15019:61;15117:22;;;15111:3;15096:19;;15089:51;15157:49;15121:6;15191;15183;15157:49;:::i;:::-;15149:57;14153:1059;-1:-1:-1;;;;;;;;;;14153:1059:42:o;15217:127::-;15278:10;15273:3;15269:20;15266:1;15259:31;15309:4;15306:1;15299:15;15333:4;15330:1;15323:15;15349:250;15434:1;15444:113;15458:6;15455:1;15452:13;15444:113;;;15534:11;;;15528:18;15515:11;;;15508:39;15480:2;15473:10;15444:113;;;-1:-1:-1;;15591:1:42;15573:16;;15566:27;15349:250::o;15604:896::-;15683:6;15736:2;15724:9;15715:7;15711:23;15707:32;15704:52;;;15752:1;15749;15742:12;15704:52;15785:9;15779:16;-1:-1:-1;;;;;15855:2:42;15847:6;15844:14;15841:34;;;15871:1;15868;15861:12;15841:34;15909:6;15898:9;15894:22;15884:32;;15954:7;15947:4;15943:2;15939:13;15935:27;15925:55;;15976:1;15973;15966:12;15925:55;16005:2;15999:9;16027:2;16023;16020:10;16017:36;;;16033:18;;:::i;:::-;16108:2;16102:9;16076:2;16162:13;;-1:-1:-1;;16158:22:42;;;16182:2;16154:31;16150:40;16138:53;;;16206:18;;;16226:22;;;16203:46;16200:72;;;16252:18;;:::i;:::-;16292:10;16288:2;16281:22;16327:2;16319:6;16312:18;16367:7;16362:2;16357;16353;16349:11;16345:20;16342:33;16339:53;;;16388:1;16385;16378:12;16339:53;16401:68;16466:2;16461;16453:6;16449:15;16444:2;16440;16436:11;16401:68;:::i;16505:270::-;16546:3;16584:5;16578:12;16611:6;16606:3;16599:19;16627:76;16696:6;16689:4;16684:3;16680:14;16673:4;16666:5;16662:16;16627:76;:::i;:::-;16757:2;16736:15;-1:-1:-1;;16732:29:42;16723:39;;;;16764:4;16719:50;;16505:270;-1:-1:-1;;16505:270:42:o;16780:217::-;16927:2;16916:9;16909:21;16890:4;16947:44;16987:2;16976:9;16972:18;16964:6;16947:44;:::i;17002:249::-;17071:6;17124:2;17112:9;17103:7;17099:23;17095:32;17092:52;;;17140:1;17137;17130:12;17092:52;17172:9;17166:16;17191:30;17215:5;17191:30;:::i;18140:125::-;18205:9;;;18226:10;;;18223:36;;;18239:18;;:::i;19186:245::-;19244:6;19297:2;19285:9;19276:7;19272:23;19268:32;19265:52;;;19313:1;19310;19303:12;19265:52;19352:9;19339:23;19371:30;19395:5;19371:30;:::i;19436:135::-;19475:3;19496:17;;;19493:43;;19516:18;;:::i;:::-;-1:-1:-1;19563:1:42;19552:13;;19436:135::o;19936:505::-;20213:1;20209;20204:3;20200:11;20196:19;20188:6;20184:32;20173:9;20166:51;20253:6;20248:2;20237:9;20233:18;20226:34;20308:6;20300;20296:19;20291:2;20280:9;20276:18;20269:47;20352:3;20347:2;20336:9;20332:18;20325:31;20147:4;20373:62;20430:3;20419:9;20415:19;20407:6;20399;20373:62;:::i;20757:889::-;20980:2;20969:9;20962:21;21038:10;21029:6;21023:13;21019:30;21014:2;21003:9;20999:18;20992:58;21104:4;21096:6;21092:17;21086:24;21081:2;21070:9;21066:18;21059:52;20943:4;21158:2;21150:6;21146:15;21140:22;21199:4;21193:3;21182:9;21178:19;21171:33;21227:51;21273:3;21262:9;21258:19;21244:12;21227:51;:::i;:::-;21213:65;;21327:2;21319:6;21315:15;21309:22;21401:2;21397:7;21385:9;21377:6;21373:22;21369:36;21362:4;21351:9;21347:20;21340:66;21429:40;21462:6;21446:14;21429:40;:::i;:::-;21538:3;21526:16;;;;21520:23;21513:31;21506:39;21500:3;21485:19;;21478:68;-1:-1:-1;;;;;;;;21607:32:42;;;;21600:4;21585:20;;;21578:62;21415:54;20757:889::o;21651:478::-;21721:5;21769:4;21757:9;21752:3;21748:19;21744:30;21741:50;;;21787:1;21784;21777:12;21741:50;21820:4;21814:11;21864:4;21856:6;21852:17;21935:6;21923:10;21920:22;-1:-1:-1;;;;;21887:10:42;21884:34;21881:62;21878:88;;;21946:18;;:::i;:::-;21982:4;21975:24;22047:16;;22032:32;;22118:2;22103:18;;;22097:25;22080:15;;;22073:50;;;;-1:-1:-1;22017:6:42;21651:478;-1:-1:-1;21651:478:42:o;22134:683::-;22238:6;22291:3;22279:9;22270:7;22266:23;22262:33;22259:53;;;22308:1;22305;22298:12;22259:53;22341:2;22335:9;22383:4;22375:6;22371:17;22454:6;22442:10;22439:22;-1:-1:-1;;;;;22406:10:42;22403:34;22400:62;22397:88;;;22465:18;;:::i;:::-;22501:2;22494:22;22540:16;;22525:32;;22600:2;22585:18;;22579:25;22613:30;22579:25;22613:30;:::i;:::-;22671:2;22659:15;;22652:30;22715:70;22777:7;22772:2;22757:18;;22715:70;:::i;:::-;22710:2;22698:15;;22691:95;22702:6;22134:683;-1:-1:-1;;;22134:683:42:o;22822:331::-;22927:9;22938;22980:8;22968:10;22965:24;22962:44;;;23002:1;22999;22992:12;22962:44;23031:6;23021:8;23018:20;23015:40;;;23051:1;23048;23041:12;23015:40;-1:-1:-1;;23077:23:42;;;23122:25;;;;;-1:-1:-1;22822:331:42:o;23158:316::-;-1:-1:-1;;;;;;23278:19:42;;23347:11;;;;23378:1;23370:10;;23367:101;;;23455:2;23449;23442:3;23439:1;23435:11;23432:1;23428:19;23424:28;23420:2;23416:37;23412:46;23403:55;;23367:101;;;23158:316;;;;:::o;23479:323::-;-1:-1:-1;;;;;;23599:19:42;;23675:11;;;;23706:1;23698:10;;23695:101;;;23767:1;23763:11;;;;23760:1;23756:19;23752:28;;;23744:37;23740:46;;;;23479:323;-1:-1:-1;;23479:323:42:o;24216:259::-;24316:6;24369:2;24357:9;24348:7;24344:23;24340:32;24337:52;;;24385:1;24382;24375:12;24337:52;24408:61;24461:7;24450:9;24408:61;:::i;24828:255::-;24948:19;;24987:2;24979:11;;24976:101;;;-1:-1:-1;;25048:2:42;25044:12;;;25041:1;25037:20;25033:33;25022:45;24828:255;;;;:::o;25464:251::-;25534:6;25587:2;25575:9;25566:7;25562:23;25558:32;25555:52;;;25603:1;25600;25593:12;25555:52;25635:9;25629:16;25654:31;25679:5;25654:31;:::i;26660:168::-;26727:6;26753:10;;;26765;;;26749:27;;26788:11;;;26785:37;;;26802:18;;:::i;26833:790::-;27082:3;27120:6;27114:13;27136:66;27195:6;27190:3;27183:4;27175:6;27171:17;27136:66;:::i;:::-;-1:-1:-1;;;;;;27263:3:42;27299:16;;;27295:25;;27224:16;;;27281:40;;;-1:-1:-1;;;;;;27378:3:42;27356:16;;;27352:38;27348:1;27337:13;;27330:61;27426:16;;;27422:25;27418:1;27407:13;;27400:48;27473:13;;27495:78;27473:13;27560:1;27549:13;;27542:4;27530:17;;27495:78;:::i;:::-;27593:20;27615:1;27589:28;;26833:790;-1:-1:-1;;;;;;;26833:790:42:o;28279:245::-;28346:6;28399:2;28387:9;28378:7;28374:23;28370:32;28367:52;;;28415:1;28412;28405:12;28367:52;28447:9;28441:16;28466:28;28488:5;28466:28;:::i;28529:287::-;28658:3;28696:6;28690:13;28712:66;28771:6;28766:3;28759:4;28751:6;28747:17;28712:66;:::i",
- "linkReferences": {},
- "immutableReferences": {
- "30": [
- { "start": 899, "length": 32 },
- { "start": 1646, "length": 32 },
- { "start": 2584, "length": 32 },
- { "start": 3728, "length": 32 },
- { "start": 4077, "length": 32 },
- { "start": 4287, "length": 32 },
- { "start": 5601, "length": 32 },
- { "start": 6112, "length": 32 },
- { "start": 6711, "length": 32 },
- { "start": 7261, "length": 32 },
- { "start": 7446, "length": 32 }
- ]
- }
- },
- "methodIdentifiers": {
- "admin()": "f851a440",
- "allowInitializePath((uint32,bytes32,uint64))": "ff7bd03d",
- "batchIncrement(uint32[],uint8[],bytes[])": "542e7b56",
- "brokenIncrement(uint32,uint8,bytes)": "c95c55be",
- "composedCount()": "257f4e05",
- "count()": "06661abd",
- "eid()": "416ecebf",
- "endpoint()": "5e280f11",
- "inboundCount(uint32)": "56a47289",
- "increment(uint32,uint8,bytes)": "b7abbb5d",
- "initialize(address)": "c4d66de8",
- "isComposeMsgSender((uint32,bytes32,uint64),bytes,address)": "82413eac",
- "isPeer(uint32,bytes32)": "5a0dfe4d",
- "lzCompose(address,bytes32,bytes,address,bytes)": "d0a10260",
- "lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)": "13137d65",
- "lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])": "bd815db0",
- "lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)": "d045a0dc",
- "nextNonce(uint32,bytes32)": "7d25a05e",
- "oApp()": "52ae2879",
- "oAppVersion()": "17442b70",
- "outboundCount(uint32)": "622f17f6",
- "owner()": "8da5cb5b",
- "peers(uint32)": "bb0b6a53",
- "preCrime()": "b731ea0a",
- "quote(uint32,uint8,bytes)": "d22446ce",
- "renounceOwnership()": "715018a6",
- "setAdmin(address)": "704b6c02",
- "setDelegate(address)": "ca5eb5e1",
- "setOrderedNonce(bool)": "5b849af6",
- "setPeer(uint32,bytes32)": "3400288b",
- "setPreCrime(address)": "d4243885",
- "skipInboundNonce(uint32,bytes32,uint64)": "7112f86f",
- "transferOwnership(address)": "f2fde38b",
- "withdraw(address,uint256)": "f3fef3a3"
- },
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_endpoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"optionType\",\"type\":\"uint16\"}],\"name\":\"InvalidOptionType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_eids\",\"type\":\"uint32[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_types\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_options\",\"type\":\"bytes[]\"}],\"name\":\"batchIncrement\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"brokenIncrement\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"composedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"}],\"name\":\"inboundCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"increment\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oApp\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"}],\"name\":\"outboundCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_orderedNonce\",\"type\":\"bool\"}],\"name\":\"setOrderedNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skipInboundNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"_0\":\"peer The address of the peer associated with the specified endpoint.\"}},\"preCrime()\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Returns the peer address (OApp instance) associated with a specific endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oapp/examples/OmniCounterUpgradeable.sol\":\"OmniCounterUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/oapp/OAppCoreUpgradeable.sol\":{\"keccak256\":\"0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4\",\"dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1\"]},\"contracts/oapp/OAppReceiverUpgradeable.sol\":{\"keccak256\":\"0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96\",\"dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u\"]},\"contracts/oapp/OAppSenderUpgradeable.sol\":{\"keccak256\":\"0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07\",\"dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w\"]},\"contracts/oapp/OAppUpgradeable.sol\":{\"keccak256\":\"0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf\",\"dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy\"]},\"contracts/oapp/examples/OmniCounterUpgradeable.sol\":{\"keccak256\":\"0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d\",\"dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG\"]},\"contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol\":{\"keccak256\":\"0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990\",\"dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7\"]},\"node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol\":{\"keccak256\":\"0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141\",\"dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol\":{\"keccak256\":\"0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d\",\"dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol\":{\"keccak256\":\"0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f\",\"dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol\":{\"keccak256\":\"0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2\",\"dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol\":{\"keccak256\":\"0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f\",\"dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}",
- "metadata": {
- "compiler": { "version": "0.8.22+commit.4fc1097e" },
- "language": "Solidity",
- "output": {
- "abi": [
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_endpoint",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "constructor"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "target", "type": "address" }
- ],
- "type": "error",
- "name": "AddressEmptyCode"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "account", "type": "address" }
- ],
- "type": "error",
- "name": "AddressInsufficientBalance"
- },
- { "inputs": [], "type": "error", "name": "FailedInnerCall" },
- { "inputs": [], "type": "error", "name": "InvalidDelegate" },
- { "inputs": [], "type": "error", "name": "InvalidEndpointCall" },
- { "inputs": [], "type": "error", "name": "InvalidInitialization" },
- {
- "inputs": [
- { "internalType": "uint16", "name": "optionType", "type": "uint16" }
- ],
- "type": "error",
- "name": "InvalidOptionType"
- },
- { "inputs": [], "type": "error", "name": "LzTokenUnavailable" },
- {
- "inputs": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" }
- ],
- "type": "error",
- "name": "NoPeer"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "msgValue", "type": "uint256" }
- ],
- "type": "error",
- "name": "NotEnoughNative"
- },
- { "inputs": [], "type": "error", "name": "NotInitializing" },
- {
- "inputs": [
- { "internalType": "address", "name": "addr", "type": "address" }
- ],
- "type": "error",
- "name": "OnlyEndpoint"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "eid", "type": "uint32" },
- { "internalType": "bytes32", "name": "sender", "type": "bytes32" }
- ],
- "type": "error",
- "name": "OnlyPeer"
- },
- { "inputs": [], "type": "error", "name": "OnlySelf" },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "type": "error",
- "name": "OwnableInvalidOwner"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "account", "type": "address" }
- ],
- "type": "error",
- "name": "OwnableUnauthorizedAccount"
- },
- {
- "inputs": [
- { "internalType": "uint8", "name": "bits", "type": "uint8" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "type": "error",
- "name": "SafeCastOverflowedUintDowncast"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "token", "type": "address" }
- ],
- "type": "error",
- "name": "SafeERC20FailedOperation"
- },
- {
- "inputs": [
- { "internalType": "bytes", "name": "result", "type": "bytes" }
- ],
- "type": "error",
- "name": "SimulationResult"
- },
- {
- "inputs": [
- {
- "internalType": "uint64",
- "name": "version",
- "type": "uint64",
- "indexed": false
- }
- ],
- "type": "event",
- "name": "Initialized",
- "anonymous": false
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "previousOwner",
- "type": "address",
- "indexed": true
- },
- {
- "internalType": "address",
- "name": "newOwner",
- "type": "address",
- "indexed": true
- }
- ],
- "type": "event",
- "name": "OwnershipTransferred",
- "anonymous": false
- },
- {
- "inputs": [
- {
- "internalType": "uint32",
- "name": "eid",
- "type": "uint32",
- "indexed": false
- },
- {
- "internalType": "bytes32",
- "name": "peer",
- "type": "bytes32",
- "indexed": false
- }
- ],
- "type": "event",
- "name": "PeerSet",
- "anonymous": false
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "preCrimeAddress",
- "type": "address",
- "indexed": false
- }
- ],
- "type": "event",
- "name": "PreCrimeSet",
- "anonymous": false
- },
- { "inputs": [], "stateMutability": "payable", "type": "fallback" },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "admin",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [
- {
- "internalType": "struct Origin",
- "name": "origin",
- "type": "tuple",
- "components": [
- {
- "internalType": "uint32",
- "name": "srcEid",
- "type": "uint32"
- },
- {
- "internalType": "bytes32",
- "name": "sender",
- "type": "bytes32"
- },
- { "internalType": "uint64", "name": "nonce", "type": "uint64" }
- ]
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "allowInitializePath",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
- },
- {
- "inputs": [
- { "internalType": "uint32[]", "name": "_eids", "type": "uint32[]" },
- { "internalType": "uint8[]", "name": "_types", "type": "uint8[]" },
- { "internalType": "bytes[]", "name": "_options", "type": "bytes[]" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "batchIncrement"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" },
- { "internalType": "uint8", "name": "_type", "type": "uint8" },
- { "internalType": "bytes", "name": "_options", "type": "bytes" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "brokenIncrement"
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "composedCount",
- "outputs": [
- { "internalType": "uint256", "name": "", "type": "uint256" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "count",
- "outputs": [
- { "internalType": "uint256", "name": "", "type": "uint256" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "eid",
- "outputs": [
- { "internalType": "uint32", "name": "", "type": "uint32" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "endpoint",
- "outputs": [
- {
- "internalType": "contract ILayerZeroEndpointV2",
- "name": "",
- "type": "address"
- }
- ]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "srcEid", "type": "uint32" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "inboundCount",
- "outputs": [
- { "internalType": "uint256", "name": "count", "type": "uint256" }
- ]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" },
- { "internalType": "uint8", "name": "_type", "type": "uint8" },
- { "internalType": "bytes", "name": "_options", "type": "bytes" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "increment"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_delegate",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "initialize"
- },
- {
- "inputs": [
- {
- "internalType": "struct Origin",
- "name": "",
- "type": "tuple",
- "components": [
- {
- "internalType": "uint32",
- "name": "srcEid",
- "type": "uint32"
- },
- {
- "internalType": "bytes32",
- "name": "sender",
- "type": "bytes32"
- },
- { "internalType": "uint64", "name": "nonce", "type": "uint64" }
- ]
- },
- { "internalType": "bytes", "name": "", "type": "bytes" },
- { "internalType": "address", "name": "_sender", "type": "address" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "isComposeMsgSender",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" },
- { "internalType": "bytes32", "name": "_peer", "type": "bytes32" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "isPeer",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
- },
- {
- "inputs": [
- { "internalType": "address", "name": "_oApp", "type": "address" },
- { "internalType": "bytes32", "name": "", "type": "bytes32" },
- { "internalType": "bytes", "name": "_message", "type": "bytes" },
- { "internalType": "address", "name": "", "type": "address" },
- { "internalType": "bytes", "name": "", "type": "bytes" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "lzCompose"
- },
- {
- "inputs": [
- {
- "internalType": "struct Origin",
- "name": "_origin",
- "type": "tuple",
- "components": [
- {
- "internalType": "uint32",
- "name": "srcEid",
- "type": "uint32"
- },
- {
- "internalType": "bytes32",
- "name": "sender",
- "type": "bytes32"
- },
- { "internalType": "uint64", "name": "nonce", "type": "uint64" }
- ]
- },
- { "internalType": "bytes32", "name": "_guid", "type": "bytes32" },
- { "internalType": "bytes", "name": "_message", "type": "bytes" },
- {
- "internalType": "address",
- "name": "_executor",
- "type": "address"
- },
- { "internalType": "bytes", "name": "_extraData", "type": "bytes" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "lzReceive"
- },
- {
- "inputs": [
- {
- "internalType": "struct InboundPacket[]",
- "name": "_packets",
- "type": "tuple[]",
- "components": [
- {
- "internalType": "struct Origin",
- "name": "origin",
- "type": "tuple",
- "components": [
- {
- "internalType": "uint32",
- "name": "srcEid",
- "type": "uint32"
- },
- {
- "internalType": "bytes32",
- "name": "sender",
- "type": "bytes32"
- },
- {
- "internalType": "uint64",
- "name": "nonce",
- "type": "uint64"
- }
- ]
- },
- {
- "internalType": "uint32",
- "name": "dstEid",
- "type": "uint32"
- },
- {
- "internalType": "address",
- "name": "receiver",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "guid",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- },
- {
- "internalType": "address",
- "name": "executor",
- "type": "address"
- },
- { "internalType": "bytes", "name": "message", "type": "bytes" },
- {
- "internalType": "bytes",
- "name": "extraData",
- "type": "bytes"
- }
- ]
- }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "lzReceiveAndRevert"
- },
- {
- "inputs": [
- {
- "internalType": "struct Origin",
- "name": "_origin",
- "type": "tuple",
- "components": [
- {
- "internalType": "uint32",
- "name": "srcEid",
- "type": "uint32"
- },
- {
- "internalType": "bytes32",
- "name": "sender",
- "type": "bytes32"
- },
- { "internalType": "uint64", "name": "nonce", "type": "uint64" }
- ]
- },
- { "internalType": "bytes32", "name": "_guid", "type": "bytes32" },
- { "internalType": "bytes", "name": "_message", "type": "bytes" },
- {
- "internalType": "address",
- "name": "_executor",
- "type": "address"
- },
- { "internalType": "bytes", "name": "_extraData", "type": "bytes" }
- ],
- "stateMutability": "payable",
- "type": "function",
- "name": "lzReceiveSimulate"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_srcEid", "type": "uint32" },
- { "internalType": "bytes32", "name": "_sender", "type": "bytes32" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "nextNonce",
- "outputs": [
- { "internalType": "uint64", "name": "", "type": "uint64" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "oApp",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "pure",
- "type": "function",
- "name": "oAppVersion",
- "outputs": [
- {
- "internalType": "uint64",
- "name": "senderVersion",
- "type": "uint64"
- },
- {
- "internalType": "uint64",
- "name": "receiverVersion",
- "type": "uint64"
- }
- ]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "dstEid", "type": "uint32" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "outboundCount",
- "outputs": [
- { "internalType": "uint256", "name": "count", "type": "uint256" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "owner",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "peers",
- "outputs": [
- { "internalType": "bytes32", "name": "", "type": "bytes32" }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "view",
- "type": "function",
- "name": "preCrime",
- "outputs": [
- { "internalType": "address", "name": "", "type": "address" }
- ]
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" },
- { "internalType": "uint8", "name": "_type", "type": "uint8" },
- { "internalType": "bytes", "name": "_options", "type": "bytes" }
- ],
- "stateMutability": "view",
- "type": "function",
- "name": "quote",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "nativeFee",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "lzTokenFee",
- "type": "uint256"
- }
- ]
- },
- {
- "inputs": [],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "renounceOwnership"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "_admin", "type": "address" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setAdmin"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_delegate",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setDelegate"
- },
- {
- "inputs": [
- { "internalType": "bool", "name": "_orderedNonce", "type": "bool" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setOrderedNonce"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_eid", "type": "uint32" },
- { "internalType": "bytes32", "name": "_peer", "type": "bytes32" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setPeer"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_preCrime",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "setPreCrime"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "_srcEid", "type": "uint32" },
- { "internalType": "bytes32", "name": "_sender", "type": "bytes32" },
- { "internalType": "uint64", "name": "_nonce", "type": "uint64" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "skipInboundNonce"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "newOwner", "type": "address" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "transferOwnership"
- },
- {
- "inputs": [
- {
- "internalType": "address payable",
- "name": "_to",
- "type": "address"
- },
- { "internalType": "uint256", "name": "_amount", "type": "uint256" }
- ],
- "stateMutability": "nonpayable",
- "type": "function",
- "name": "withdraw"
- },
- { "inputs": [], "stateMutability": "payable", "type": "receive" }
- ],
- "devdoc": {
- "kind": "dev",
- "methods": {
- "allowInitializePath((uint32,bytes32,uint64))": {
- "details": "This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.",
- "params": {
- "origin": "The origin information containing the source endpoint and sender address."
- },
- "returns": { "_0": "Whether the path has been initialized." }
- },
- "isComposeMsgSender((uint32,bytes32,uint64),bytes,address)": {
- "details": "_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.",
- "params": { "_sender": "The sender address." },
- "returns": { "_0": "isSender Is a valid sender." }
- },
- "isPeer(uint32,bytes32)": {
- "details": "checks if the specified peer is considered 'trusted' by the OApp.",
- "params": {
- "_eid": "The endpoint Id to check.",
- "_peer": "The peer to check."
- },
- "returns": {
- "_0": "Whether the peer passed is considered 'trusted' by the OApp."
- }
- },
- "lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)": {
- "details": "Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.",
- "params": {
- "_executor": "The address of the executor for the received message.",
- "_extraData": "Additional arbitrary data provided by the corresponding executor.",
- "_guid": "The unique identifier for the received LayerZero message.",
- "_message": "The payload of the received message.",
- "_origin": "The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message."
- }
- },
- "lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])": {
- "details": "Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.",
- "params": {
- "_packets": "An array of InboundPacket objects representing received packets to be delivered."
- }
- },
- "lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)": {
- "details": "Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.",
- "params": {
- "_executor": "The executor address for the packet.",
- "_extraData": "Additional data for the packet.",
- "_guid": "The unique identifier of the packet.",
- "_message": "The message payload of the packet.",
- "_origin": "The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message."
- }
- },
- "oApp()": {
- "details": "Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.",
- "returns": { "_0": "The address of the OApp contract." }
- },
- "oAppVersion()": {
- "returns": {
- "receiverVersion": "The version of the OAppReceiver.sol implementation.",
- "senderVersion": "The version of the OAppSender.sol implementation."
- }
- },
- "owner()": { "details": "Returns the address of the current owner." },
- "peers(uint32)": {
- "params": { "_eid": "The endpoint ID." },
- "returns": {
- "_0": "peer The address of the peer associated with the specified endpoint."
- }
- },
- "preCrime()": {
- "details": "Retrieves the address of the preCrime contract implementation.",
- "returns": { "_0": "The address of the preCrime contract." }
- },
- "renounceOwnership()": {
- "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
- },
- "setDelegate(address)": {
- "details": "Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.",
- "params": { "_delegate": "The address of the delegate to be set." }
- },
- "setPeer(uint32,bytes32)": {
- "details": "Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.",
- "params": {
- "_eid": "The endpoint ID.",
- "_peer": "The address of the peer to be associated with the corresponding endpoint."
- }
- },
- "setPreCrime(address)": {
- "details": "Sets the preCrime contract address.",
- "params": { "_preCrime": "The address of the preCrime contract." }
- },
- "transferOwnership(address)": {
- "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
- }
- },
- "version": 1
- },
- "userdoc": {
- "kind": "user",
- "methods": {
- "allowInitializePath((uint32,bytes32,uint64))": {
- "notice": "Checks if the path initialization is allowed based on the provided origin."
- },
- "endpoint()": {
- "notice": "Retrieves the LayerZero endpoint associated with the OApp."
- },
- "isComposeMsgSender((uint32,bytes32,uint64),bytes,address)": {
- "notice": "Indicates whether an address is an approved composeMsg sender to the Endpoint."
- },
- "oAppVersion()": {
- "notice": "Retrieves the OApp version information."
- },
- "peers(uint32)": {
- "notice": "Returns the peer address (OApp instance) associated with a specific endpoint."
- },
- "setDelegate(address)": {
- "notice": "Sets the delegate address for the OApp."
- },
- "setPeer(uint32,bytes32)": {
- "notice": "Sets the peer address (OApp instance) for a corresponding endpoint."
- }
- },
- "version": 1
- }
- },
- "settings": {
- "remappings": [
- "@layerzerolabs/=node_modules/@layerzerolabs/",
- "@openzeppelin/=node_modules/@openzeppelin/",
- "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/",
- "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/",
- "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"
- ],
- "optimizer": { "enabled": true, "runs": 200 },
- "metadata": { "bytecodeHash": "ipfs" },
- "compilationTarget": {
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": "OmniCounterUpgradeable"
- },
- "evmVersion": "paris",
- "libraries": {}
- },
- "sources": {
- "contracts/oapp/OAppCoreUpgradeable.sol": {
- "keccak256": "0xf3b33d8469370efb5906962bcba8a98140314ef097f9bd5fdf335d9c56b8d57e",
- "urls": [
- "bzz-raw://725ba3642f28d7b9f855700a08ea5ecb3d52c04d1134d81f252329ef4b47d1c4",
- "dweb:/ipfs/QmfFTd1jHx5q794z7PXnD8Sx1uTQcG82vWsA62jatxkgR1"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppReceiverUpgradeable.sol": {
- "keccak256": "0x52746e6db8e7a7b355af74fdd067cff8b3f17ef6b442a9f76f029549fdb189fa",
- "urls": [
- "bzz-raw://13adc3d29f3d315006af12d024f8aecb45653211ed53f556f9012131e7a90d96",
- "dweb:/ipfs/QmRsGRV2ZLxvS7tcSxEYiemmo5sJhPxDd7K86dWrTaLH1u"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppSenderUpgradeable.sol": {
- "keccak256": "0xb2814a245a593ad470cc9cbbe5c2132e3de25edc69ae752b56673239c2a4baa2",
- "urls": [
- "bzz-raw://9ab142c6a867e48779e1649ae8cb01d2ee8c741ceb007de817d45264e4ba9c07",
- "dweb:/ipfs/QmNXG6dEqCWLnrzT1VsoVzEw2fKPz9z1gDF79JnoCXFD4w"
- ],
- "license": "MIT"
- },
- "contracts/oapp/OAppUpgradeable.sol": {
- "keccak256": "0x57b81977f3c65b7ff7442a6c919db743963b11af9910bd5cd5904c7f1cb84969",
- "urls": [
- "bzz-raw://5c571181e4f5f73a7df8444de43a79c18a8cfdbfe625bfdbcd3c6012cc36cacf",
- "dweb:/ipfs/QmRdtvgKXjWvWWcuS7uK6NWoSGP4oPU6LrHc9xr2xHL2xy"
- ],
- "license": "MIT"
- },
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": {
- "keccak256": "0xd31d65327f10f7dc0558c60f8bd9d3ebc9c1d60282930d7546f5c0b190724286",
- "urls": [
- "bzz-raw://15aa5422ff9c107a5f80f753309dd66cb1c6d34f7f4d79340aa72cd3344a8c3d",
- "dweb:/ipfs/QmP1QFoUjPLyHeTma91TSPeBx2tkCpjkKX46id215fQ9bG"
- ],
- "license": "MIT"
- },
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
- "keccak256": "0x5ba2fd4966328c961c9a55b5d376f7252c560d59742834e0d0e2105510d01d54",
- "urls": [
- "bzz-raw://5961939749e152b1768e695164cc7846e5bc31283af055911d85ecc344a33990",
- "dweb:/ipfs/QmZoXDE3A98JkwNPro5555Tje6R5HMK9oxgg5qhHZNBha7"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": {
- "keccak256": "0x2beee03cdf59a9bc72e94d08b69cb2e908725f4ceabb48651494938100e21e35",
- "urls": [
- "bzz-raw://d88e121a39e74309f3575417df2318e2d2ee8bc8314e68dbf78544a9c393b141",
- "dweb:/ipfs/QmRojBRAyENK21HnjevAWeoZZxtWkYZubB9Y78vCJPYeU6"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": {
- "keccak256": "0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49",
- "urls": [
- "bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf",
- "dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": {
- "keccak256": "0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3",
- "urls": [
- "bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083",
- "dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": {
- "keccak256": "0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0",
- "urls": [
- "bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933",
- "dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": {
- "keccak256": "0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c",
- "urls": [
- "bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0",
- "dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": {
- "keccak256": "0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc",
- "urls": [
- "bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b",
- "dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": {
- "keccak256": "0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972",
- "urls": [
- "bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927",
- "dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": {
- "keccak256": "0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901",
- "urls": [
- "bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d",
- "dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": {
- "keccak256": "0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e",
- "urls": [
- "bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6",
- "dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": {
- "keccak256": "0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625",
- "urls": [
- "bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97",
- "dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": {
- "keccak256": "0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb",
- "urls": [
- "bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1",
- "dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": {
- "keccak256": "0x5c0db161cef6603c3b256d4220f489419e7478ef775e52a80056654129c61875",
- "urls": [
- "bzz-raw://a33245d0fdd3992bb56b31d1840108d36bb46c8d617b659ef1af8dd7ed86302d",
- "dweb:/ipfs/QmWyBqT7Tdrfn5zz9xYM3V1PBtfAZAVwwCrrKwwfi3wMQK"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": {
- "keccak256": "0xaad3c72ef43480d2253fd48b394e8fb7286d009991d2bc4e61be58ce48ac5ee9",
- "urls": [
- "bzz-raw://b8c02b14f954416ba2148b389c87da8378ac8dd16ba3d458cbbfba8b0fd8639f",
- "dweb:/ipfs/Qmd2EEQhYL2VmgJi1V4uiHM2WcYxF9iBtxSgcFkbS21rQD"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": {
- "keccak256": "0x621c6090fc432f94a99f677a95d72b75f56db89ddc5fc870669777a313587c28",
- "urls": [
- "bzz-raw://69086166f16d29e30c5eb9ca2f97afb27569afe619807d79736833a809a512d2",
- "dweb:/ipfs/QmcZqXjFuVdTrfbteKBF3GuEpjVFZ2YNZTa3J87dyLsqav"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": {
- "keccak256": "0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680",
- "urls": [
- "bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09",
- "dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW"
- ],
- "license": "LZBL-1.2"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": {
- "keccak256": "0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58",
- "urls": [
- "bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd",
- "dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": {
- "keccak256": "0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d",
- "urls": [
- "bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2",
- "dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol": {
- "keccak256": "0x9ba881395fe0906e40d9222c318b8c74d45cc4035369db4a4c6c7d5de2c42378",
- "urls": [
- "bzz-raw://bae80a870a797838741f3fcffc57ae6216487ea0640a0f9707efd13a7830372f",
- "dweb:/ipfs/QmVHqnqVP9De8X2ZiDRAn6LXnoUD3Xm7PHWGYrRD1EuBEG"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": {
- "keccak256": "0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2",
- "urls": [
- "bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a",
- "dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": {
- "keccak256": "0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84",
- "urls": [
- "bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e",
- "dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": {
- "keccak256": "0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6",
- "urls": [
- "bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc",
- "dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4"
- ],
- "license": "MIT"
- },
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": {
- "keccak256": "0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a",
- "urls": [
- "bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535",
- "dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq"
- ],
- "license": "Unlicense"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
- "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
- "urls": [
- "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
- "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
- "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
- "urls": [
- "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
- "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
- "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
- "urls": [
- "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
- "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
- "keccak256": "0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70",
- "urls": [
- "bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c",
- "dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
- "keccak256": "0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff",
- "urls": [
- "bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d",
- "dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
- "keccak256": "0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386",
- "urls": [
- "bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0",
- "dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/Address.sol": {
- "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721",
- "urls": [
- "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245",
- "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
- "keccak256": "0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b",
- "urls": [
- "bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df",
- "dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"
- ],
- "license": "MIT"
- },
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
- "keccak256": "0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe",
- "urls": [
- "bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c",
- "dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj"
- ],
- "license": "MIT"
- }
- },
- "version": 1
- },
- "id": 5
-}
diff --git a/packages/oapp-evm-upgradeable/artifacts/OwnableUpgradeable.sol/OwnableUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/OwnableUpgradeable.sol/OwnableUpgradeable.json
index 01f0055e6..801d8d625 100644
--- a/packages/oapp-evm-upgradeable/artifacts/OwnableUpgradeable.sol/OwnableUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/OwnableUpgradeable.sol/OwnableUpgradeable.json
@@ -216,5 +216,5 @@
},
"version": 1
},
- "id": 33
+ "id": 94
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/PacketV1Codec.sol/PacketV1Codec.json b/packages/oapp-evm-upgradeable/artifacts/PacketV1Codec.sol/PacketV1Codec.json
index f826d808e..93f175013 100644
--- a/packages/oapp-evm-upgradeable/artifacts/PacketV1Codec.sol/PacketV1Codec.json
+++ b/packages/oapp-evm-upgradeable/artifacts/PacketV1Codec.sol/PacketV1Codec.json
@@ -2,12 +2,12 @@
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0ce013108169e9df786350680ff49dd00a24879d7e16ea6a7529f7d76898a4164736f6c63430008160033",
- "sourceMap": "179:3486:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;179:3486:23;;;;;;;;;;;;;;;;;",
+ "sourceMap": "179:3486:50:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;179:3486:50;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0ce013108169e9df786350680ff49dd00a24879d7e16ea6a7529f7d76898a4164736f6c63430008160033",
- "sourceMap": "179:3486:23:-:0;;;;;;;;",
+ "sourceMap": "179:3486:50:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -120,5 +120,5 @@
},
"version": 1
},
- "id": 23
+ "id": 50
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json b/packages/oapp-evm-upgradeable/artifacts/PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json
index a53b8aa44..12410dea3 100644
--- a/packages/oapp-evm-upgradeable/artifacts/PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json
@@ -265,7 +265,7 @@
"transferOwnership(address)": "f2fde38b",
"version()": "54fd4d50"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPreCrimePeers\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatchSize\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_maxBatchSize\",\"type\":\"uint64\"}],\"name\":\"setMaxBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"_preCrimePeers\",\"type\":\"tuple[]\"}],\"name\":\"setPreCrimePeers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"simulator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/extensions/PreCrimeE1Upgradeable.sol\":\"PreCrimeE1Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":{\"keccak256\":\"0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768\",\"dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT\"]},\"contracts/precrime/extensions/PreCrimeE1Upgradeable.sol\":{\"keccak256\":\"0x531c162e9e1028a102cdbb41bbe5495c1eb1982f07f7832f5c25d6c4b99d5ce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da7d4263f0a960ef708fa1524e81b085a1c2c25a3596883acecb33703644c964\",\"dweb:/ipfs/QmZUtqBzZFHv7ZVtxfHZi6FjfXT71BvGRnxCkbubcvaWWt\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol\":{\"keccak256\":\"0xb6a446c0b622566f8c2e2ae4c32208bcc3f815c5f5657a27fa48d583e31f7b7d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0343497152a1e46aaff52ddede84eaaa1362910cc26b1424940863233a0271cc\",\"dweb:/ipfs/QmZzytxauQHKEgMFJofnDq1Kv6VYhxrG3vVoXWnmDPezwd\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol\":{\"keccak256\":\"0xdc7e072cf3064081a8edf4a286ca43ddecc24330f2923d96f416f9d3f6538447\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a835b0df6e900240d2f27412e23d8b2f300989fd30261b6f9b1e9d7125eca782\",\"dweb:/ipfs/QmPoVWHQyYCvSj5M7nLJmoc4ZyqR2xW5dU9LbTEnUbmJwB\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPreCrimePeers\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatchSize\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_maxBatchSize\",\"type\":\"uint64\"}],\"name\":\"setMaxBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"_preCrimePeers\",\"type\":\"tuple[]\"}],\"name\":\"setPreCrimePeers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"simulator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/extensions/PreCrimeE1Upgradeable.sol\":\"PreCrimeE1Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":{\"keccak256\":\"0x39363bcc120c0dab9abea3c45eab1c281cd6beb85b4599e80d6b519caa33d54e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b6c6bd80a4f884fcbb1b07dbdc537f15fb94c5a942242ae04fa31cbc5cdce9d\",\"dweb:/ipfs/QmNeZfiWzvDaG1JyMLWmUhiuLTY3bRaDq52i9aN7ysqrxM\"]},\"contracts/precrime/extensions/PreCrimeE1Upgradeable.sol\":{\"keccak256\":\"0x531c162e9e1028a102cdbb41bbe5495c1eb1982f07f7832f5c25d6c4b99d5ce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da7d4263f0a960ef708fa1524e81b085a1c2c25a3596883acecb33703644c964\",\"dweb:/ipfs/QmZUtqBzZFHv7ZVtxfHZi6FjfXT71BvGRnxCkbubcvaWWt\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol\":{\"keccak256\":\"0xb6a446c0b622566f8c2e2ae4c32208bcc3f815c5f5657a27fa48d583e31f7b7d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0343497152a1e46aaff52ddede84eaaa1362910cc26b1424940863233a0271cc\",\"dweb:/ipfs/QmZzytxauQHKEgMFJofnDq1Kv6VYhxrG3vVoXWnmDPezwd\"]},\"node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol\":{\"keccak256\":\"0xdc7e072cf3064081a8edf4a286ca43ddecc24330f2923d96f416f9d3f6538447\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a835b0df6e900240d2f27412e23d8b2f300989fd30261b6f9b1e9d7125eca782\",\"dweb:/ipfs/QmPoVWHQyYCvSj5M7nLJmoc4ZyqR2xW5dU9LbTEnUbmJwB\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -580,10 +580,10 @@
},
"sources": {
"contracts/precrime/PreCrimeUpgradeable.sol": {
- "keccak256": "0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6",
+ "keccak256": "0x39363bcc120c0dab9abea3c45eab1c281cd6beb85b4599e80d6b519caa33d54e",
"urls": [
- "bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768",
- "dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT"
+ "bzz-raw://2b6c6bd80a4f884fcbb1b07dbdc537f15fb94c5a942242ae04fa31cbc5cdce9d",
+ "dweb:/ipfs/QmNeZfiWzvDaG1JyMLWmUhiuLTY3bRaDq52i9aN7ysqrxM"
],
"license": "MIT"
},
@@ -758,5 +758,5 @@
},
"version": 1
},
- "id": 8
+ "id": 7
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json b/packages/oapp-evm-upgradeable/artifacts/PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json
index 98f32808b..55e2c4306 100644
--- a/packages/oapp-evm-upgradeable/artifacts/PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json
+++ b/packages/oapp-evm-upgradeable/artifacts/PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json
@@ -257,7 +257,7 @@
"transferOwnership(address)": "f2fde38b",
"version()": "54fd4d50"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPreCrimePeers\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatchSize\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_maxBatchSize\",\"type\":\"uint64\"}],\"name\":\"setMaxBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"_preCrimePeers\",\"type\":\"tuple[]\"}],\"name\":\"setPreCrimePeers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"simulator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":\"PreCrimeUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":{\"keccak256\":\"0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768\",\"dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPreCrimePeers\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatchSize\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_maxBatchSize\",\"type\":\"uint64\"}],\"name\":\"setMaxBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"preCrime\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oApp\",\"type\":\"bytes32\"}],\"internalType\":\"struct PreCrimePeer[]\",\"name\":\"_preCrimePeers\",\"type\":\"tuple[]\"}],\"name\":\"setPreCrimePeers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"simulator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":\"PreCrimeUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/precrime/PreCrimeUpgradeable.sol\":{\"keccak256\":\"0x39363bcc120c0dab9abea3c45eab1c281cd6beb85b4599e80d6b519caa33d54e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b6c6bd80a4f884fcbb1b07dbdc537f15fb94c5a942242ae04fa31cbc5cdce9d\",\"dweb:/ipfs/QmNeZfiWzvDaG1JyMLWmUhiuLTY3bRaDq52i9aN7ysqrxM\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.22+commit.4fc1097e" },
"language": "Solidity",
@@ -564,10 +564,10 @@
},
"sources": {
"contracts/precrime/PreCrimeUpgradeable.sol": {
- "keccak256": "0xcfe94258c95dc4661102723956fa7edd95b41d5d2413fae989b35dda20a367b6",
+ "keccak256": "0x39363bcc120c0dab9abea3c45eab1c281cd6beb85b4599e80d6b519caa33d54e",
"urls": [
- "bzz-raw://20b8f3c21a5cc21ea46cfd0446ea5d9554015e9dce00de07d51e93487ae1c768",
- "dweb:/ipfs/QmcVhZcm7oTh2HufH9HNU7hGTgUuT76d5AGwRyhBaVhsdT"
+ "bzz-raw://2b6c6bd80a4f884fcbb1b07dbdc537f15fb94c5a942242ae04fa31cbc5cdce9d",
+ "dweb:/ipfs/QmNeZfiWzvDaG1JyMLWmUhiuLTY3bRaDq52i9aN7ysqrxM"
],
"license": "MIT"
},
@@ -710,5 +710,5 @@
},
"version": 1
},
- "id": 7
+ "id": 6
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/SafeCast.sol/SafeCast.json b/packages/oapp-evm-upgradeable/artifacts/SafeCast.sol/SafeCast.json
index 08d98838d..f0cebf830 100644
--- a/packages/oapp-evm-upgradeable/artifacts/SafeCast.sol/SafeCast.json
+++ b/packages/oapp-evm-upgradeable/artifacts/SafeCast.sol/SafeCast.json
@@ -33,12 +33,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220feb2fe65c7c2cc4eaad1299f6f4f2e4f0fc5bf23868312cd146f1e939980d26364736f6c63430008160033",
- "sourceMap": "764:33927:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;764:33927:41;;;;;;;;;;;;;;;;;",
+ "sourceMap": "764:33927:118:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;764:33927:118;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220feb2fe65c7c2cc4eaad1299f6f4f2e4f0fc5bf23868312cd146f1e939980d26364736f6c63430008160033",
- "sourceMap": "764:33927:41:-:0;;;;;;;;",
+ "sourceMap": "764:33927:118:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -110,5 +110,5 @@
},
"version": 1
},
- "id": 41
+ "id": 118
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/SafeERC20.sol/SafeERC20.json b/packages/oapp-evm-upgradeable/artifacts/SafeERC20.sol/SafeERC20.json
index 9ad3693ef..1ccadb872 100644
--- a/packages/oapp-evm-upgradeable/artifacts/SafeERC20.sol/SafeERC20.json
+++ b/packages/oapp-evm-upgradeable/artifacts/SafeERC20.sol/SafeERC20.json
@@ -27,12 +27,12 @@
],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205836b9026895b357e7044b3e0714419961a5e75abc39c4d7a9aa0b4b814af6c464736f6c63430008160033",
- "sourceMap": "751:5018:38:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;751:5018:38;;;;;;;;;;;;;;;;;",
+ "sourceMap": "751:5018:109:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;751:5018:109;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205836b9026895b357e7044b3e0714419961a5e75abc39c4d7a9aa0b4b814af6c464736f6c63430008160033",
- "sourceMap": "751:5018:38:-:0;;;;;;;;",
+ "sourceMap": "751:5018:109:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
@@ -122,5 +122,5 @@
},
"version": 1
},
- "id": 38
+ "id": 109
}
diff --git a/packages/oapp-evm-upgradeable/artifacts/build-info/1cc3caee39d54c2c55f4148e381aa345.json b/packages/oapp-evm-upgradeable/artifacts/build-info/1cc3caee39d54c2c55f4148e381aa345.json
deleted file mode 100644
index ad3a471ac..000000000
--- a/packages/oapp-evm-upgradeable/artifacts/build-info/1cc3caee39d54c2c55f4148e381aa345.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "id": "1cc3caee39d54c2c55f4148e381aa345",
- "source_id_to_path": {
- "0": "contracts/oapp/OAppCoreUpgradeable.sol",
- "1": "contracts/oapp/OAppReceiverUpgradeable.sol",
- "2": "contracts/oapp/OAppSenderUpgradeable.sol",
- "3": "contracts/oapp/OAppUpgradeable.sol",
- "4": "contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol",
- "5": "contracts/oapp/examples/OmniCounterUpgradeable.sol",
- "6": "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
- "7": "contracts/precrime/PreCrimeUpgradeable.sol",
- "8": "contracts/precrime/extensions/PreCrimeE1Upgradeable.sol",
- "9": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
- "10": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
- "11": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "12": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
- "13": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
- "14": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "15": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "16": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "17": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
- "18": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
- "19": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "20": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
- "21": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
- "22": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
- "23": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "24": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol",
- "25": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol",
- "26": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol",
- "27": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol",
- "28": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol",
- "29": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
- "30": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
- "31": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
- "32": "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
- "33": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
- "34": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
- "35": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
- "36": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
- "37": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
- "38": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
- "39": "node_modules/@openzeppelin/contracts/utils/Address.sol",
- "40": "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
- "41": "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
- },
- "language": "Solidity"
-}
diff --git a/packages/oapp-evm-upgradeable/cache/solidity-files-cache.json b/packages/oapp-evm-upgradeable/cache/solidity-files-cache.json
index 660950345..4ffa60a11 100644
--- a/packages/oapp-evm-upgradeable/cache/solidity-files-cache.json
+++ b/packages/oapp-evm-upgradeable/cache/solidity-files-cache.json
@@ -10,8 +10,8 @@
},
"files": {
"contracts/oapp/OAppCoreUpgradeable.sol": {
- "lastModificationDate": 1729174561738,
- "contentHash": "b4fca91708cb00941a8b797b23100d10",
+ "lastModificationDate": 1730469531878,
+ "contentHash": "a82a4c0d5d56b2c9ecb1e2267e5a161a",
"sourceName": "contracts/oapp/OAppCoreUpgradeable.sol",
"compilerSettings": {
"solc": {
@@ -59,15 +59,15 @@
"OAppCoreUpgradeable": {
"0.8.22": {
"path": "OAppCoreUpgradeable.sol/OAppCoreUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
"contracts/oapp/OAppReceiverUpgradeable.sol": {
- "lastModificationDate": 1729175077125,
- "contentHash": "b48ad271e9f24c1ff7c23e250695cc11",
+ "lastModificationDate": 1730465183494,
+ "contentHash": "50cac4959f785fdb188ddc8e39fe942b",
"sourceName": "contracts/oapp/OAppReceiverUpgradeable.sol",
"compilerSettings": {
"solc": {
@@ -118,15 +118,15 @@
"OAppReceiverUpgradeable": {
"0.8.22": {
"path": "OAppReceiverUpgradeable.sol/OAppReceiverUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
"contracts/oapp/OAppSenderUpgradeable.sol": {
- "lastModificationDate": 1729169066650,
- "contentHash": "b7b227b5a63f1eff9f8cef0eb28b105c",
+ "lastModificationDate": 1730465183495,
+ "contentHash": "50ead64aa42c0b3309de6c60a72459d6",
"sourceName": "contracts/oapp/OAppSenderUpgradeable.sol",
"compilerSettings": {
"solc": {
@@ -179,15 +179,15 @@
"OAppSenderUpgradeable": {
"0.8.22": {
"path": "OAppSenderUpgradeable.sol/OAppSenderUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
"contracts/oapp/OAppUpgradeable.sol": {
- "lastModificationDate": 1729169066651,
- "contentHash": "535ef1a4a7153bd90b45351836f99214",
+ "lastModificationDate": 1730465183495,
+ "contentHash": "afdd73ab347859f0ced12948cb363ef6",
"sourceName": "contracts/oapp/OAppUpgradeable.sol",
"compilerSettings": {
"solc": {
@@ -244,16 +244,16 @@
"OAppUpgradeable": {
"0.8.22": {
"path": "OAppUpgradeable.sol/OAppUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol": {
- "lastModificationDate": 1729174894715,
- "contentHash": "92cd4c57af7d029099200a51bf103429",
- "sourceName": "contracts/oapp/examples/OmniCounterPreCrimeUpgradeable.sol",
+ "contracts/oapp/libs/OAppOptionsType3Upgradeable.sol": {
+ "lastModificationDate": 1730469586626,
+ "contentHash": "abaf79139c7ac029bc3d9972f9ff1cd4",
+ "sourceName": "contracts/oapp/libs/OAppOptionsType3Upgradeable.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -285,60 +285,26 @@
}
},
"imports": [
- "contracts/oapp/OAppCoreUpgradeable.sol",
- "contracts/oapp/OAppReceiverUpgradeable.sol",
- "contracts/oapp/OAppSenderUpgradeable.sol",
- "contracts/oapp/OAppUpgradeable.sol",
- "contracts/oapp/examples/OmniCounterUpgradeable.sol",
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
- "contracts/precrime/PreCrimeUpgradeable.sol",
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
- "node_modules/@openzeppelin/contracts/utils/Address.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol",
"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "OmniCounterPreCrimeUpgradeable": {
+ "OAppOptionsType3Upgradeable": {
"0.8.22": {
- "path": "OmniCounterPreCrimeUpgradeable.sol/OmniCounterPreCrimeUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "OAppOptionsType3Upgradeable.sol/OAppOptionsType3Upgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "contracts/oapp/examples/OmniCounterUpgradeable.sol": {
- "lastModificationDate": 1729174903193,
- "contentHash": "7c8cd4b284493724cdb4108d6441c381",
- "sourceName": "contracts/oapp/examples/OmniCounterUpgradeable.sol",
+ "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
+ "lastModificationDate": 1730469643516,
+ "contentHash": "68ebfb89aaac154299ea9f680623c990",
+ "sourceName": "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -370,15 +336,7 @@
}
},
"imports": [
- "contracts/oapp/OAppCoreUpgradeable.sol",
- "contracts/oapp/OAppReceiverUpgradeable.sol",
- "contracts/oapp/OAppSenderUpgradeable.sol",
- "contracts/oapp/OAppUpgradeable.sol",
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
@@ -386,48 +344,30 @@
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
- "node_modules/@openzeppelin/contracts/utils/Address.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "MsgCodec": {
- "0.8.22": {
- "path": "OmniCounterUpgradeable.sol/MsgCodec.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
- }
- },
- "OmniCounterUpgradeable": {
+ "OAppPreCrimeSimulatorUpgradeable": {
"0.8.22": {
- "path": "OmniCounterUpgradeable.sol/OmniCounterUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol": {
- "lastModificationDate": 1729174629826,
- "contentHash": "9273460bb0b6e33c47e906ed9cae80ae",
- "sourceName": "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
+ "contracts/precrime/PreCrimeUpgradeable.sol": {
+ "lastModificationDate": 1730469675254,
+ "contentHash": "9087c27bc94f810a175612633bf7eb09",
+ "sourceName": "contracts/precrime/PreCrimeUpgradeable.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -471,6 +411,7 @@
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
@@ -478,19 +419,19 @@
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "OAppPreCrimeSimulatorUpgradeable": {
+ "PreCrimeUpgradeable": {
"0.8.22": {
- "path": "OAppPreCrimeSimulatorUpgradeable.sol/OAppPreCrimeSimulatorUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "contracts/precrime/PreCrimeUpgradeable.sol": {
- "lastModificationDate": 1729174696910,
- "contentHash": "e7ae08d6ed8e6035e5986beb098e8a07",
- "sourceName": "contracts/precrime/PreCrimeUpgradeable.sol",
+ "contracts/precrime/extensions/PreCrimeE1Upgradeable.sol": {
+ "lastModificationDate": 1730465183496,
+ "contentHash": "bea88bce8431fa383fc8d24b74ebec3b",
+ "sourceName": "contracts/precrime/extensions/PreCrimeE1Upgradeable.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -522,6 +463,7 @@
}
},
"imports": [
+ "contracts/precrime/PreCrimeUpgradeable.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
@@ -531,30 +473,79 @@
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
"node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "PreCrimeUpgradeable": {
+ "PreCrimeE1Upgradeable": {
"0.8.22": {
- "path": "PreCrimeUpgradeable.sol/PreCrimeUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "contracts/precrime/extensions/PreCrimeE1Upgradeable.sol": {
- "lastModificationDate": 1729169066653,
- "contentHash": "bea88bce8431fa383fc8d24b74ebec3b",
- "sourceName": "contracts/precrime/extensions/PreCrimeE1Upgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol": {
+ "lastModificationDate": 1729620163160,
+ "contentHash": "0b85d555b2dac6680d32d9a06c865fdb",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "MessageLibBase": {
+ "0.8.22": {
+ "path": "MessageLibBase.sol/MessageLibBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol": {
+ "lastModificationDate": 1729620163161,
+ "contentHash": "fcd6771ac0e1bf4daa0afe7ea7a6147c",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -586,7 +577,7 @@
}
},
"imports": [
- "contracts/precrime/PreCrimeUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
@@ -596,33 +587,24 @@
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol",
- "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
- "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "PreCrimeE1Upgradeable": {
+ "ReceiveLibBaseE2": {
"0.8.22": {
- "path": "PreCrimeE1Upgradeable.sol/PreCrimeE1Upgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": {
- "lastModificationDate": 1727210711449,
- "contentHash": "d2b1c66f564862f65b37230b44da37c0",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol": {
+ "lastModificationDate": 1729620163162,
+ "contentHash": "30e24e7ba40e38e1f6158f8b0cb58bbc",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -654,25 +636,33 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol"
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "DVNOptions": {
+ "SendLibBase": {
"0.8.22": {
- "path": "DVNOptions.sol/DVNOptions.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "SendLibBase.sol/SendLibBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": {
- "lastModificationDate": 1727210710093,
- "contentHash": "a76caf341995ff795f5d0a19ffadf359",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol": {
+ "lastModificationDate": 1729620163162,
+ "contentHash": "28156214103df87a44c6a17e0b6516f8",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -703,22 +693,44 @@
}
}
},
- "imports": [],
- "versionRequirement": ">=0.8.0",
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
"artifacts": {
- "ILayerZeroComposer": {
+ "SendLibBaseE2": {
"0.8.22": {
- "path": "ILayerZeroComposer.sol/ILayerZeroComposer.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "SendLibBaseE2.sol/SendLibBaseE2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": {
- "lastModificationDate": 1727210710094,
- "contentHash": "0790766778fa8995935c093d9cf03f84",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol": {
+ "lastModificationDate": 1729620163164,
+ "contentHash": "6611b1246e91c7e160c7682c33af6c4e",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -750,6 +762,9 @@
}
},
"imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
@@ -757,19 +772,19 @@
],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "ILayerZeroEndpointV2": {
+ "IExecutor": {
"0.8.22": {
- "path": "ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IExecutor.sol/IExecutor.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": {
- "lastModificationDate": 1727210710096,
- "contentHash": "07bcbc5377578339628265a849de70f5",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol": {
+ "lastModificationDate": 1729620163164,
+ "contentHash": "ccd3c9f71ab46b75d8d606adf415eacb",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -801,6 +816,9 @@
}
},
"imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
@@ -809,19 +827,19 @@
],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "ILayerZeroReceiver": {
+ "IExecutorFeeLib": {
"0.8.22": {
- "path": "ILayerZeroReceiver.sol/ILayerZeroReceiver.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IExecutorFeeLib.sol/IExecutorFeeLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": {
- "lastModificationDate": 1727210710097,
- "contentHash": "fa5082ec9a32dc00ab9dd5f759f3a756",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol": {
+ "lastModificationDate": 1729620163164,
+ "contentHash": "d88dda6b54baa83df374c0c09d76303a",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -852,25 +870,22 @@
}
}
},
- "imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
- ],
+ "imports": [],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "IMessageLib": {
+ "ILayerZeroExecutor": {
"0.8.22": {
- "path": "IMessageLib.sol/IMessageLib.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroExecutor.sol/ILayerZeroExecutor.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": {
- "lastModificationDate": 1727210710101,
- "contentHash": "a56a887b2721a98cf82842503bbf0ef0",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol": {
+ "lastModificationDate": 1729620163164,
+ "contentHash": "27af5976b18aa1a57751e74fd29edb93",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -904,19 +919,19 @@
"imports": [],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "IMessageLibManager": {
+ "ILayerZeroPriceFeed": {
"0.8.22": {
- "path": "IMessageLibManager.sol/IMessageLibManager.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": {
- "lastModificationDate": 1727210710103,
- "contentHash": "bd92a8f1c9f815025e8e3e676fe40b0d",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol": {
+ "lastModificationDate": 1729620163165,
+ "contentHash": "ba0a95638eb5d1a06ec7d020b83e2989",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -950,19 +965,19 @@
"imports": [],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "IMessagingChannel": {
+ "ILayerZeroTreasury": {
"0.8.22": {
- "path": "IMessagingChannel.sol/IMessagingChannel.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroTreasury.sol/ILayerZeroTreasury.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": {
- "lastModificationDate": 1727210710104,
- "contentHash": "bcc2df90697b23f02303892874f96324",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol": {
+ "lastModificationDate": 1729620163165,
+ "contentHash": "dea42535acffea4d2bd1ec9681d88a1c",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -996,19 +1011,19 @@
"imports": [],
"versionRequirement": ">=0.8.0",
"artifacts": {
- "IMessagingComposer": {
+ "IWorker": {
"0.8.22": {
- "path": "IMessagingComposer.sol/IMessagingComposer.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IWorker.sol/IWorker.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": {
- "lastModificationDate": 1727210710106,
- "contentHash": "2b8bfa473f049af8c74dffbff0766abf",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol": {
+ "lastModificationDate": 1729620163165,
+ "contentHash": "6bcbea64901aae43d392623f058bc624",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1040,21 +1055,21 @@
}
},
"imports": [],
- "versionRequirement": ">=0.8.0",
+ "versionRequirement": "^0.8.20",
"artifacts": {
- "IMessagingContext": {
+ "SafeCall": {
"0.8.22": {
- "path": "IMessagingContext.sol/IMessagingContext.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "SafeCall.sol/SafeCall.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": {
- "lastModificationDate": 1727210710108,
- "contentHash": "2ed59a174607c55048374a27816752aa",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol": {
+ "lastModificationDate": 1729620163166,
+ "contentHash": "b3fc36971e46b0709bbdbd9dc341bd73",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1086,29 +1101,35 @@
}
},
"imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
],
- "versionRequirement": ">=0.8.0",
+ "versionRequirement": "^0.8.20",
"artifacts": {
- "ISendLib": {
+ "ReceiveUlnBase": {
"0.8.22": {
- "path": "ISendLib.sol/ISendLib.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ReceiveUlnBase.sol/ReceiveUlnBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": {
- "lastModificationDate": 1727210710109,
- "contentHash": "4ede58e59ea7779e777942a5da252697",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol": {
+ "lastModificationDate": 1729620163166,
+ "contentHash": "79610eb602a1f933a9d63008bfa16bbf",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1139,22 +1160,54 @@
}
}
},
- "imports": [],
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
+ ],
"versionRequirement": "^0.8.20",
"artifacts": {
- "AddressCast": {
+ "SendUlnBase": {
"0.8.22": {
- "path": "AddressCast.sol/AddressCast.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "SendUlnBase.sol/SendUlnBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": {
- "lastModificationDate": 1727210710110,
- "contentHash": "673ca16094a43c577ed24243c20361aa",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol": {
+ "lastModificationDate": 1729620163167,
+ "contentHash": "d0bf2c381067a9c43c25b2b1e36e1a0e",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1185,22 +1238,25 @@
}
}
},
- "imports": [],
- "versionRequirement": "^0.8.20",
+ "imports": [
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.20",
"artifacts": {
- "CalldataBytesLib": {
+ "UlnBase": {
"0.8.22": {
- "path": "CalldataBytesLib.sol/CalldataBytesLib.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "UlnBase.sol/UlnBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": {
- "lastModificationDate": 1727210710125,
- "contentHash": "b2d6a04de0dde1607086d9872aac790e",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol": {
+ "lastModificationDate": 1729620163170,
+ "contentHash": "d6473eb2f5eee4789e889d0a13685611",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1231,22 +1287,25 @@
}
}
},
- "imports": [],
- "versionRequirement": "^0.8.20",
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol"
+ ],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "BitMaps": {
+ "IDVN": {
"0.8.22": {
- "path": "BitMaps.sol/BitMaps.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IDVN.sol/IDVN.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": {
- "lastModificationDate": 1727210710128,
- "contentHash": "d9e985d1c5d407ba110da010983bcfb6",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol": {
+ "lastModificationDate": 1729620163170,
+ "contentHash": "987cd85145921cff7d812431333457ce",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1278,23 +1337,25 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol"
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol"
],
- "versionRequirement": "^0.8.20",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "ExecutorOptions": {
+ "IDVNFeeLib": {
"0.8.22": {
- "path": "ExecutorOptions.sol/ExecutorOptions.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IDVNFeeLib.sol/IDVNFeeLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": {
- "lastModificationDate": 1727210710130,
- "contentHash": "fb446531f87e319bbe661e5d6845964f",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol": {
+ "lastModificationDate": 1729620163170,
+ "contentHash": "07d809b468afad318aa1bdd958a6909a",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1325,32 +1386,22 @@
}
}
},
- "imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
- ],
- "versionRequirement": "^0.8.20",
+ "imports": [],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "PacketV1Codec": {
+ "ILayerZeroDVN": {
"0.8.22": {
- "path": "PacketV1Codec.sol/PacketV1Codec.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroDVN.sol/ILayerZeroDVN.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol": {
- "lastModificationDate": 1727210718019,
- "contentHash": "3ed724e29b9fbfb93636622777fea025",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol": {
+ "lastModificationDate": 1729620163171,
+ "contentHash": "cd1037d3b9fc4e036d621778391b80f6",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1381,24 +1432,22 @@
}
}
},
- "imports": [
- "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol"
- ],
- "versionRequirement": ">=0.5.0",
+ "imports": [],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "ILayerZeroEndpoint": {
+ "IReceiveUlnE2": {
"0.8.22": {
- "path": "ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IReceiveUlnE2.sol/IReceiveUlnE2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol": {
- "lastModificationDate": 1727210718026,
- "contentHash": "b8c5c3295522f98814bf0687026518b7",
- "sourceName": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol": {
+ "lastModificationDate": 1729620163172,
+ "contentHash": "d2b1c66f564862f65b37230b44da37c0",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1429,22 +1478,26 @@
}
}
},
- "imports": [],
- "versionRequirement": ">=0.5.0",
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol"
+ ],
+ "versionRequirement": "^0.8.20",
"artifacts": {
- "ILayerZeroUserApplicationConfig": {
+ "DVNOptions": {
"0.8.22": {
- "path": "ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "DVNOptions.sol/DVNOptions.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": {
- "lastModificationDate": 1729168739780,
- "contentHash": "f88e6ddf8ff977739a7178f0d1a276b3",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol": {
+ "lastModificationDate": 1729620163172,
+ "contentHash": "20cecbf89aebfddf23ef52f007923f1e",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1476,27 +1529,28 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "IOAppCore": {
+ "UlnOptions": {
"0.8.22": {
- "path": "IOAppCore.sol/IOAppCore.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "UlnOptions.sol/UlnOptions.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": {
- "lastModificationDate": 1729168739780,
- "contentHash": "8744fbd8f6967b21443fddfccede3f1e",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol": {
+ "lastModificationDate": 1729620163176,
+ "contentHash": "b20983558d7c8d45f11da14677f23d6a",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1527,29 +1581,22 @@
}
}
},
- "imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
- ],
- "versionRequirement": "^0.8.20",
+ "imports": [],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "IOAppReceiver": {
+ "IUltraLightNode301": {
"0.8.22": {
- "path": "IOAppReceiver.sol/IOAppReceiver.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IUltraLightNode301.sol/IUltraLightNode301.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol": {
- "lastModificationDate": 1729168739781,
- "contentHash": "aaba44fdba19c251ddcb7d80c4998e19",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol": {
+ "lastModificationDate": 1729620162124,
+ "contentHash": "4f5f36e689708230ec967622c4ef3d03",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1581,28 +1628,30 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "OptionsBuilder": {
+ "MessageLibManager": {
"0.8.22": {
- "path": "OptionsBuilder.sol/OptionsBuilder.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "MessageLibManager.sol/MessageLibManager.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": {
- "lastModificationDate": 1729168739781,
- "contentHash": "acca130251942a833f49ab69e01bcd42",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol": {
+ "lastModificationDate": 1729620162125,
+ "contentHash": "9acc959d357ae787217de4696d57169a",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1634,33 +1683,26 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "IOAppPreCrimeSimulator": {
+ "MessagingChannel": {
"0.8.22": {
- "path": "IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "MessagingChannel.sol/MessagingChannel.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": {
- "lastModificationDate": 1729168739782,
- "contentHash": "636408a0c09893cda2e9d23ceec10459",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol": {
+ "lastModificationDate": 1729620162125,
+ "contentHash": "d0c63dabf34e7f59198338f436826cfd",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1691,22 +1733,26 @@
}
}
},
- "imports": [],
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol"
+ ],
"versionRequirement": "^0.8.20",
"artifacts": {
- "IPreCrime": {
+ "MessagingComposer": {
"0.8.22": {
- "path": "IPreCrime.sol/IPreCrime.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "MessagingComposer.sol/MessagingComposer.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": {
- "lastModificationDate": 1729168739782,
- "contentHash": "49f5ad0a97a1acc3e81873e69b0ef3ab",
- "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol": {
+ "lastModificationDate": 1729620162125,
+ "contentHash": "60c0bd581632272ab475f236282b70b0",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1738,32 +1784,24 @@
}
},
"imports": [
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
- "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "PacketDecoder": {
+ "MessagingContext": {
"0.8.22": {
- "path": "Packet.sol/PacketDecoder.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "MessagingContext.sol/MessagingContext.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": {
- "lastModificationDate": 1729174813917,
- "contentHash": "f4aae4537e2686b91fcd881aeed71657",
- "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": {
+ "lastModificationDate": 1729620162126,
+ "contentHash": "a76caf341995ff795f5d0a19ffadf359",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1795,21 +1833,21 @@
}
},
"imports": [],
- "versionRequirement": ">=0.8.0, <0.9.0",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "BytesLib": {
+ "ILayerZeroComposer": {
"0.8.22": {
- "path": "BytesLib.sol/BytesLib.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroComposer.sol/ILayerZeroComposer.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
- "lastModificationDate": 1727210710953,
- "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca",
- "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": {
+ "lastModificationDate": 1729620162126,
+ "contentHash": "0790766778fa8995935c093d9cf03f84",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1840,22 +1878,27 @@
}
}
},
- "imports": [],
- "versionRequirement": "^0.8.20",
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
+ ],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "IERC20": {
+ "ILayerZeroEndpointV2": {
"0.8.22": {
- "path": "IERC20.sol/IERC20.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
- "lastModificationDate": 1727210710959,
- "contentHash": "da291753fa4641f2c5837bfc4aa4c01b",
- "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol": {
+ "lastModificationDate": 1729620162126,
+ "contentHash": "07bcbc5377578339628265a849de70f5",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1886,22 +1929,28 @@
}
}
},
- "imports": [],
- "versionRequirement": "^0.8.20",
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
+ ],
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "IERC20Permit": {
+ "ILayerZeroReceiver": {
"0.8.22": {
- "path": "IERC20Permit.sol/IERC20Permit.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "ILayerZeroReceiver.sol/ILayerZeroReceiver.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
- "lastModificationDate": 1727210711050,
- "contentHash": "697fd27924863e77c17dace2179018b2",
- "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol": {
+ "lastModificationDate": 1729620162126,
+ "contentHash": "fa5082ec9a32dc00ab9dd5f759f3a756",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1933,25 +1982,24 @@
}
},
"imports": [
- "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
- "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
- "node_modules/@openzeppelin/contracts/utils/Address.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
],
- "versionRequirement": "^0.8.20",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "SafeERC20": {
+ "IMessageLib": {
"0.8.22": {
- "path": "SafeERC20.sol/SafeERC20.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IMessageLib.sol/IMessageLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/utils/Address.sol": {
- "lastModificationDate": 1727210710772,
- "contentHash": "79c699f80eb8a9b168cb34e37816f894",
- "sourceName": "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": {
+ "lastModificationDate": 1729620162127,
+ "contentHash": "a56a887b2721a98cf82842503bbf0ef0",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -1983,21 +2031,21 @@
}
},
"imports": [],
- "versionRequirement": "^0.8.20",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "Address": {
+ "IMessageLibManager": {
"0.8.22": {
- "path": "Address.sol/Address.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IMessageLibManager.sol/IMessageLibManager.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
- "lastModificationDate": 1727210710935,
- "contentHash": "de0163561b417b800d01749cbbe2147e",
- "sourceName": "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": {
+ "lastModificationDate": 1729620162127,
+ "contentHash": "bd92a8f1c9f815025e8e3e676fe40b0d",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -2029,21 +2077,21 @@
}
},
"imports": [],
- "versionRequirement": "^0.8.20",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "IERC165": {
+ "IMessagingChannel": {
"0.8.22": {
- "path": "IERC165.sol/IERC165.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IMessagingChannel.sol/IMessagingChannel.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
- "lastModificationDate": 1727210711049,
- "contentHash": "d72cdfaacd4b1b8e090b57f4b7200ddc",
- "sourceName": "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": {
+ "lastModificationDate": 1729620162127,
+ "contentHash": "bcc2df90697b23f02303892874f96324",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -2075,21 +2123,67 @@
}
},
"imports": [],
- "versionRequirement": "^0.8.20",
+ "versionRequirement": ">=0.8.0",
"artifacts": {
- "SafeCast": {
+ "IMessagingComposer": {
"0.8.22": {
- "path": "SafeCast.sol/SafeCast.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "IMessagingComposer.sol/IMessagingComposer.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
- "lastModificationDate": 1727210710030,
- "contentHash": "77d30f3cd93f46b80b6f8f1ebc574ee4",
- "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": {
+ "lastModificationDate": 1729620162128,
+ "contentHash": "2b8bfa473f049af8c74dffbff0766abf",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.8.0",
+ "artifacts": {
+ "IMessagingContext": {
+ "0.8.22": {
+ "path": "IMessagingContext.sol/IMessagingContext.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol": {
+ "lastModificationDate": 1729620162128,
+ "contentHash": "2ed59a174607c55048374a27816752aa",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -2121,24 +2215,75 @@
}
},
"imports": [
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
],
+ "versionRequirement": ">=0.8.0",
+ "artifacts": {
+ "ISendLib": {
+ "0.8.22": {
+ "path": "ISendLib.sol/ISendLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol": {
+ "lastModificationDate": 1729620162128,
+ "contentHash": "4ede58e59ea7779e777942a5da252697",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
"versionRequirement": "^0.8.20",
"artifacts": {
- "OwnableUpgradeable": {
+ "AddressCast": {
"0.8.22": {
- "path": "OwnableUpgradeable.sol/OwnableUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "AddressCast.sol/AddressCast.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
- "lastModificationDate": 1727210710025,
- "contentHash": "f0cedd674b4863ee90d1521a92ab82df",
- "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol": {
+ "lastModificationDate": 1729620162128,
+ "contentHash": "673ca16094a43c577ed24243c20361aa",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -2172,19 +2317,65 @@
"imports": [],
"versionRequirement": "^0.8.20",
"artifacts": {
- "Initializable": {
+ "CalldataBytesLib": {
"0.8.22": {
- "path": "Initializable.sol/Initializable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "CalldataBytesLib.sol/CalldataBytesLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
},
- "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
- "lastModificationDate": 1727210709947,
- "contentHash": "c28aaa25d083a9a55bd9ec9e0b785122",
- "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol": {
+ "lastModificationDate": 1729620162129,
+ "contentHash": "5e30d65ecaa3b73c091bd32a32573cba",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Errors": {
+ "0.8.22": {
+ "path": "Errors.sol/Errors.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol": {
+ "lastModificationDate": 1729620162129,
+ "contentHash": "664c7211dae3441b1ab2ccccbd62eef4",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
"compilerSettings": {
"solc": {
"optimizer": { "enabled": true, "runs": 200 },
@@ -2216,19 +2407,4657 @@
}
},
"imports": [
- "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol"
],
"versionRequirement": "^0.8.20",
"artifacts": {
- "ContextUpgradeable": {
+ "GUID": {
"0.8.22": {
- "path": "ContextUpgradeable.sol/ContextUpgradeable.json",
- "build_id": "1cc3caee39d54c2c55f4148e381aa345"
+ "path": "GUID.sol/GUID.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol": {
+ "lastModificationDate": 1729620162129,
+ "contentHash": "0762bff24288fb82803c259e336cfa6f",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Transfer": {
+ "0.8.22": {
+ "path": "Transfer.sol/Transfer.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol": {
+ "lastModificationDate": 1729620162129,
+ "contentHash": "22ae1b35c61bd0b7628db85c1b519702",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "BlockedMessageLib": {
+ "0.8.22": {
+ "path": "BlockedMessageLib.sol/BlockedMessageLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol": {
+ "lastModificationDate": 1729620162130,
+ "contentHash": "b2d6a04de0dde1607086d9872aac790e",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "BitMaps": {
+ "0.8.22": {
+ "path": "BitMaps.sol/BitMaps.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol": {
+ "lastModificationDate": 1729620162130,
+ "contentHash": "d9e985d1c5d407ba110da010983bcfb6",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ExecutorOptions": {
+ "0.8.22": {
+ "path": "ExecutorOptions.sol/ExecutorOptions.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol": {
+ "lastModificationDate": 1729620162130,
+ "contentHash": "fb446531f87e319bbe661e5d6845964f",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "PacketV1Codec": {
+ "0.8.22": {
+ "path": "PacketV1Codec.sol/PacketV1Codec.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol": {
+ "lastModificationDate": 1729620162554,
+ "contentHash": "3ed724e29b9fbfb93636622777fea025",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol"
+ ],
+ "versionRequirement": ">=0.5.0",
+ "artifacts": {
+ "ILayerZeroEndpoint": {
+ "0.8.22": {
+ "path": "ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol": {
+ "lastModificationDate": 1729620162556,
+ "contentHash": "4e122d9c2f1e115ebed5643a0eebfba1",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.7.0",
+ "artifacts": {
+ "ILayerZeroUltraLightNodeV2": {
+ "0.8.22": {
+ "path": "ILayerZeroUltraLightNodeV2.sol/ILayerZeroUltraLightNodeV2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol": {
+ "lastModificationDate": 1729620162557,
+ "contentHash": "b8c5c3295522f98814bf0687026518b7",
+ "sourceName": "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUserApplicationConfig.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.5.0",
+ "artifacts": {
+ "ILayerZeroUserApplicationConfig": {
+ "0.8.22": {
+ "path": "ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": {
+ "lastModificationDate": 1723853004188,
+ "contentHash": "f88e6ddf8ff977739a7178f0d1a276b3",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IOAppCore": {
+ "0.8.22": {
+ "path": "IOAppCore.sol/IOAppCore.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol": {
+ "lastModificationDate": 1723853004188,
+ "contentHash": "3b509d38279da870d798ed7039cfaf62",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IOAppOptionsType3": {
+ "0.8.22": {
+ "path": "IOAppOptionsType3.sol/IOAppOptionsType3.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol": {
+ "lastModificationDate": 1723853004188,
+ "contentHash": "8744fbd8f6967b21443fddfccede3f1e",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IOAppReceiver": {
+ "0.8.22": {
+ "path": "IOAppReceiver.sol/IOAppReceiver.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol": {
+ "lastModificationDate": 1723853004189,
+ "contentHash": "acca130251942a833f49ab69e01bcd42",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IOAppPreCrimeSimulator": {
+ "0.8.22": {
+ "path": "IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol": {
+ "lastModificationDate": 1723853004189,
+ "contentHash": "636408a0c09893cda2e9d23ceec10459",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IPreCrime": {
+ "0.8.22": {
+ "path": "IPreCrime.sol/IPreCrime.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol": {
+ "lastModificationDate": 1723853004189,
+ "contentHash": "49f5ad0a97a1acc3e81873e69b0ef3ab",
+ "sourceName": "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "PacketDecoder": {
+ "0.8.22": {
+ "path": "Packet.sol/PacketDecoder.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol": {
+ "lastModificationDate": 1729622816664,
+ "contentHash": "ade306dc5e4187689103bdcedca44793",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "OptionsHelper": {
+ "0.8.22": {
+ "path": "contracts/OptionsHelper.sol/OptionsHelper.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "UlnOptionsMock": {
+ "0.8.22": {
+ "path": "contracts/OptionsHelper.sol/UlnOptionsMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol": {
+ "lastModificationDate": 1729620160985,
+ "contentHash": "d71e778cc00705e1aeb09ca4826da925",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol"
+ ],
+ "versionRequirement": "^0.8.18",
+ "artifacts": {
+ "IOAppSetPeer": {
+ "0.8.22": {
+ "path": "TestHelperOz5.sol/IOAppSetPeer.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "TestHelperOz5": {
+ "0.8.22": {
+ "path": "TestHelperOz5.sol/TestHelperOz5.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol": {
+ "lastModificationDate": 1729620160981,
+ "contentHash": "42f4c18092346e04d395f407b765d956",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "DVNFeeLibMock": {
+ "0.8.22": {
+ "path": "DVNFeeLibMock.sol/DVNFeeLibMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol": {
+ "lastModificationDate": 1729620160982,
+ "contentHash": "2675715ba35ee4282e8afb6d385f40d4",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "DVNMock": {
+ "0.8.22": {
+ "path": "DVNMock.sol/DVNMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol": {
+ "lastModificationDate": 1729620160982,
+ "contentHash": "9e888df6c92d20b136da88dcf3abc364",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "EndpointV2Mock": {
+ "0.8.22": {
+ "path": "EndpointV2Mock.sol/EndpointV2Mock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol": {
+ "lastModificationDate": 1729620160982,
+ "contentHash": "c58454b6921d026ecfc5f58380de636a",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.22",
+ "artifacts": {
+ "ExecutorFeeLibMock": {
+ "0.8.22": {
+ "path": "ExecutorFeeLibMock.sol/ExecutorFeeLibMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol": {
+ "lastModificationDate": 1729620160982,
+ "contentHash": "d82c4d8edde097de6c4e0d3080f58c60",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "ExecutorMock": {
+ "0.8.22": {
+ "path": "ExecutorMock.sol/ExecutorMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol": {
+ "lastModificationDate": 1729620160983,
+ "contentHash": "0181b7721dc61261018511063f654665",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "MultiSigMock": {
+ "0.8.22": {
+ "path": "MultiSigMock.sol/MultiSigMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol": {
+ "lastModificationDate": 1729620160983,
+ "contentHash": "f16c62ed5306aafc3374fc9fae460fd4",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "PriceFeedMock": {
+ "0.8.22": {
+ "path": "PriceFeedMock.sol/PriceFeedMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol": {
+ "lastModificationDate": 1729620160984,
+ "contentHash": "f842261a7840f7ca56d2624ba2c31b0a",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "ReceiveUln302Mock": {
+ "0.8.22": {
+ "path": "ReceiveUln302Mock.sol/ReceiveUln302Mock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol": {
+ "lastModificationDate": 1729620160984,
+ "contentHash": "2df252777e9c24558408d755458a8202",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol"
+ ],
+ "versionRequirement": "^0.8.22",
+ "artifacts": {
+ "SendUln302Mock": {
+ "0.8.22": {
+ "path": "SendUln302Mock.sol/SendUln302Mock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol": {
+ "lastModificationDate": 1729620160984,
+ "contentHash": "74a16623553fbb5bfabc0e2e50e21bd4",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol"
+ ],
+ "versionRequirement": "^0.8.22",
+ "artifacts": {
+ "SimpleMessageLibMock": {
+ "0.8.22": {
+ "path": "SimpleMessageLibMock.sol/SimpleMessageLibMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol": {
+ "lastModificationDate": 1729620160985,
+ "contentHash": "4ab56830fc175a2c0a7300fcccd5735f",
+ "sourceName": "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "WorkerMock": {
+ "0.8.22": {
+ "path": "WorkerMock.sol/WorkerMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol": {
+ "lastModificationDate": 1730212886155,
+ "contentHash": "f4aae4537e2686b91fcd881aeed71657",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.8.0, <0.9.0",
+ "artifacts": {
+ "BytesLib": {
+ "0.8.22": {
+ "path": "BytesLib.sol/BytesLib.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol": {
+ "lastModificationDate": 1723853006818,
+ "contentHash": "9febff9d09f18af5306669dc276c4c43",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.5.0",
+ "artifacts": {
+ "DSTest": {
+ "0.8.22": {
+ "path": "test.sol/DSTest.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol": {
+ "lastModificationDate": 1723853006851,
+ "contentHash": "ee13c050b1914464f1d3f90cde90204b",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "CommonBase": {
+ "0.8.22": {
+ "path": "Base.sol/CommonBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "ScriptBase": {
+ "0.8.22": {
+ "path": "Base.sol/ScriptBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "TestBase": {
+ "0.8.22": {
+ "path": "Base.sol/TestBase.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol": {
+ "lastModificationDate": 1723853006851,
+ "contentHash": "6cc2858240bcd443debbbf075490e325",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "StdAssertions": {
+ "0.8.22": {
+ "path": "StdAssertions.sol/StdAssertions.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol": {
+ "lastModificationDate": 1723853006851,
+ "contentHash": "f7ec55b5333e3d0687535fa29695e9c6",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "StdChains": {
+ "0.8.22": {
+ "path": "StdChains.sol/StdChains.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol": {
+ "lastModificationDate": 1723853006851,
+ "contentHash": "7922ae0087a21ee3cdb97137be18c06c",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "StdCheats": {
+ "0.8.22": {
+ "path": "StdCheats.sol/StdCheats.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "StdCheatsSafe": {
+ "0.8.22": {
+ "path": "StdCheats.sol/StdCheatsSafe.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol": {
+ "lastModificationDate": 1723853006851,
+ "contentHash": "64c896e1276a291776e5ea5aecb3870a",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "stdError": {
+ "0.8.22": {
+ "path": "StdError.sol/stdError.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "0a580d6fac69e9d4b6504f747f3c0c24",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "StdInvariant": {
+ "0.8.22": {
+ "path": "StdInvariant.sol/StdInvariant.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "a341308627b7eeab7589534daad58186",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol"
+ ],
+ "versionRequirement": ">=0.6.0, <0.9.0",
+ "artifacts": {
+ "stdJson": {
+ "0.8.22": {
+ "path": "StdJson.sol/stdJson.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "9da8f453eba6bb98f3d75bc6822bfb29",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "stdMath": {
+ "0.8.22": {
+ "path": "StdMath.sol/stdMath.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "abd6f3379e6e2a7979b18abc21aea0c1",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "stdStorage": {
+ "0.8.22": {
+ "path": "StdStorage.sol/stdStorage.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "stdStorageSafe": {
+ "0.8.22": {
+ "path": "StdStorage.sol/stdStorageSafe.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "6281165a12aa639705c691fccefd855e",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol"
+ ],
+ "versionRequirement": ">=0.4.22, <0.9.0",
+ "artifacts": {
+ "StdStyle": {
+ "0.8.22": {
+ "path": "StdStyle.sol/StdStyle.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "2ace460f60242ec59c9310db966aee97",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "StdUtils": {
+ "0.8.22": {
+ "path": "StdUtils.sol/StdUtils.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol": {
+ "lastModificationDate": 1723853006852,
+ "contentHash": "15866901137b5670eabf31362523bd28",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol"
+ ],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "Test": {
+ "0.8.22": {
+ "path": "Test.sol/Test.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol": {
+ "lastModificationDate": 1723853006853,
+ "contentHash": "c791ff15c3c9d600bd396c7ae4ee836c",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "Vm": {
+ "0.8.22": {
+ "path": "Vm.sol/Vm.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "VmSafe": {
+ "0.8.22": {
+ "path": "Vm.sol/VmSafe.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol": {
+ "lastModificationDate": 1723853006853,
+ "contentHash": "100b8a33b917da1147740d7ab8b0ded3",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.4.22, <0.9.0",
+ "artifacts": {
+ "console": {
+ "0.8.22": {
+ "path": "console.sol/console.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol": {
+ "lastModificationDate": 1723853006853,
+ "contentHash": "491ca717c1915995e78cc361485a3067",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.4.22, <0.9.0",
+ "artifacts": {
+ "console2": {
+ "0.8.22": {
+ "path": "console2.sol/console2.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol": {
+ "lastModificationDate": 1723853006854,
+ "contentHash": "7b131ca1ca32ef6378b7b9ad5488b901",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "IMulticall3": {
+ "0.8.22": {
+ "path": "IMulticall3.sol/IMulticall3.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol": {
+ "lastModificationDate": 1723853006854,
+ "contentHash": "9ec848e74c56e40afdd01ac0c873dc3b",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "MockERC20": {
+ "0.8.22": {
+ "path": "MockERC20.sol/MockERC20.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol": {
+ "lastModificationDate": 1723853006854,
+ "contentHash": "b6729ea581dcd9b4238eee9ca4d3bd89",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "IERC721TokenReceiver": {
+ "0.8.22": {
+ "path": "MockERC721.sol/IERC721TokenReceiver.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "MockERC721": {
+ "0.8.22": {
+ "path": "MockERC721.sol/MockERC721.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol": {
+ "lastModificationDate": 1723853006855,
+ "contentHash": "ac3b1bf5a444db5db3656021830258a8",
+ "sourceName": "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": ">=0.6.2, <0.9.0",
+ "artifacts": {
+ "safeconsole": {
+ "0.8.22": {
+ "path": "safeconsole.sol/safeconsole.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol": {
+ "lastModificationDate": 1729620164977,
+ "contentHash": "4c80b7fdf559a9a348e832a57d072a0b",
+ "sourceName": "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "AccessControl": {
+ "0.8.22": {
+ "path": "AccessControl.sol/AccessControl.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol": {
+ "lastModificationDate": 1729622813933,
+ "contentHash": "e3a14b0714caaaa82d58fa0bc3756079",
+ "sourceName": "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IAccessControl": {
+ "0.8.22": {
+ "path": "IAccessControl.sol/IAccessControl.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol": {
+ "lastModificationDate": 1729620165010,
+ "contentHash": "d3c790edc9ccf808a17c5a6cd13614fd",
+ "sourceName": "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": ["node_modules/@openzeppelin/contracts/utils/Context.sol"],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Ownable": {
+ "0.8.22": {
+ "path": "Ownable.sol/Ownable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol": {
+ "lastModificationDate": 1729620165002,
+ "contentHash": "4e17c826a54a8ee1a185449d4695d07d",
+ "sourceName": "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC1967": {
+ "0.8.22": {
+ "path": "IERC1967.sol/IERC1967.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
+ "lastModificationDate": 1729622813914,
+ "contentHash": "4aefc698f77ecbace7f401257dfe182d",
+ "sourceName": "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC1155Errors": {
+ "0.8.22": {
+ "path": "draft-IERC6093.sol/IERC1155Errors.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ },
+ "IERC20Errors": {
+ "0.8.22": {
+ "path": "draft-IERC6093.sol/IERC20Errors.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ },
+ "IERC721Errors": {
+ "0.8.22": {
+ "path": "draft-IERC6093.sol/IERC721Errors.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
+ "lastModificationDate": 1729622813917,
+ "contentHash": "48a23123892520179a95b4461c1d752a",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
+ "node_modules/@openzeppelin/contracts/proxy/Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ERC1967Proxy": {
+ "0.8.22": {
+ "path": "ERC1967Proxy.sol/ERC1967Proxy.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": {
+ "lastModificationDate": 1729622813917,
+ "contentHash": "838bc3ef3bcf0376af7d9b2041989b6a",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ERC1967Utils": {
+ "0.8.22": {
+ "path": "ERC1967Utils.sol/ERC1967Utils.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/Proxy.sol": {
+ "lastModificationDate": 1729620165011,
+ "contentHash": "35308c2fa7be99a959494c37e8257c16",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/Proxy.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Proxy": {
+ "0.8.22": {
+ "path": "Proxy.sol/Proxy.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": {
+ "lastModificationDate": 1729620164998,
+ "contentHash": "0a5c323fd908535580597848b8e550fb",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IBeacon": {
+ "0.8.22": {
+ "path": "IBeacon.sol/IBeacon.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": {
+ "lastModificationDate": 1729622813948,
+ "contentHash": "bbd45bfcd6202c35718661cc5d051226",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
+ "node_modules/@openzeppelin/contracts/proxy/Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ProxyAdmin": {
+ "0.8.22": {
+ "path": "ProxyAdmin.sol/ProxyAdmin.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": {
+ "lastModificationDate": 1729622813950,
+ "contentHash": "1837abdda8dba1ca489539d966a22bdc",
+ "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
+ "node_modules/@openzeppelin/contracts/proxy/Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ITransparentUpgradeableProxy": {
+ "0.8.22": {
+ "path": "TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ },
+ "TransparentUpgradeableProxy": {
+ "0.8.22": {
+ "path": "TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
+ "lastModificationDate": 1729622813918,
+ "contentHash": "c6375ef25e84c90b3d15f9ec4eef218f",
+ "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ERC20": {
+ "0.8.22": {
+ "path": "ERC20.sol/ERC20.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
+ "lastModificationDate": 1729622813942,
+ "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca",
+ "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC20": {
+ "0.8.22": {
+ "path": "IERC20.sol/IERC20.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
+ "lastModificationDate": 1729622813942,
+ "contentHash": "4c02fa6f7ae7b6c289cef80424f0c875",
+ "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC20Metadata": {
+ "0.8.22": {
+ "path": "IERC20Metadata.sol/IERC20Metadata.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
+ "lastModificationDate": 1729622813943,
+ "contentHash": "da291753fa4641f2c5837bfc4aa4c01b",
+ "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC20Permit": {
+ "0.8.22": {
+ "path": "IERC20Permit.sol/IERC20Permit.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
+ "lastModificationDate": 1729622813949,
+ "contentHash": "697fd27924863e77c17dace2179018b2",
+ "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "SafeERC20": {
+ "0.8.22": {
+ "path": "SafeERC20.sol/SafeERC20.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/Address.sol": {
+ "lastModificationDate": 1729622813911,
+ "contentHash": "79c699f80eb8a9b168cb34e37816f894",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Address": {
+ "0.8.22": {
+ "path": "Address.sol/Address.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/Context.sol": {
+ "lastModificationDate": 1729620164981,
+ "contentHash": "67bfbc07588eb8683b3fd8f6f909563e",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Context": {
+ "0.8.22": {
+ "path": "Context.sol/Context.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol": {
+ "lastModificationDate": 1729620165011,
+ "contentHash": "24e52f6ef3868e6fca664a423140bee9",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": ["node_modules/@openzeppelin/contracts/utils/Context.sol"],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Pausable": {
+ "0.8.22": {
+ "path": "Pausable.sol/Pausable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": {
+ "lastModificationDate": 1729622813948,
+ "contentHash": "a92331adac11b453a4de0323fc948119",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ReentrancyGuard": {
+ "0.8.22": {
+ "path": "ReentrancyGuard.sol/ReentrancyGuard.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": {
+ "lastModificationDate": 1729622813950,
+ "contentHash": "08cbccfefa284405c12b4bfa8c8c9c2b",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "StorageSlot": {
+ "0.8.22": {
+ "path": "StorageSlot.sol/StorageSlot.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
+ "lastModificationDate": 1729622813914,
+ "contentHash": "b96e0d7a3c2b185342c7d083d765b61f",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ECDSA": {
+ "0.8.22": {
+ "path": "ECDSA.sol/ECDSA.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {
+ "lastModificationDate": 1729622813917,
+ "contentHash": "6a55c353946e471d9792965d06208295",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ERC165": {
+ "0.8.22": {
+ "path": "ERC165.sol/ERC165.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
+ "lastModificationDate": 1729622813941,
+ "contentHash": "de0163561b417b800d01749cbbe2147e",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "IERC165": {
+ "0.8.22": {
+ "path": "IERC165.sol/IERC165.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
+ "lastModificationDate": 1729622813948,
+ "contentHash": "d72cdfaacd4b1b8e090b57f4b7200ddc",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "SafeCast": {
+ "0.8.22": {
+ "path": "SafeCast.sol/SafeCast.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol": {
+ "lastModificationDate": 1729622813914,
+ "contentHash": "4988631ce14d39628bfdded2662ef0e2",
+ "sourceName": "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "DoubleEndedQueue": {
+ "0.8.22": {
+ "path": "DoubleEndedQueue.sol/DoubleEndedQueue.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
+ "lastModificationDate": 1729620163478,
+ "contentHash": "77d30f3cd93f46b80b6f8f1ebc574ee4",
+ "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "OwnableUpgradeable": {
+ "0.8.22": {
+ "path": "OwnableUpgradeable.sol/OwnableUpgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
+ "lastModificationDate": 1729620163477,
+ "contentHash": "f0cedd674b4863ee90d1521a92ab82df",
+ "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "Initializable": {
+ "0.8.22": {
+ "path": "Initializable.sol/Initializable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
+ "lastModificationDate": 1729620163466,
+ "contentHash": "c28aaa25d083a9a55bd9ec9e0b785122",
+ "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ContextUpgradeable": {
+ "0.8.22": {
+ "path": "ContextUpgradeable.sol/ContextUpgradeable.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "test/OptionsHelper.sol": {
+ "lastModificationDate": 1730225147518,
+ "contentHash": "13c0a24738d6caf78c71a267976d10c5",
+ "sourceName": "test/OptionsHelper.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "OptionsHelper": {
+ "0.8.22": {
+ "path": "OptionsHelper.sol/OptionsHelper.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ },
+ "UlnOptionsMock": {
+ "0.8.22": {
+ "path": "OptionsHelper.sol/UlnOptionsMock.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "test/PreCrimeV2.t.sol": {
+ "lastModificationDate": 1730465183497,
+ "contentHash": "46ec55bc8d833575e0b170ca5fe76a92",
+ "sourceName": "test/PreCrimeV2.t.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
+ "contracts/precrime/PreCrimeUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/MessageLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/ReceiveLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/SendLibBaseE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IExecutorFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroExecutor.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroPriceFeed.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/ILayerZeroTreasury.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/interfaces/IWorker.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/libs/SafeCall.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/ReceiveUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/SendUlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/UlnBase.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IDVNFeeLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/ILayerZeroDVN.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/interfaces/IReceiveUlnE2.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/DVNOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/uln301/interfaces/IUltraLightNode301.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/CalldataBytesLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/BitMaps.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroUltraLightNodeV2.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/OptionsHelper.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/DVNMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/EndpointV2Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorFeeLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ExecutorMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/MultiSigMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/PriceFeedMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/ReceiveUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SendUln302Mock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/SimpleMessageLibMock.sol",
+ "node_modules/@layerzerolabs/test-devtools-evm-foundry/contracts/mocks/WorkerMock.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Base.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdAssertions.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdChains.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdCheats.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdError.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdInvariant.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdJson.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdMath.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStorage.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdStyle.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/StdUtils.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Test.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/Vm.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/console2.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/interfaces/IMulticall3.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC20.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/mocks/MockERC721.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/safeconsole.sol",
+ "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/IAccessControl.sol",
+ "node_modules/@openzeppelin/contracts/access/Ownable.sol",
+ "node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
+ "node_modules/@openzeppelin/contracts/proxy/Proxy.sol",
+ "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol",
+ "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
+ "node_modules/@openzeppelin/contracts/utils/Address.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol",
+ "node_modules/@openzeppelin/contracts/utils/Pausable.sol",
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol",
+ "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol",
+ "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
+ "node_modules/@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
+ "test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol",
+ "test/mocks/PreCrimeV2UpgradeableMock.sol"
+ ],
+ "versionRequirement": "^0.8.15",
+ "artifacts": {
+ "PreCrimeV2Test": {
+ "0.8.22": {
+ "path": "PreCrimeV2.t.sol/PreCrimeV2Test.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "test/mocks/ERC20Mock.sol": {
+ "lastModificationDate": 1730225147518,
+ "contentHash": "96267ae4cdbfb539711ca1be0c8fc71d",
+ "sourceName": "test/mocks/ERC20Mock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
+ "node_modules/@openzeppelin/contracts/utils/Context.sol"
+ ],
+ "versionRequirement": "^0.8.20",
+ "artifacts": {
+ "ERC20Mock": {
+ "0.8.22": {
+ "path": "ERC20Mock.sol/ERC20Mock.json",
+ "build_id": "669889c9d8e75a6d3a49e22199629c6f"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol": {
+ "lastModificationDate": 1730465183497,
+ "contentHash": "82322b286a545c6c25a1fda59d5728ec",
+ "sourceName": "test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "PreCrimeV2SimulatorUpgradeableMock": {
+ "0.8.22": {
+ "path": "PreCrimeV2SimulatorUpgradeableMock.sol/PreCrimeV2SimulatorUpgradeableMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
+ }
+ }
+ },
+ "seenByCompiler": true
+ },
+ "test/mocks/PreCrimeV2UpgradeableMock.sol": {
+ "lastModificationDate": 1730469136892,
+ "contentHash": "ba9a05978644a8b4e0455302798e5862",
+ "sourceName": "test/mocks/PreCrimeV2UpgradeableMock.sol",
+ "compilerSettings": {
+ "solc": {
+ "optimizer": { "enabled": true, "runs": 200 },
+ "metadata": {
+ "useLiteralContent": false,
+ "bytecodeHash": "ipfs",
+ "appendCBOR": true
+ },
+ "outputSelection": {
+ "*": {
+ "*": [
+ "abi",
+ "evm.bytecode",
+ "evm.deployedBytecode",
+ "evm.methodIdentifiers",
+ "metadata"
+ ]
+ }
+ },
+ "evmVersion": "paris",
+ "viaIR": false,
+ "libraries": {}
+ },
+ "vyper": {
+ "evmVersion": "paris",
+ "outputSelection": {
+ "*": { "*": ["abi", "evm.bytecode", "evm.deployedBytecode"] }
+ }
+ }
+ },
+ "imports": [
+ "contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol",
+ "contracts/precrime/PreCrimeUpgradeable.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol",
+ "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol",
+ "node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol",
+ "node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/BytesLib.sol",
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
+ "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
+ "test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol"
+ ],
+ "versionRequirement": "^0.8.0",
+ "artifacts": {
+ "PreCrimeV2UpgradeableMock": {
+ "0.8.22": {
+ "path": "PreCrimeV2UpgradeableMock.sol/PreCrimeV2UpgradeableMock.json",
+ "build_id": "62a8074768976c227225e5b653bbc587"
}
}
},
"seenByCompiler": true
}
},
- "builds": ["1cc3caee39d54c2c55f4148e381aa345"]
+ "builds": [
+ "62a8074768976c227225e5b653bbc587",
+ "669889c9d8e75a6d3a49e22199629c6f"
+ ]
}
diff --git a/packages/oapp-evm-upgradeable/contracts/oapp/OAppCoreUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/oapp/OAppCoreUpgradeable.sol
new file mode 100644
index 000000000..114bc563e
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/oapp/OAppCoreUpgradeable.sol
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+import { IOAppCore, ILayerZeroEndpointV2 } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol";
+
+/**
+ * @title OAppCore
+ * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.
+ */
+abstract contract OAppCoreUpgradeable is IOAppCore, OwnableUpgradeable {
+ struct OAppCoreStorage {
+ mapping(uint32 => bytes32) peers;
+ }
+
+ // keccak256(abi.encode(uint256(keccak256("layerzerov2.storage.oappcore")) - 1)) & ~bytes32(uint256(0xff))
+ bytes32 private constant OAPP_CORE_STORAGE_LOCATION =
+ 0x72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900;
+
+ function _getOAppCoreStorage() internal pure returns (OAppCoreStorage storage $) {
+ assembly {
+ $.slot := OAPP_CORE_STORAGE_LOCATION
+ }
+ }
+
+ // The LayerZero endpoint associated with the given OApp
+ ILayerZeroEndpointV2 public immutable endpoint;
+
+ /**
+ * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.
+ * @param _endpoint The address of the LOCAL Layer Zero endpoint.
+ */
+ constructor(address _endpoint) {
+ endpoint = ILayerZeroEndpointV2(_endpoint);
+ }
+
+ /**
+ * @dev Initializes the OAppCore with the provided delegate.
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ *
+ * @dev The delegate typically should be set as the owner of the contract.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OAppCore_init(address _delegate) internal onlyInitializing {
+ __OAppCore_init_unchained(_delegate);
+ }
+
+ function __OAppCore_init_unchained(address _delegate) internal onlyInitializing {
+ if (_delegate == address(0)) revert InvalidDelegate();
+ endpoint.setDelegate(_delegate);
+ }
+
+ /**
+ * @notice Returns the peer address (OApp instance) associated with a specific endpoint.
+ * @param _eid The endpoint ID.
+ * @return peer The address of the peer associated with the specified endpoint.
+ */
+ function peers(uint32 _eid) public view override returns (bytes32) {
+ OAppCoreStorage storage $ = _getOAppCoreStorage();
+ return $.peers[_eid];
+ }
+
+ /**
+ * @notice Sets the peer address (OApp instance) for a corresponding endpoint.
+ * @param _eid The endpoint ID.
+ * @param _peer The address of the peer to be associated with the corresponding endpoint.
+ *
+ * @dev Only the owner/admin of the OApp can call this function.
+ * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.
+ * @dev Set this to bytes32(0) to remove the peer address.
+ * @dev Peer is a bytes32 to accommodate non-evm chains.
+ */
+ function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {
+ OAppCoreStorage storage $ = _getOAppCoreStorage();
+ $.peers[_eid] = _peer;
+ emit PeerSet(_eid, _peer);
+ }
+
+ /**
+ * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.
+ * ie. the peer is set to bytes32(0).
+ * @param _eid The endpoint ID.
+ * @return peer The address of the peer associated with the specified endpoint.
+ */
+ function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {
+ OAppCoreStorage storage $ = _getOAppCoreStorage();
+ bytes32 peer = $.peers[_eid];
+ if (peer == bytes32(0)) revert NoPeer(_eid);
+ return peer;
+ }
+
+ /**
+ * @notice Sets the delegate address for the OApp.
+ * @param _delegate The address of the delegate to be set.
+ *
+ * @dev Only the owner/admin of the OApp can call this function.
+ * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.
+ */
+ function setDelegate(address _delegate) public onlyOwner {
+ endpoint.setDelegate(_delegate);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/oapp/OAppReceiverUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/oapp/OAppReceiverUpgradeable.sol
new file mode 100644
index 000000000..f11968588
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/oapp/OAppReceiverUpgradeable.sol
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { IOAppReceiver, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol";
+import { OAppCoreUpgradeable } from "./OAppCoreUpgradeable.sol";
+
+/**
+ * @title OAppReceiver
+ * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.
+ */
+abstract contract OAppReceiverUpgradeable is IOAppReceiver, OAppCoreUpgradeable {
+ // Custom error message for when the caller is not the registered endpoint/
+ error OnlyEndpoint(address addr);
+
+ // @dev The version of the OAppReceiver implementation.
+ // @dev Version is bumped when changes are made to this contract.
+ uint64 internal constant RECEIVER_VERSION = 2;
+
+ /**
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OAppReceiver_init(address _delegate) internal onlyInitializing {
+ __OAppCore_init(_delegate);
+ }
+
+ function __OAppReceiver_init_unchained() internal onlyInitializing {}
+
+ /**
+ * @notice Retrieves the OApp version information.
+ * @return senderVersion The version of the OAppSender.sol contract.
+ * @return receiverVersion The version of the OAppReceiver.sol contract.
+ *
+ * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.
+ * ie. this is a RECEIVE only OApp.
+ * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.
+ */
+ function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {
+ return (0, RECEIVER_VERSION);
+ }
+
+ /**
+ * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.
+ * @dev _origin The origin information containing the source endpoint and sender address.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address on the src chain.
+ * - nonce: The nonce of the message.
+ * @dev _message The lzReceive payload.
+ * @param _sender The sender address.
+ * @return isSender Is a valid sender.
+ *
+ * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
+ * @dev The default sender IS the OAppReceiver implementer.
+ */
+ function isComposeMsgSender(
+ Origin calldata /*_origin*/,
+ bytes calldata /*_message*/,
+ address _sender
+ ) public view virtual returns (bool) {
+ return _sender == address(this);
+ }
+
+ /**
+ * @notice Checks if the path initialization is allowed based on the provided origin.
+ * @param origin The origin information containing the source endpoint and sender address.
+ * @return Whether the path has been initialized.
+ *
+ * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.
+ * @dev This defaults to assuming if a peer has been set, its initialized.
+ * Can be overridden by the OApp if there is other logic to determine this.
+ */
+ function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {
+ return peers(origin.srcEid) == origin.sender;
+ }
+
+ /**
+ * @notice Retrieves the next nonce for a given source endpoint and sender address.
+ * @dev _srcEid The source endpoint ID.
+ * @dev _sender The sender address.
+ * @return nonce The next nonce.
+ *
+ * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.
+ * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.
+ * @dev This is also enforced by the OApp.
+ * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.
+ */
+ function nextNonce(uint32, /*_srcEid*/ bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {
+ return 0;
+ }
+
+ /**
+ * @dev Entry point for receiving messages or packets from the endpoint.
+ * @param _origin The origin information containing the source endpoint and sender address.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address on the src chain.
+ * - nonce: The nonce of the message.
+ * @param _guid The unique identifier for the received LayerZero message.
+ * @param _message The payload of the received message.
+ * @param _executor The address of the executor for the received message.
+ * @param _extraData Additional arbitrary data provided by the corresponding executor.
+ *
+ * @dev Entry point for receiving msg/packet from the LayerZero endpoint.
+ */
+ function lzReceive(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata _extraData
+ ) public payable virtual {
+ // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.
+ if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);
+
+ // Ensure that the sender matches the expected peer for the source endpoint.
+ if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);
+
+ // Call the internal OApp implementation of lzReceive.
+ _lzReceive(_origin, _guid, _message, _executor, _extraData);
+ }
+
+ /**
+ * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.
+ */
+ function _lzReceive(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata _extraData
+ ) internal virtual;
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/oapp/OAppSenderUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/oapp/OAppSenderUpgradeable.sol
new file mode 100644
index 000000000..e64caa26b
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/oapp/OAppSenderUpgradeable.sol
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { SafeERC20, IERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import { MessagingParams, MessagingFee, MessagingReceipt } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
+import { OAppCoreUpgradeable } from "./OAppCoreUpgradeable.sol";
+
+/**
+ * @title OAppSender
+ * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.
+ */
+abstract contract OAppSenderUpgradeable is OAppCoreUpgradeable {
+ using SafeERC20 for IERC20;
+
+ // Custom error messages
+ error NotEnoughNative(uint256 msgValue);
+ error LzTokenUnavailable();
+
+ // @dev The version of the OAppSender implementation.
+ // @dev Version is bumped when changes are made to this contract.
+ uint64 internal constant SENDER_VERSION = 1;
+
+ /**
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OAppSender_init(address _delegate) internal onlyInitializing {
+ __OAppCore_init(_delegate);
+ }
+
+ function __OAppSender_init_unchained() internal onlyInitializing {}
+
+ /**
+ * @notice Retrieves the OApp version information.
+ * @return senderVersion The version of the OAppSender.sol contract.
+ * @return receiverVersion The version of the OAppReceiver.sol contract.
+ *
+ * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.
+ * ie. this is a SEND only OApp.
+ * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions
+ */
+ function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {
+ return (SENDER_VERSION, 0);
+ }
+
+ /**
+ * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.
+ * @param _dstEid The destination endpoint ID.
+ * @param _message The message payload.
+ * @param _options Additional options for the message.
+ * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.
+ * @return fee The calculated MessagingFee for the message.
+ * - nativeFee: The native fee for the message.
+ * - lzTokenFee: The LZ token fee for the message.
+ */
+ function _quote(
+ uint32 _dstEid,
+ bytes memory _message,
+ bytes memory _options,
+ bool _payInLzToken
+ ) internal view virtual returns (MessagingFee memory fee) {
+ return
+ endpoint.quote(
+ MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),
+ address(this)
+ );
+ }
+
+ /**
+ * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.
+ * @param _dstEid The destination endpoint ID.
+ * @param _message The message payload.
+ * @param _options Additional options for the message.
+ * @param _fee The calculated LayerZero fee for the message.
+ * - nativeFee: The native fee.
+ * - lzTokenFee: The lzToken fee.
+ * @param _refundAddress The address to receive any excess fee values sent to the endpoint.
+ * @return receipt The receipt for the sent message.
+ * - guid: The unique identifier for the sent message.
+ * - nonce: The nonce of the sent message.
+ * - fee: The LayerZero fee incurred for the message.
+ */
+ function _lzSend(
+ uint32 _dstEid,
+ bytes memory _message,
+ bytes memory _options,
+ MessagingFee memory _fee,
+ address _refundAddress
+ ) internal virtual returns (MessagingReceipt memory receipt) {
+ // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.
+ uint256 messageValue = _payNative(_fee.nativeFee);
+ if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);
+
+ return
+ // solhint-disable-next-line check-send-result
+ endpoint.send{ value: messageValue }(
+ MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),
+ _refundAddress
+ );
+ }
+
+ /**
+ * @dev Internal function to pay the native fee associated with the message.
+ * @param _nativeFee The native fee to be paid.
+ * @return nativeFee The amount of native currency paid.
+ *
+ * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,
+ * this will need to be overridden because msg.value would contain multiple lzFees.
+ * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.
+ * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.
+ * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.
+ */
+ function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {
+ if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);
+ return _nativeFee;
+ }
+
+ /**
+ * @dev Internal function to pay the LZ token fee associated with the message.
+ * @param _lzTokenFee The LZ token fee to be paid.
+ *
+ * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.
+ * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().
+ */
+ function _payLzToken(uint256 _lzTokenFee) internal virtual {
+ // @dev Cannot cache the token because it is not immutable in the endpoint.
+ address lzToken = endpoint.lzToken();
+ if (lzToken == address(0)) revert LzTokenUnavailable();
+
+ // Pay LZ token fee by sending tokens to the endpoint.
+ IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/oapp/OAppUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/oapp/OAppUpgradeable.sol
new file mode 100644
index 000000000..bc235f643
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/oapp/OAppUpgradeable.sol
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers
+// solhint-disable-next-line no-unused-import
+import { OAppSenderUpgradeable, MessagingFee, MessagingReceipt } from "./OAppSenderUpgradeable.sol";
+// @dev Import the 'Origin' so it's exposed to OApp implementers
+// solhint-disable-next-line no-unused-import
+import { OAppReceiverUpgradeable, Origin } from "./OAppReceiverUpgradeable.sol";
+import { OAppCoreUpgradeable } from "./OAppCoreUpgradeable.sol";
+
+/**
+ * @title OApp
+ * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.
+ */
+abstract contract OAppUpgradeable is OAppSenderUpgradeable, OAppReceiverUpgradeable {
+ /**
+ * @dev Constructor to initialize the OApp with the provided endpoint and owner.
+ * @param _endpoint The address of the LOCAL LayerZero endpoint.
+ */
+ constructor(address _endpoint) OAppCoreUpgradeable(_endpoint) {}
+
+ /**
+ * @dev Initializes the OApp with the provided delegate.
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ *
+ * @dev The delegate typically should be set as the owner of the contract.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OApp_init(address _delegate) internal onlyInitializing {
+ __OAppCore_init(_delegate);
+ __OAppReceiver_init_unchained();
+ __OAppSender_init_unchained();
+ }
+
+ function __OApp_init_unchained() internal onlyInitializing {}
+
+ /**
+ * @notice Retrieves the OApp version information.
+ * @return senderVersion The version of the OAppSender.sol implementation.
+ * @return receiverVersion The version of the OAppReceiver.sol implementation.
+ */
+ function oAppVersion()
+ public
+ pure
+ virtual
+ override(OAppSenderUpgradeable, OAppReceiverUpgradeable)
+ returns (uint64 senderVersion, uint64 receiverVersion)
+ {
+ return (SENDER_VERSION, RECEIVER_VERSION);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/oapp/libs/OAppOptionsType3Upgradeable.sol b/packages/oapp-evm-upgradeable/contracts/oapp/libs/OAppOptionsType3Upgradeable.sol
new file mode 100644
index 000000000..a89dd3b1b
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/oapp/libs/OAppOptionsType3Upgradeable.sol
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol";
+
+/**
+ * @title OAppOptionsType3
+ * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.
+ */
+abstract contract OAppOptionsType3Upgradeable is IOAppOptionsType3, OwnableUpgradeable {
+ struct OAppOptionsType3Storage {
+ // @dev The "msgType" should be defined in the child contract.
+ mapping(uint32 => mapping(uint16 => bytes)) enforcedOptions;
+ }
+
+ // keccak256(abi.encode(uint256(keccak256("layerzerov2.storage.oappoptionstype3")) - 1)) & ~bytes32(uint256(0xff))
+ bytes32 private constant OAPP_OPTIONS_TYPE_3_STORAGE_LOCATION =
+ 0x8d2bda5d9f6ffb5796910376005392955773acee5548d0fcdb10e7c264ea0000;
+
+ uint16 internal constant OPTION_TYPE_3 = 3;
+
+ function _getOAppOptionsType3Storage() internal pure returns (OAppOptionsType3Storage storage $) {
+ assembly {
+ $.slot := OAPP_OPTIONS_TYPE_3_STORAGE_LOCATION
+ }
+ }
+
+ /**
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OAppOptionsType3_init() internal onlyInitializing {}
+
+ function __OAppOptionsType3_init_unchained() internal onlyInitializing {}
+
+ function enforcedOptions(uint32 _eid, uint16 _msgType) public view returns (bytes memory) {
+ OAppOptionsType3Storage storage $ = _getOAppOptionsType3Storage();
+ return $.enforcedOptions[_eid][_msgType];
+ }
+
+ /**
+ * @dev Sets the enforced options for specific endpoint and message type combinations.
+ * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.
+ *
+ * @dev Only the owner/admin of the OApp can call this function.
+ * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
+ * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.
+ * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay
+ * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
+ */
+ function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {
+ OAppOptionsType3Storage storage $ = _getOAppOptionsType3Storage();
+ for (uint256 i = 0; i < _enforcedOptions.length; i++) {
+ // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.
+ _assertOptionsType3(_enforcedOptions[i].options);
+ $.enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;
+ }
+
+ emit EnforcedOptionSet(_enforcedOptions);
+ }
+
+ /**
+ * @notice Combines options for a given endpoint and message type.
+ * @param _eid The endpoint ID.
+ * @param _msgType The OAPP message type.
+ * @param _extraOptions Additional options passed by the caller.
+ * @return options The combination of caller specified options AND enforced options.
+ *
+ * @dev If there is an enforced lzReceive option:
+ * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}
+ * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.
+ * @dev This presence of duplicated options is handled off-chain in the verifier/executor.
+ */
+ function combineOptions(
+ uint32 _eid,
+ uint16 _msgType,
+ bytes calldata _extraOptions
+ ) public view virtual returns (bytes memory) {
+ OAppOptionsType3Storage storage $ = _getOAppOptionsType3Storage();
+ bytes memory enforced = $.enforcedOptions[_eid][_msgType];
+
+ // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.
+ if (enforced.length == 0) return _extraOptions;
+
+ // No caller options, return enforced
+ if (_extraOptions.length == 0) return enforced;
+
+ // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.
+ if (_extraOptions.length >= 2) {
+ _assertOptionsType3(_extraOptions);
+ // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.
+ return bytes.concat(enforced, _extraOptions[2:]);
+ }
+
+ // No valid set of options was found.
+ revert InvalidOptions(_extraOptions);
+ }
+
+ /**
+ * @dev Internal function to assert that options are of type 3.
+ * @param _options The options to be checked.
+ */
+ function _assertOptionsType3(bytes calldata _options) internal pure virtual {
+ uint16 optionsType = uint16(bytes2(_options[0:2]));
+ if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol
new file mode 100644
index 000000000..4f3119957
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+import { IPreCrime } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol";
+import { IOAppPreCrimeSimulator, InboundPacket, Origin } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol";
+
+/**
+ * @title OAppPreCrimeSimulator
+ * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.
+ */
+abstract contract OAppPreCrimeSimulatorUpgradeable is IOAppPreCrimeSimulator, OwnableUpgradeable {
+ struct OAppPreCrimeSimulatorStorage {
+ // The address of the preCrime implementation.
+ address preCrime;
+ }
+
+ // keccak256(abi.encode(uint256(keccak256("layerzerov2.storage.oappprecrimesimulator")) - 1)) & ~bytes32(uint256(0xff))
+ bytes32 private constant OAPP_PRE_CRIME_SIMULATOR_STORAGE_LOCATION =
+ 0xefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b600;
+
+ function _getOAppPreCrimeSimulatorStorage() internal pure returns (OAppPreCrimeSimulatorStorage storage $) {
+ assembly {
+ $.slot := OAPP_PRE_CRIME_SIMULATOR_STORAGE_LOCATION
+ }
+ }
+
+ /**
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OAppPreCrimeSimulator_init() internal onlyInitializing {}
+
+ function __OAppPreCrimeSimulator_init_unchained() internal onlyInitializing {}
+
+ function preCrime() external view override returns (address) {
+ OAppPreCrimeSimulatorStorage storage $ = _getOAppPreCrimeSimulatorStorage();
+ return $.preCrime;
+ }
+
+ /**
+ * @dev Retrieves the address of the OApp contract.
+ * @return The address of the OApp contract.
+ *
+ * @dev The simulator contract is the base contract for the OApp by default.
+ * @dev If the simulator is a separate contract, override this function.
+ */
+ function oApp() external view virtual returns (address) {
+ return address(this);
+ }
+
+ /**
+ * @dev Sets the preCrime contract address.
+ * @param _preCrime The address of the preCrime contract.
+ */
+ function setPreCrime(address _preCrime) public virtual onlyOwner {
+ OAppPreCrimeSimulatorStorage storage $ = _getOAppPreCrimeSimulatorStorage();
+ $.preCrime = _preCrime;
+ emit PreCrimeSet(_preCrime);
+ }
+
+ /**
+ * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.
+ * @param _packets An array of InboundPacket objects representing received packets to be delivered.
+ *
+ * @dev WARNING: MUST revert at the end with the simulation results.
+ * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,
+ * WITHOUT actually executing them.
+ */
+ function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {
+ for (uint256 i = 0; i < _packets.length; i++) {
+ InboundPacket calldata packet = _packets[i];
+
+ // Ignore packets that are not from trusted peers.
+ if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;
+
+ // @dev Because a verifier is calling this function, it doesnt have access to executor params:
+ // - address _executor
+ // - bytes calldata _extraData
+ // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().
+ // They are instead stubbed to default values, address(0) and bytes("")
+ // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,
+ // which would cause the revert to be ignored.
+ this.lzReceiveSimulate{ value: packet.value }(
+ packet.origin,
+ packet.guid,
+ packet.message,
+ packet.executor,
+ packet.extraData
+ );
+ }
+
+ // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().
+ revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());
+ }
+
+ /**
+ * @dev Is effectively an internal function because msg.sender must be address(this).
+ * Allows resetting the call stack for 'internal' calls.
+ * @param _origin The origin information containing the source endpoint and sender address.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address on the src chain.
+ * - nonce: The nonce of the message.
+ * @param _guid The unique identifier of the packet.
+ * @param _message The message payload of the packet.
+ * @param _executor The executor address for the packet.
+ * @param _extraData Additional data for the packet.
+ */
+ function lzReceiveSimulate(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata _extraData
+ ) external payable virtual {
+ // @dev Ensure ONLY can be called 'internally'.
+ if (msg.sender != address(this)) revert OnlySelf();
+ _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);
+ }
+
+ /**
+ * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.
+ * @param _origin The origin information.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address from the src chain.
+ * - nonce: The nonce of the LayerZero message.
+ * @param _guid The GUID of the LayerZero message.
+ * @param _message The LayerZero message.
+ * @param _executor The address of the off-chain executor.
+ * @param _extraData Arbitrary data passed by the msg executor.
+ *
+ * @dev Enables the preCrime simulator to mock sending lzReceive() messages,
+ * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.
+ */
+ function _lzReceiveSimulate(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata _extraData
+ ) internal virtual;
+
+ /**
+ * @dev checks if the specified peer is considered 'trusted' by the OApp.
+ * @param _eid The endpoint Id to check.
+ * @param _peer The peer to check.
+ * @return Whether the peer passed is considered 'trusted' by the OApp.
+ */
+ function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/precrime/PreCrimeUpgradeable.sol b/packages/oapp-evm-upgradeable/contracts/precrime/PreCrimeUpgradeable.sol
new file mode 100644
index 000000000..4b67cad1a
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/precrime/PreCrimeUpgradeable.sol
@@ -0,0 +1,241 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+import { BytesLib } from "solidity-bytes-utils/contracts/BytesLib.sol";
+import { ILayerZeroEndpointV2 } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
+
+import { IPreCrime, PreCrimePeer } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol";
+import { IOAppPreCrimeSimulator } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol";
+import { InboundPacket, PacketDecoder } from "@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol";
+
+abstract contract PreCrimeUpgradeable is OwnableUpgradeable, IPreCrime {
+ using BytesLib for bytes;
+
+ struct PreCrimeStorage {
+ // preCrime config
+ uint64 maxBatchSize;
+ PreCrimePeer[] preCrimePeers;
+ }
+
+ // keccak256(abi.encode(uint256(keccak256("layerzerov2.storage.precrime")) - 1)) & ~bytes32(uint256(0xff))
+ bytes32 private constant PRE_CRIME_STORAGE_LOCATION =
+ 0x56af11d8938063b7ae95a808f88d40c589be3bbf4cb6facdbc642a7b38e01f00;
+
+ uint16 internal constant CONFIG_VERSION = 2;
+ address internal constant OFF_CHAIN_CALLER = address(0xDEAD);
+
+ address internal immutable lzEndpoint;
+ address public immutable simulator;
+ address public immutable oApp;
+
+ /// @dev getConfig(), simulate() and preCrime() are not view functions because it is more flexible to be able to
+ /// update state for some complex logic. So onlyOffChain() modifier is to make sure they are only called
+ /// by the off-chain.
+ modifier onlyOffChain() {
+ if (msg.sender != OFF_CHAIN_CALLER) revert OnlyOffChain();
+ _;
+ }
+
+ function _getPreCrimeStorage() internal pure returns (PreCrimeStorage storage $) {
+ assembly {
+ $.slot := PRE_CRIME_STORAGE_LOCATION
+ }
+ }
+
+ constructor(address _endpoint, address _simulator) {
+ lzEndpoint = _endpoint;
+ simulator = _simulator;
+ oApp = IOAppPreCrimeSimulator(_simulator).oApp();
+ }
+
+ /**
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __PreCrime_init() internal onlyInitializing {}
+
+ function __PreCrime_init_unchained() internal onlyInitializing {}
+
+ function maxBatchSize() external view returns (uint64) {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ return $.maxBatchSize;
+ }
+
+ function setMaxBatchSize(uint64 _maxBatchSize) external onlyOwner {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ $.maxBatchSize = _maxBatchSize;
+ }
+
+ function setPreCrimePeers(PreCrimePeer[] calldata _preCrimePeers) external onlyOwner {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ delete $.preCrimePeers;
+ for (uint256 i = 0; i < _preCrimePeers.length; ++i) {
+ $.preCrimePeers.push(_preCrimePeers[i]);
+ }
+ }
+
+ function getPreCrimePeers() public view returns (PreCrimePeer[] memory) {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ return $.preCrimePeers;
+ }
+
+ function getConfig(
+ bytes[] calldata _packets,
+ uint256[] calldata _packetMsgValues
+ ) external onlyOffChain returns (bytes memory) {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ bytes memory config = abi.encodePacked(CONFIG_VERSION, $.maxBatchSize);
+
+ // if no packets, return config with all peers
+ PreCrimePeer[] memory peers = _packets.length == 0
+ ? $.preCrimePeers
+ : _getPreCrimePeers(PacketDecoder.decode(_packets, _packetMsgValues));
+
+ if (peers.length > 0) {
+ uint16 size = uint16(peers.length);
+ config = abi.encodePacked(config, size);
+
+ for (uint256 i = 0; i < size; ++i) {
+ config = abi.encodePacked(config, peers[i].eid, peers[i].preCrime, peers[i].oApp);
+ }
+ }
+
+ return config;
+ }
+
+ // @dev _packetMsgValues refers to the 'lzReceive' option passed per packet
+ function simulate(
+ bytes[] calldata _packets,
+ uint256[] calldata _packetMsgValues
+ ) external payable override onlyOffChain returns (bytes memory) {
+ InboundPacket[] memory packets = PacketDecoder.decode(_packets, _packetMsgValues);
+ _checkPacketSizeAndOrder(packets);
+ return _simulate(packets);
+ }
+
+ function preCrime(
+ bytes[] calldata _packets,
+ uint256[] calldata _packetMsgValues,
+ bytes[] calldata _simulations
+ ) external onlyOffChain {
+ InboundPacket[] memory packets = PacketDecoder.decode(_packets, _packetMsgValues);
+ uint32[] memory eids = new uint32[](_simulations.length);
+ bytes[] memory simulations = new bytes[](_simulations.length);
+
+ for (uint256 i = 0; i < _simulations.length; ++i) {
+ bytes calldata simulation = _simulations[i];
+ eids[i] = uint32(bytes4(simulation[0:4]));
+ simulations[i] = simulation[4:];
+ }
+ _checkResultsCompleteness(packets, eids);
+
+ _preCrime(packets, eids, simulations);
+ }
+
+ function version() external pure returns (uint64 major, uint8 minor) {
+ return (2, 0);
+ }
+
+ function _checkResultsCompleteness(InboundPacket[] memory _packets, uint32[] memory _eids) internal {
+ // check if all peers result included
+ if (_packets.length > 0) {
+ PreCrimePeer[] memory peers = _getPreCrimePeers(_packets);
+ for (uint256 i = 0; i < peers.length; i++) {
+ uint32 expectedEid = peers[i].eid;
+ if (!_isContain(_eids, expectedEid)) revert SimulationResultNotFound(expectedEid);
+ }
+ }
+
+ // check if local result included
+ uint32 localEid = _getLocalEid();
+ if (!_isContain(_eids, localEid)) revert SimulationResultNotFound(localEid);
+ }
+
+ function _isContain(uint32[] memory _array, uint32 _item) internal pure returns (bool) {
+ for (uint256 i = 0; i < _array.length; i++) {
+ if (_array[i] == _item) return true;
+ }
+ return false;
+ }
+
+ function _checkPacketSizeAndOrder(InboundPacket[] memory _packets) internal view {
+ PreCrimeStorage storage $ = _getPreCrimeStorage();
+ if (_packets.length > $.maxBatchSize) revert PacketOversize($.maxBatchSize, _packets.length);
+
+ // check packets nonce, sequence order
+ // packets should ordered in ascending order by srcEid, sender, nonce
+ if (_packets.length > 0) {
+ uint32 srcEid;
+ bytes32 sender;
+ uint64 nonce;
+ for (uint256 i = 0; i < _packets.length; i++) {
+ InboundPacket memory packet = _packets[i];
+
+ // skip if not from trusted peer
+ if (!IOAppPreCrimeSimulator(simulator).isPeer(packet.origin.srcEid, packet.origin.sender)) continue;
+
+ if (
+ packet.origin.srcEid < srcEid || (packet.origin.srcEid == srcEid && packet.origin.sender < sender)
+ ) {
+ revert PacketUnsorted();
+ } else if (packet.origin.srcEid != srcEid || packet.origin.sender != sender) {
+ // start from a new chain or a new source oApp
+ srcEid = packet.origin.srcEid;
+ sender = packet.origin.sender;
+ nonce = _getInboundNonce(srcEid, sender);
+ }
+ // TODO ??
+ // Wont the nonce order not matter and enforced at the OApp level? the simulation will revert?
+
+ // the following packet's nonce add 1 in order
+ if (packet.origin.nonce != ++nonce) revert PacketUnsorted();
+ }
+ }
+ }
+
+ function _simulate(InboundPacket[] memory _packets) internal virtual returns (bytes memory) {
+ (bool success, bytes memory returnData) = simulator.call{ value: msg.value }(
+ abi.encodeWithSelector(IOAppPreCrimeSimulator.lzReceiveAndRevert.selector, _packets)
+ );
+
+ bytes memory result = _parseRevertResult(success, returnData);
+ return abi.encodePacked(_getLocalEid(), result); // add localEid at the first of the result
+ }
+
+ function _parseRevertResult(bool _success, bytes memory _returnData) internal pure returns (bytes memory result) {
+ // should always revert with LzReceiveRevert
+ if (_success) revert SimulationFailed("no revert");
+
+ // if not expected selector, bubble up error
+ if (bytes4(_returnData) != IOAppPreCrimeSimulator.SimulationResult.selector) {
+ revert SimulationFailed(_returnData);
+ }
+
+ // Slice the sighash. Remove the selector which is the first 4 bytes
+ result = _returnData.slice(4, _returnData.length - 4);
+ result = abi.decode(result, (bytes));
+ }
+
+ // to be compatible with EndpointV1
+ function _getLocalEid() internal view virtual returns (uint32) {
+ return ILayerZeroEndpointV2(lzEndpoint).eid();
+ }
+
+ // to be compatible with EndpointV1
+ function _getInboundNonce(uint32 _srcEid, bytes32 _sender) internal view virtual returns (uint64) {
+ return ILayerZeroEndpointV2(lzEndpoint).inboundNonce(oApp, _srcEid, _sender);
+ }
+
+ // ----------------- to be implemented -----------------
+ function buildSimulationResult() external view virtual override returns (bytes memory);
+
+ function _getPreCrimePeers(InboundPacket[] memory _packets) internal virtual returns (PreCrimePeer[] memory peers);
+
+ function _preCrime(
+ InboundPacket[] memory _packets,
+ uint32[] memory _eids,
+ bytes[] memory _simulations
+ ) internal virtual;
+}
diff --git a/packages/oapp-evm-upgradeable/contracts/precrime/extensions/PreCrimeE1Upgradeable.sol b/packages/oapp-evm-upgradeable/contracts/precrime/extensions/PreCrimeE1Upgradeable.sol
new file mode 100644
index 000000000..20f75b1ff
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/contracts/precrime/extensions/PreCrimeE1Upgradeable.sol
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
+
+import { ILayerZeroEndpoint } from "@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol";
+
+import { PreCrimeUpgradeable } from "../PreCrimeUpgradeable.sol";
+
+abstract contract PreCrimeE1Upgradeable is PreCrimeUpgradeable {
+ using SafeCast for uint32;
+
+ uint32 internal immutable localEid;
+
+ constructor(uint32 _localEid, address _endpoint, address _simulator) PreCrimeUpgradeable(_endpoint, _simulator) {
+ localEid = _localEid;
+ }
+
+ /**
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __PreCrimeE1_init() internal onlyInitializing {}
+
+ function __PreCrimeE1_init_unchained() internal onlyInitializing {}
+
+ function _getLocalEid() internal view override returns (uint32) {
+ return localEid;
+ }
+
+ function _getInboundNonce(uint32 _srcEid, bytes32 _sender) internal view override returns (uint64) {
+ bytes memory path = _getPath(_srcEid, _sender);
+ return ILayerZeroEndpoint(lzEndpoint).getInboundNonce(_srcEid.toUint16(), path);
+ }
+
+ function _getPath(uint32 _srcEid, bytes32 _sender) internal view virtual returns (bytes memory);
+}
diff --git a/packages/oapp-evm-upgradeable/foundry.toml b/packages/oapp-evm-upgradeable/foundry.toml
new file mode 100644
index 000000000..f5ea481ec
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/foundry.toml
@@ -0,0 +1,20 @@
+[profile.default]
+solc = '0.8.22'
+verbosity = 3
+src = "contracts"
+test = "test"
+out = "artifacts"
+cache_path = "cache"
+optimizer = true
+optimizer_runs = 200
+
+remappings = [
+ 'ds-test/=node_modules/@layerzerolabs/toolbox-foundry/src/ds-test/src/',
+ 'forge-std/=node_modules/@layerzerolabs/toolbox-foundry/src/forge-std/src/',
+ '@openzeppelin=node_modules/@openzeppelin/',
+ 'solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/',
+ '@layerzerolabs=node_modules/@layerzerolabs/',
+]
+
+[fuzz]
+runs = 1000
diff --git a/packages/oapp-evm-upgradeable/package.json b/packages/oapp-evm-upgradeable/package.json
new file mode 100644
index 000000000..4594d6f5e
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/package.json
@@ -0,0 +1,60 @@
+{
+ "name": "@layerzerolabs/oapp-evm-upgradeable",
+ "version": "0.0.1",
+ "description": "LayerZero Labs reference EVM OmniChain Application (OApp) implementation",
+ "keywords": [
+ "LayerZero",
+ "OmniChain",
+ "EndpointV2",
+ "EVM",
+ "OApp",
+ "Upgradeable"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/LayerZero-Labs/devtools.git",
+ "directory": "packages/oapp-evm-upgradeable"
+ },
+ "license": "MIT",
+ "exports": {
+ "./package.json": "./package.json",
+ "./artifacts/*.json": {
+ "require": "./artifacts/*.json",
+ "imports": "./artifacts/*.json"
+ }
+ },
+ "files": [
+ "artifacts/**/*",
+ "contracts/**/*",
+ "test/**/*"
+ ],
+ "scripts": {
+ "build": "$npm_execpath compile",
+ "clean": "rm -rf .turbo cache artifacts",
+ "compile": "$npm_execpath forge build",
+ "test": "$npm_execpath forge test"
+ },
+ "dependencies": {
+ "ethers": "^5.7.2"
+ },
+ "devDependencies": {
+ "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.39",
+ "@layerzerolabs/oapp-evm": "^0.0.4",
+ "@layerzerolabs/test-devtools-evm-foundry": "~1.0.0",
+ "@layerzerolabs/toolbox-foundry": "^0.1.9",
+ "@openzeppelin/contracts": "^5.0.2",
+ "@openzeppelin/contracts-upgradeable": "^5.0.2"
+ },
+ "peerDependencies": {
+ "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.39",
+ "@openzeppelin/contracts": "^4.8.1 || ^5.0.0",
+ "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/test/OptionsHelper.sol b/packages/oapp-evm-upgradeable/test/OptionsHelper.sol
new file mode 100644
index 000000000..bf227cd5d
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/test/OptionsHelper.sol
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: UNLICENSED
+
+pragma solidity ^0.8.0;
+
+import { ExecutorOptions } from "@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/ExecutorOptions.sol";
+import { UlnOptions } from "@layerzerolabs/lz-evm-messagelib-v2/contracts/uln/libs/UlnOptions.sol";
+
+contract UlnOptionsMock {
+ using UlnOptions for bytes;
+
+ function decode(
+ bytes calldata _options
+ ) public pure returns (bytes memory executorOptions, bytes memory dvnOptions) {
+ return UlnOptions.decode(_options);
+ }
+}
+
+contract OptionsHelper {
+ UlnOptionsMock ulnOptions = new UlnOptionsMock();
+
+ function _parseExecutorLzReceiveOption(bytes memory _options) internal view returns (uint256 gas, uint256 value) {
+ (bool exist, bytes memory option) = _getExecutorOptionByOptionType(
+ _options,
+ ExecutorOptions.OPTION_TYPE_LZRECEIVE
+ );
+ require(exist, "OptionsHelper: lzReceive option not found");
+ (gas, value) = this.decodeLzReceiveOption(option);
+ }
+
+ function _parseExecutorNativeDropOption(
+ bytes memory _options
+ ) internal view returns (uint256 amount, bytes32 receiver) {
+ (bool exist, bytes memory option) = _getExecutorOptionByOptionType(
+ _options,
+ ExecutorOptions.OPTION_TYPE_NATIVE_DROP
+ );
+ require(exist, "OptionsHelper: nativeDrop option not found");
+ (amount, receiver) = this.decodeNativeDropOption(option);
+ }
+
+ function _parseExecutorLzComposeOption(
+ bytes memory _options
+ ) internal view returns (uint16 index, uint256 gas, uint256 value) {
+ (bool exist, bytes memory option) = _getExecutorOptionByOptionType(
+ _options,
+ ExecutorOptions.OPTION_TYPE_LZCOMPOSE
+ );
+ require(exist, "OptionsHelper: lzCompose option not found");
+ return this.decodeLzComposeOption(option);
+ }
+
+ function _executorOptionExists(
+ bytes memory _options,
+ uint8 _executorOptionType
+ ) internal view returns (bool exist) {
+ (exist, ) = _getExecutorOptionByOptionType(_options, _executorOptionType);
+ }
+
+ function _getExecutorOptionByOptionType(
+ bytes memory _options,
+ uint8 _executorOptionType
+ ) internal view returns (bool exist, bytes memory option) {
+ (bytes memory executorOpts, ) = ulnOptions.decode(_options);
+
+ uint256 cursor;
+ while (cursor < executorOpts.length) {
+ (uint8 optionType, bytes memory op, uint256 nextCursor) = this.nextExecutorOption(executorOpts, cursor);
+ if (optionType == _executorOptionType) {
+ return (true, op);
+ }
+ cursor = nextCursor;
+ }
+ }
+
+ function nextExecutorOption(
+ bytes calldata _options,
+ uint256 _cursor
+ ) external pure returns (uint8 optionType, bytes calldata option, uint256 cursor) {
+ return ExecutorOptions.nextExecutorOption(_options, _cursor);
+ }
+
+ function decodeLzReceiveOption(bytes calldata _option) external pure returns (uint128 gas, uint128 value) {
+ return ExecutorOptions.decodeLzReceiveOption(_option);
+ }
+
+ function decodeNativeDropOption(bytes calldata _option) external pure returns (uint128 amount, bytes32 receiver) {
+ return ExecutorOptions.decodeNativeDropOption(_option);
+ }
+
+ function decodeLzComposeOption(
+ bytes calldata _option
+ ) external pure returns (uint16 index, uint128 gas, uint128 value) {
+ return ExecutorOptions.decodeLzComposeOption(_option);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/test/PreCrimeV2.t.sol b/packages/oapp-evm-upgradeable/test/PreCrimeV2.t.sol
new file mode 100644
index 000000000..e73a15593
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/test/PreCrimeV2.t.sol
@@ -0,0 +1,381 @@
+// SPDX-License-Identifier: UNLICENSED
+
+pragma solidity ^0.8.15;
+
+import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+
+import { Origin } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
+
+import { IPreCrime, PreCrimePeer } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol";
+import { InboundPacket } from "@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol";
+
+import { TestHelperOz5 } from "@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol";
+
+import { PreCrimeV2UpgradeableMock } from "./mocks/PreCrimeV2UpgradeableMock.sol";
+import { PreCrimeV2SimulatorUpgradeableMock } from "./mocks/PreCrimeV2SimulatorUpgradeableMock.sol";
+
+import "forge-std/console.sol";
+
+contract PreCrimeV2Test is TestHelperOz5 {
+ uint8 constant DEFAULT_NUM_PEERS = 3;
+ uint64 constant DEFAULT_MAX_BATCH_SIZE = 4;
+
+ uint32 constant EID_B = 2;
+ uint32 constant EID_C = 3;
+ bytes32 constant SENDER_B = 0x0000000000000000000000000000000000000000000000000000000000000002;
+ bytes32 constant SENDER_C = 0x0000000000000000000000000000000000000000000000000000000000000003;
+
+ uint32 constant DST_EID = 1;
+
+ uint16 constant CONFIG_VERSION = 2;
+ uint64 constant MAX_BATCH_SIZE = 4;
+ address constant OFF_CHAIN = address(0xDEAD);
+
+ PreCrimeV2UpgradeableMock preCrime;
+ PreCrimeV2SimulatorUpgradeableMock simulator;
+
+ PreCrimePeer[] preCrimePeers;
+
+ address public proxyAdmin = makeAddr("proxyAdmin");
+
+ function _deployContractAndProxy(
+ bytes memory _oappBytecode,
+ bytes memory _constructorArgs,
+ bytes memory _initializeArgs
+ ) internal returns (address addr) {
+ bytes memory bytecode = bytes.concat(abi.encodePacked(_oappBytecode), _constructorArgs);
+ assembly {
+ addr := create(0, add(bytecode, 0x20), mload(bytecode))
+ if iszero(extcodesize(addr)) {
+ revert(0, 0)
+ }
+ }
+
+ return address(new TransparentUpgradeableProxy(addr, proxyAdmin, _initializeArgs));
+ }
+
+ function setUpPreCrime(uint8 _numPeers, uint64 _maxBatchSize) private {
+ setUpEndpoints(_numPeers, LibraryType.SimpleMessageLib);
+
+ simulator = PreCrimeV2SimulatorUpgradeableMock(
+ _deployContractAndProxy(
+ type(PreCrimeV2SimulatorUpgradeableMock).creationCode,
+ new bytes(0),
+ abi.encodeWithSelector(PreCrimeV2SimulatorUpgradeableMock.initialize.selector, address(this))
+ )
+ );
+ preCrime = PreCrimeV2UpgradeableMock(
+ _deployContractAndProxy(
+ type(PreCrimeV2UpgradeableMock).creationCode,
+ abi.encode(address(endpoints[1]), address(simulator)),
+ abi.encodeWithSelector(PreCrimeV2UpgradeableMock.initialize.selector, address(this))
+ )
+ );
+
+ for (uint8 i = 2; i <= _numPeers; i++) {
+ preCrimePeers.push(PreCrimePeer(uint32(i), bytes32(uint256(i)), bytes32(uint256(i))));
+ }
+
+ preCrime.setPreCrimePeers(preCrimePeers);
+ preCrime.setMaxBatchSize(_maxBatchSize);
+ }
+
+ function checkPreCrimeParams(uint8 _numPeers, uint64 _maxBatchSize) private pure {
+ vm.assume(_numPeers > 0 && _numPeers <= 10);
+ vm.assume(_maxBatchSize >= 1 && _maxBatchSize <= 50);
+ }
+
+ function checkAndSetupPreCrime(uint8 _numPeers, uint64 _maxBatchSize) private {
+ checkPreCrimeParams(_numPeers, _maxBatchSize);
+ setUpPreCrime(_numPeers, _maxBatchSize);
+ }
+
+ function setUpDefaultPreCrime() private {
+ setUpPreCrime(DEFAULT_NUM_PEERS, DEFAULT_MAX_BATCH_SIZE);
+ }
+
+ function test_getConfig_no_packets(uint256[] calldata _packetMsgValues) public {
+ setUpDefaultPreCrime();
+
+ // return config with all peers if no packet
+ vm.startPrank(OFF_CHAIN);
+ bytes memory config = preCrime.getConfig(new bytes[](0), _packetMsgValues);
+ bytes memory expectedConfig = abi.encodePacked(CONFIG_VERSION, MAX_BATCH_SIZE, _encodePeers(preCrimePeers));
+ assertEq(config, expectedConfig);
+ }
+
+ function test_getConfig_untrusted_peer(uint8 _numPeers, uint64 _maxBatchSize, bytes32 _untrustedPeer) public {
+ checkAndSetupPreCrime(_numPeers, _maxBatchSize);
+ // ensure the fuzzed address is not a multiple of ADDRESS_MULTIPLIER
+ vm.assume(uint256(_untrustedPeer) == 0 || uint256(_untrustedPeer) > _numPeers);
+
+ // return config without peers if packet from untrusted peer
+ bytes[] memory packets = _buildPacket(2, _untrustedPeer, 1, 1); // untrusted peer
+ vm.startPrank(OFF_CHAIN);
+ bytes memory config = preCrime.getConfig(packets, new uint256[](1));
+ bytes memory expectedConfig = abi.encodePacked(CONFIG_VERSION, _maxBatchSize);
+ assertEq(config, expectedConfig);
+ }
+
+ function test_getConfig_trusted_peer(uint8 _numPeers, uint64 _maxBatchSize) public {
+ vm.assume(_numPeers > 1);
+ checkAndSetupPreCrime(_numPeers, _maxBatchSize);
+
+ // return config with peers if packet from trusted peer
+ for (uint8 i = 2; i <= _numPeers; i++) {
+ bytes[] memory packets = _buildPacket(i, bytes32(uint256(i)), 1, 1); // trusted peer
+ vm.startPrank(OFF_CHAIN);
+ bytes memory config = preCrime.getConfig(packets, new uint256[](1));
+ bytes memory expectedConfig = abi.encodePacked(CONFIG_VERSION, _maxBatchSize, _encodePeers(preCrimePeers));
+ assertEq(config, expectedConfig);
+ }
+ }
+
+ function test_simulate_packetOverSize(uint64 _batchSize) public {
+ vm.assume(_batchSize > 0 && _batchSize < 1000);
+ setUpPreCrime(DEFAULT_NUM_PEERS, _batchSize);
+
+ uint256[] memory packetMsgValues = new uint256[](_batchSize + 1);
+ bytes[] memory packets = _buildPacket(2, bytes32(uint256(2)), 1, _batchSize + 1); // too many packets
+ vm.startPrank(OFF_CHAIN);
+ bytes memory expectedError = abi.encodeWithSelector(
+ IPreCrime.PacketOversize.selector,
+ _batchSize,
+ _batchSize + 1
+ );
+ vm.expectRevert(expectedError);
+ preCrime.simulate(packets, packetMsgValues);
+ }
+
+ // Sets up a test scenario to ensure input packets are ordered and not interleaved. There are 4 peers:
+ // A: dstEid = 1
+ // B: srcEid = 2, sender = 0x0000000000000000000000000000000000000000000000000000000000000002
+ // C: srcEid = 3, sender = 0x0000000000000000000000000000000000000000000000000000000000000003
+ // The test then calls simulate() with:
+ // 1. numPacketsB from B to A starting at startingNonceB
+ // 2. numPacketsC from C to A starting at startingNonceC
+ // 3. One packet from B to A starting at startingNonceB + numPacketsB + 1
+ // PacketUnsorted is expected.
+ function test_simulate_packetUnsorted_interleaving_peers(
+ uint8 _numPacketsB,
+ uint64 _startingNonceB,
+ uint8 _numPacketsC,
+ uint64 _startingNonceC
+ ) public {
+ // numPacketsA and numPacketsB must be positive in order to cause interleaving
+ vm.assume(_numPacketsB > 0);
+ vm.assume(_numPacketsC > 0);
+
+ // calculate the last nonce sent by B and C, ensuring that the container does not overflow
+ uint128 endingNonceB = (uint128(_startingNonceB) + uint128(_numPacketsB));
+ uint128 endingNonceC = (uint128(_startingNonceC) + uint128(_numPacketsC));
+ vm.assume(endingNonceB < type(uint64).max);
+ vm.assume(endingNonceC < type(uint64).max);
+
+ uint64 totalPackets = uint64(_numPacketsB) + uint64(_numPacketsC) + 1; // 1 extra for the interleave at the end
+
+ setUpPreCrime(DEFAULT_NUM_PEERS, totalPackets);
+
+ uint256[] memory packetMsgValues = new uint256[](totalPackets);
+ bytes[] memory unsortedPackets = new bytes[](totalPackets);
+
+ // B -> A
+ bytes[] memory sortedPacketsB = _buildPacket(EID_B, SENDER_B, _startingNonceB, _numPacketsB);
+ assertEq(sortedPacketsB.length, _numPacketsB);
+ uint256 j = 0;
+ for (uint256 i = 0; i < _numPacketsB; i++) {
+ unsortedPackets[j++] = sortedPacketsB[i];
+ }
+ // C -> A
+ bytes[] memory sortedPacketsC = _buildPacket(EID_C, SENDER_C, _startingNonceC, _numPacketsC);
+ assertEq(sortedPacketsC.length, _numPacketsC);
+ for (uint256 i = 0; i < _numPacketsC; i++) {
+ unsortedPackets[j++] = sortedPacketsC[i];
+ }
+ // B -> A (interleaved)
+ unsortedPackets[j++] = _buildPacket(EID_B, SENDER_B, _startingNonceB + _numPacketsB + 1, 1)[0]; // unsorted
+
+ vm.startPrank(OFF_CHAIN);
+ bytes memory expectedError = abi.encodeWithSelector(IPreCrime.PacketUnsorted.selector);
+ vm.expectRevert(expectedError);
+ preCrime.simulate(unsortedPackets, packetMsgValues);
+ }
+
+ function test_simulate_packetUnsorted_one_unordered_peer(
+ uint8 _numPacketsB,
+ uint64 _startingNonceB,
+ uint8 _replaceIndexOffset // added to _startingNonceB to get the index of the packet to replace
+ ) public {
+ // 1. numPacketsB must be at least 3 to ensure that the replaceIndex is within bounds
+ // 2. replaceIndexOffset must be less than numPacketsB to ensure that the replaceIndex is within bounds
+ vm.assume(_numPacketsB >= 3);
+ vm.assume(_replaceIndexOffset < _numPacketsB - 2);
+ // 3. calculate the last nonce sent by B and C, ensuring that the container does not overflow
+ uint128 endingNonceB = (uint128(_startingNonceB) + uint128(_numPacketsB));
+ vm.assume(endingNonceB < type(uint64).max);
+ // 4. calculate the index of the packet to replace
+ uint64 replaceIndex = _replaceIndexOffset + _startingNonceB;
+ vm.assume(replaceIndex > _startingNonceB && replaceIndex < endingNonceB - 2);
+
+ setUpPreCrime(DEFAULT_NUM_PEERS, _numPacketsB);
+
+ uint256[] memory packetMsgValues = new uint256[](_numPacketsB);
+ bytes[] memory unsortedPackets = _buildPacket(EID_B, SENDER_B, _startingNonceB, _numPacketsB);
+ unsortedPackets[replaceIndex - _startingNonceB] = _encodePacket(
+ InboundPacket(
+ Origin(EID_B, SENDER_B, 0),
+ DST_EID,
+ address(uint160(uint256(SENDER_B))), //preCrime.oApp(),
+ bytes32(0), // guid
+ 0, // value
+ address(0), // executor
+ "", // message
+ "" // extraData
+ )
+ );
+
+ vm.startPrank(OFF_CHAIN);
+ bytes memory expectedError = abi.encodeWithSelector(IPreCrime.PacketUnsorted.selector);
+ vm.expectRevert(expectedError);
+ preCrime.simulate(unsortedPackets, packetMsgValues);
+ }
+
+ function test_simulate_failed() public {
+ uint32 invalidPeerEid = 0; // see PrecrimeV2SimulatorMock, which hardcodes eid=0 as InvalidEid
+ setUpDefaultPreCrime();
+
+ // empty packetMsgValues to be reused
+ uint256[] memory packetMsgValues = new uint256[](1);
+ bytes[] memory packets = _buildPacket(invalidPeerEid, bytes32(0), 1, 1); // invalid packet and simulation failed
+ vm.startPrank(OFF_CHAIN);
+ bytes memory expectedError = abi.encodeWithSelector(
+ IPreCrime.SimulationFailed.selector,
+ abi.encodeWithSelector(PreCrimeV2SimulatorUpgradeableMock.InvalidEid.selector)
+ );
+ vm.expectRevert(expectedError);
+ preCrime.simulate(packets, packetMsgValues);
+ }
+
+ function test_simulate(uint8 _numPacketsB, uint8 _numPacketsC) public {
+ vm.assume(_numPacketsB > 0 && _numPacketsC > 0);
+ uint64 totalPackets = uint32(_numPacketsB) + uint32(_numPacketsC);
+ setUpPreCrime(DEFAULT_NUM_PEERS, totalPackets);
+
+ uint256[] memory packetMsgValues = new uint256[](totalPackets);
+ bytes[] memory packets = _buildPacket(EID_B, SENDER_B, 1, _numPacketsB);
+ packets = _appendPackets(packets, _buildPacket(EID_C, SENDER_C, 1, _numPacketsC));
+ assertEq(packets.length, totalPackets);
+
+ vm.startPrank(OFF_CHAIN);
+ bytes memory result = preCrime.simulate(packets, packetMsgValues);
+ bytes memory expectedResult = abi.encodePacked(DST_EID, uint256(totalPackets));
+ assertEq(result, expectedResult);
+ }
+
+ function test_preCrime_simulationResultNotFound() public {
+ setUpDefaultPreCrime();
+
+ uint256[] memory packetMsgValues = new uint256[](1);
+ bytes[] memory packets = _buildPacket(2, bytes32(uint256(2)), 1, 1);
+
+ // result of eid 3 not found
+ bytes[] memory results = new bytes[](2);
+ results[0] = abi.encodePacked(uint32(1), uint256(1));
+ results[1] = abi.encodePacked(uint32(2), uint256(1));
+
+ vm.startPrank(OFF_CHAIN);
+ bytes memory expectedError = abi.encodeWithSelector(IPreCrime.SimulationResultNotFound.selector, 3);
+ vm.expectRevert(expectedError);
+ preCrime.preCrime(packets, packetMsgValues, results);
+
+ // result of eid 1 (local result) not found
+ results[0] = abi.encodePacked(uint32(2), uint256(1));
+ results[1] = abi.encodePacked(uint32(3), uint256(1));
+
+ expectedError = abi.encodeWithSelector(IPreCrime.SimulationResultNotFound.selector, 1);
+ vm.expectRevert(expectedError);
+ preCrime.preCrime(packets, packetMsgValues, results);
+ }
+
+ function test_preCrime() public {
+ setUpDefaultPreCrime();
+
+ uint256[] memory packetMsgValues = new uint256[](1);
+ bytes[] memory packets = _buildPacket(2, bytes32(uint256(2)), 1, 1);
+
+ bytes[] memory results = new bytes[](3);
+ results[0] = abi.encodePacked(uint32(1), uint256(1));
+ results[1] = abi.encodePacked(uint32(2), uint256(2));
+ results[2] = abi.encodePacked(uint32(3), uint256(3));
+
+ vm.startPrank(OFF_CHAIN);
+ preCrime.preCrime(packets, packetMsgValues, results);
+
+ // check internal state of preCrime
+ assertEq(preCrime.eids(0), 1);
+ assertEq(preCrime.eids(1), 2);
+ assertEq(preCrime.eids(2), 3);
+ assertEq(preCrime.results(0), abi.encode(1));
+ assertEq(preCrime.results(1), abi.encode(2));
+ assertEq(preCrime.results(2), abi.encode(3));
+ }
+
+ function _buildPacket(
+ uint32 _srcEid,
+ bytes32 _sender,
+ uint64 _nonce,
+ uint256 _numPackets
+ ) internal view returns (bytes[] memory) {
+ bytes[] memory packets = new bytes[](_numPackets);
+ for (uint256 i = 0; i < _numPackets; ++i) {
+ InboundPacket memory packet = InboundPacket(
+ Origin(_srcEid, _sender, _nonce + uint64(i)),
+ DST_EID,
+ preCrime.oApp(),
+ bytes32(0), // guid
+ 0, // value
+ address(0), // executor
+ "", // message
+ "" // extraData
+ );
+ packets[i] = _encodePacket(packet);
+ }
+ return packets;
+ }
+
+ function _encodePacket(InboundPacket memory _packet) internal pure returns (bytes memory encodedPacket) {
+ encodedPacket = abi.encodePacked(
+ uint8(1),
+ _packet.origin.nonce,
+ _packet.origin.srcEid,
+ _packet.origin.sender,
+ _packet.dstEid,
+ bytes32(uint256(uint160(_packet.receiver))),
+ _packet.guid,
+ _packet.value,
+ _packet.message
+ );
+ }
+
+ function _appendPackets(
+ bytes[] memory _packets,
+ bytes[] memory _newPackets
+ ) internal pure returns (bytes[] memory) {
+ bytes[] memory packets = new bytes[](_packets.length + _newPackets.length);
+ for (uint256 i = 0; i < _packets.length; ++i) {
+ packets[i] = _packets[i];
+ }
+ for (uint256 i = 0; i < _newPackets.length; ++i) {
+ packets[_packets.length + i] = _newPackets[i];
+ }
+ return packets;
+ }
+
+ function _encodePeers(PreCrimePeer[] memory _peers) internal pure returns (bytes memory) {
+ bytes memory peers = abi.encodePacked(uint16(_peers.length));
+ for (uint256 i = 0; i < _peers.length; ++i) {
+ peers = abi.encodePacked(peers, _peers[i].eid, _peers[i].preCrime, _peers[i].oApp);
+ }
+ return peers;
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/test/mocks/ERC20Mock.sol b/packages/oapp-evm-upgradeable/test/mocks/ERC20Mock.sol
new file mode 100644
index 000000000..6ce17e418
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/test/mocks/ERC20Mock.sol
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.20;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract ERC20Mock is ERC20 {
+ constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol b/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol
new file mode 100644
index 000000000..2ebc342d5
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { Origin } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+
+import { OAppPreCrimeSimulatorUpgradeable } from "../../contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol";
+
+contract PreCrimeV2SimulatorUpgradeableMock is OAppPreCrimeSimulatorUpgradeable {
+ uint256 public count;
+
+ error InvalidEid();
+
+ function initialize(address _delegate) external initializer {
+ __Ownable_init(_delegate);
+ }
+
+ function _lzReceiveSimulate(
+ Origin calldata _origin,
+ bytes32 /*_guid*/,
+ bytes calldata /*_message*/,
+ address /*_executor*/,
+ bytes calldata /*_extraData*/
+ ) internal override {
+ if (_origin.srcEid == 0) revert InvalidEid();
+ count++;
+ }
+
+ function isPeer(uint32 _eid, bytes32 _peer) public pure override returns (bool) {
+ return bytes32(uint256(_eid)) == _peer;
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol b/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol
new file mode 100644
index 000000000..d80881002
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { PreCrimePeer } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol";
+import { IOAppPreCrimeSimulator } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol";
+import { PreCrimeUpgradeable } from "../../contracts/precrime/PreCrimeUpgradeable.sol";
+import { InboundPacket } from "@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol";
+
+import { PreCrimeV2SimulatorUpgradeableMock } from "./PreCrimeV2SimulatorUpgradeableMock.sol";
+
+contract PreCrimeV2UpgradeableMock is PreCrimeUpgradeable {
+ constructor(address _endpoint, address _simulator) PreCrimeUpgradeable(_endpoint, _simulator) {}
+
+ uint32[] public eids;
+ bytes[] public results;
+
+ function initialize(address _delegate) external initializer {
+ __Ownable_init(_delegate);
+ }
+
+ function buildSimulationResult() external view override returns (bytes memory) {
+ return abi.encode(PreCrimeV2SimulatorUpgradeableMock(simulator).count());
+ }
+
+ function _getPreCrimePeers(
+ InboundPacket[] memory _packets
+ ) internal view override returns (PreCrimePeer[] memory peers) {
+ for (uint256 i = 0; i < _packets.length; i++) {
+ InboundPacket memory packet = _packets[i];
+ if (IOAppPreCrimeSimulator(simulator).isPeer(packet.origin.srcEid, packet.origin.sender)) {
+ return getPreCrimePeers();
+ }
+ }
+ return (new PreCrimePeer[](0));
+ }
+
+ function _preCrime(InboundPacket[] memory, uint32[] memory _eids, bytes[] memory _results) internal override {
+ eids = _eids;
+ results = _results;
+ }
+}
diff --git a/packages/oapp-evm-upgradeable/turbo.json b/packages/oapp-evm-upgradeable/turbo.json
new file mode 100644
index 000000000..f58771b8c
--- /dev/null
+++ b/packages/oapp-evm-upgradeable/turbo.json
@@ -0,0 +1,8 @@
+{
+ "extends": ["//"],
+ "pipeline": {
+ "build": {
+ "outputs": ["dist/**", "artifacts*/**", "cache*/**"]
+ }
+ }
+}
diff --git a/packages/oft-evm-upgradeable/.gitignore b/packages/oft-evm-upgradeable/.gitignore
new file mode 100644
index 000000000..ed84b8b8c
--- /dev/null
+++ b/packages/oft-evm-upgradeable/.gitignore
@@ -0,0 +1,6 @@
+out
+cache
+
+# artifacts; ignore all files except the local contract artifacts.
+artifacts/*
+!artifacts/oft/*
\ No newline at end of file
diff --git a/packages/oft-evm-upgradeable/README.md b/packages/oft-evm-upgradeable/README.md
new file mode 100644
index 000000000..3f39e52d3
--- /dev/null
+++ b/packages/oft-evm-upgradeable/README.md
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+@layerzerolabs/oft-evm-upgradeable
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+```bash
+pnpm install @layerzerolabs/oft-evm-upgradeable
+```
+
+```bash
+pnpm install @layerzerolabs/oft-evm-upgradeable
+```
+
+```bash
+npm install @layerzerolabs/oft-evm-upgradeable
+```
diff --git a/packages/oft-evm-upgradeable/contracts/oft/OFTAdapterUpgradeable.sol b/packages/oft-evm-upgradeable/contracts/oft/OFTAdapterUpgradeable.sol
new file mode 100644
index 000000000..c813b9521
--- /dev/null
+++ b/packages/oft-evm-upgradeable/contracts/oft/OFTAdapterUpgradeable.sol
@@ -0,0 +1,119 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { IERC20Metadata, IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import { IOFT, OFTCoreUpgradeable } from "./OFTCoreUpgradeable.sol";
+
+/**
+ * @title OFTAdapter Contract
+ * @dev OFTAdapter is a contract that adapts an ERC-20 token to the OFT functionality.
+ *
+ * @dev For existing ERC20 tokens, this can be used to convert the token to crosschain compatibility.
+ * @dev WARNING: ONLY 1 of these should exist for a given global mesh,
+ * unless you make a NON-default implementation of OFT and needs to be done very carefully.
+ * @dev WARNING: The default OFTAdapter implementation assumes LOSSLESS transfers, ie. 1 token in, 1 token out.
+ * IF the 'innerToken' applies something like a transfer fee, the default will NOT work...
+ * a pre/post balance check will need to be done to calculate the amountSentLD/amountReceivedLD.
+ */
+abstract contract OFTAdapterUpgradeable is OFTCoreUpgradeable {
+ using SafeERC20 for IERC20;
+
+ IERC20 internal immutable innerToken;
+
+ /**
+ * @dev Constructor for the OFTAdapter contract.
+ * @param _token The address of the ERC-20 token to be adapted.
+ * @param _lzEndpoint The LayerZero endpoint address.
+ * @dev _token must implement the IERC20 interface, and include a decimals() function.
+ */
+ constructor(
+ address _token,
+ address _lzEndpoint
+ ) OFTCoreUpgradeable(IERC20Metadata(_token).decimals(), _lzEndpoint) {
+ innerToken = IERC20(_token);
+ }
+
+ /**
+ * @dev Initializes the OFTAdapter with the provided delegate.
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ *
+ * @dev The delegate typically should be set as the owner of the contract.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OFTAdapter_init(address _delegate) internal onlyInitializing {
+ __OFTCore_init(_delegate);
+ }
+
+ function __OFTAdapter_init_unchained() internal onlyInitializing {}
+
+ /**
+ * @dev Retrieves the address of the underlying ERC20 implementation.
+ * @return The address of the adapted ERC-20 token.
+ *
+ * @dev In the case of OFTAdapter, address(this) and erc20 are NOT the same contract.
+ */
+ function token() public view returns (address) {
+ return address(innerToken);
+ }
+
+ /**
+ * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.
+ * @return requiresApproval Needs approval of the underlying token implementation.
+ *
+ * @dev In the case of default OFTAdapter, approval is required.
+ * @dev In non-default OFTAdapter contracts with something like mint and burn privileges, it would NOT need approval.
+ */
+ function approvalRequired() external pure virtual returns (bool) {
+ return true;
+ }
+
+ /**
+ * @dev Burns tokens from the sender's specified balance, ie. pull method.
+ * @param _from The address to debit from.
+ * @param _amountLD The amount of tokens to send in local decimals.
+ * @param _minAmountLD The minimum amount to send in local decimals.
+ * @param _dstEid The destination chain ID.
+ * @return amountSentLD The amount sent in local decimals.
+ * @return amountReceivedLD The amount received in local decimals on the remote.
+ *
+ * @dev msg.sender will need to approve this _amountLD of tokens to be locked inside of the contract.
+ * @dev WARNING: The default OFTAdapter implementation assumes LOSSLESS transfers, ie. 1 token in, 1 token out.
+ * IF the 'innerToken' applies something like a transfer fee, the default will NOT work...
+ * a pre/post balance check will need to be done to calculate the amountReceivedLD.
+ */
+ function _debit(
+ address _from,
+ uint256 _amountLD,
+ uint256 _minAmountLD,
+ uint32 _dstEid
+ ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {
+ (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);
+ // @dev Lock tokens by moving them into this contract from the caller.
+ innerToken.safeTransferFrom(_from, address(this), amountSentLD);
+ }
+
+ /**
+ * @dev Credits tokens to the specified address.
+ * @param _to The address to credit the tokens to.
+ * @param _amountLD The amount of tokens to credit in local decimals.
+ * @dev _srcEid The source chain ID.
+ * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.
+ *
+ * @dev WARNING: The default OFTAdapter implementation assumes LOSSLESS transfers, ie. 1 token in, 1 token out.
+ * IF the 'innerToken' applies something like a transfer fee, the default will NOT work...
+ * a pre/post balance check will need to be done to calculate the amountReceivedLD.
+ */
+ function _credit(
+ address _to,
+ uint256 _amountLD,
+ uint32 /*_srcEid*/
+ ) internal virtual override returns (uint256 amountReceivedLD) {
+ // @dev Unlock the tokens and transfer to the recipient.
+ innerToken.safeTransfer(_to, _amountLD);
+ // @dev In the case of NON-default OFTAdapter, the amountLD MIGHT not be == amountReceivedLD.
+ return _amountLD;
+ }
+}
diff --git a/packages/oft-evm-upgradeable/contracts/oft/OFTCoreUpgradeable.sol b/packages/oft-evm-upgradeable/contracts/oft/OFTCoreUpgradeable.sol
new file mode 100644
index 000000000..a2d15f230
--- /dev/null
+++ b/packages/oft-evm-upgradeable/contracts/oft/OFTCoreUpgradeable.sol
@@ -0,0 +1,441 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { OAppUpgradeable, Origin } from "@layerzerolabs/oapp-evm-upgradeable/contracts/oapp/OAppUpgradeable.sol";
+import { OAppOptionsType3Upgradeable } from "@layerzerolabs/oapp-evm-upgradeable/contracts/oapp/libs/OAppOptionsType3Upgradeable.sol";
+import { IOAppMsgInspector } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol";
+
+import { OAppPreCrimeSimulatorUpgradeable } from "@layerzerolabs/oapp-evm-upgradeable/contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol";
+
+import { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol";
+import { OFTMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol";
+import { OFTComposeMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol";
+
+/**
+ * @title OFTCore
+ * @dev Abstract contract for the OftChain (OFT) token.
+ */
+abstract contract OFTCoreUpgradeable is
+ IOFT,
+ OAppUpgradeable,
+ OAppPreCrimeSimulatorUpgradeable,
+ OAppOptionsType3Upgradeable
+{
+ using OFTMsgCodec for bytes;
+ using OFTMsgCodec for bytes32;
+
+ struct OFTCoreStorage {
+ // Address of an optional contract to inspect both 'message' and 'options'
+ address msgInspector;
+ }
+
+ // keccak256(abi.encode(uint256(keccak256("layerzerov2.storage.oftcore")) - 1)) & ~bytes32(uint256(0xff))
+ bytes32 private constant OFT_CORE_STORAGE_LOCATION =
+ 0x41db8a78b0206aba5c54bcbfc2bda0d84082a84eb88e680379a57b9e9f653c00;
+
+ // @notice Provides a conversion rate when swapping between denominations of SD and LD
+ // - shareDecimals == SD == shared Decimals
+ // - localDecimals == LD == local decimals
+ // @dev Considers that tokens have different decimal amounts on various chains.
+ // @dev eg.
+ // For a token
+ // - locally with 4 decimals --> 1.2345 => uint(12345)
+ // - remotely with 2 decimals --> 1.23 => uint(123)
+ // - The conversion rate would be 10 ** (4 - 2) = 100
+ // @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,
+ // you can only display 1.23 -> uint(123).
+ // @dev To preserve the dust that would otherwise be lost on that conversion,
+ // we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh
+ uint256 public immutable decimalConversionRate;
+
+ // @notice Msg types that are used to identify the various OFT operations.
+ // @dev This can be extended in child contracts for non-default oft operations
+ // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.
+ uint16 public constant SEND = 1;
+ uint16 public constant SEND_AND_CALL = 2;
+
+ event MsgInspectorSet(address inspector);
+
+ function _getOFTCoreStorage() internal pure returns (OFTCoreStorage storage $) {
+ assembly {
+ $.slot := OFT_CORE_STORAGE_LOCATION
+ }
+ }
+
+ /**
+ * @dev Constructor.
+ * @param _localDecimals The decimals of the token on the local chain (this chain).
+ * @param _endpoint The address of the LayerZero endpoint.
+ */
+ constructor(uint8 _localDecimals, address _endpoint) OAppUpgradeable(_endpoint) {
+ if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();
+ decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());
+ }
+
+ /**
+ * @notice Retrieves interfaceID and the version of the OFT.
+ * @return interfaceId The interface ID.
+ * @return version The version.
+ *
+ * @dev interfaceId: This specific interface ID is '0x02e49c2c'.
+ * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.
+ * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.
+ * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)
+ */
+ function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {
+ return (type(IOFT).interfaceId, 1);
+ }
+
+ /**
+ * @dev Initializes the OFTCore contract.
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ *
+ * @dev The delegate typically should be set as the owner of the contract.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OFTCore_init(address _delegate) internal onlyInitializing {
+ __OApp_init(_delegate);
+ __OAppPreCrimeSimulator_init();
+ __OAppOptionsType3_init();
+ }
+
+ function __OFTCore_init_unchained() internal onlyInitializing {}
+
+ function msgInspector() public view returns (address) {
+ OFTCoreStorage storage $ = _getOFTCoreStorage();
+ return $.msgInspector;
+ }
+
+ /**
+ * @dev Retrieves the shared decimals of the OFT.
+ * @return The shared decimals of the OFT.
+ *
+ * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap
+ * Lowest common decimal denominator between chains.
+ * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).
+ * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.
+ * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615
+ */
+ function sharedDecimals() public pure virtual returns (uint8) {
+ return 6;
+ }
+
+ /**
+ * @dev Sets the message inspector address for the OFT.
+ * @param _msgInspector The address of the message inspector.
+ *
+ * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.
+ * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.
+ */
+ function setMsgInspector(address _msgInspector) public virtual onlyOwner {
+ OFTCoreStorage storage $ = _getOFTCoreStorage();
+ $.msgInspector = _msgInspector;
+ emit MsgInspectorSet(_msgInspector);
+ }
+
+ /**
+ * @notice Provides a quote for OFT-related operations.
+ * @param _sendParam The parameters for the send operation.
+ * @return oftLimit The OFT limit information.
+ * @return oftFeeDetails The details of OFT fees.
+ * @return oftReceipt The OFT receipt information.
+ */
+ function quoteOFT(
+ SendParam calldata _sendParam
+ )
+ external
+ view
+ virtual
+ returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)
+ {
+ uint256 minAmountLD = 0; // Unused in the default implementation.
+ uint256 maxAmountLD = type(uint64).max; // Unused in the default implementation.
+ oftLimit = OFTLimit(minAmountLD, maxAmountLD);
+
+ // Unused in the default implementation; reserved for future complex fee details.
+ oftFeeDetails = new OFTFeeDetail[](0);
+
+ // @dev This is the same as the send() operation, but without the actual send.
+ // - amountSentLD is the amount in local decimals that would be sent from the sender.
+ // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.
+ // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.
+ (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(
+ _sendParam.amountLD,
+ _sendParam.minAmountLD,
+ _sendParam.dstEid
+ );
+ oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);
+ }
+
+ /**
+ * @notice Provides a quote for the send() operation.
+ * @param _sendParam The parameters for the send() operation.
+ * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.
+ * @return msgFee The calculated LayerZero messaging fee from the send() operation.
+ *
+ * @dev MessagingFee: LayerZero msg fee
+ * - nativeFee: The native fee.
+ * - lzTokenFee: The lzToken fee.
+ */
+ function quoteSend(
+ SendParam calldata _sendParam,
+ bool _payInLzToken
+ ) external view virtual returns (MessagingFee memory msgFee) {
+ // @dev mock the amount to receive, this is the same operation used in the send().
+ // The quote is as similar as possible to the actual send() operation.
+ (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);
+
+ // @dev Builds the options and OFT message to quote in the endpoint.
+ (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);
+
+ // @dev Calculates the LayerZero fee for the send() operation.
+ return _quote(_sendParam.dstEid, message, options, _payInLzToken);
+ }
+
+ /**
+ * @dev Executes the send operation.
+ * @param _sendParam The parameters for the send operation.
+ * @param _fee The calculated fee for the send() operation.
+ * - nativeFee: The native fee.
+ * - lzTokenFee: The lzToken fee.
+ * @param _refundAddress The address to receive any excess funds.
+ * @return msgReceipt The receipt for the send operation.
+ * @return oftReceipt The OFT receipt information.
+ *
+ * @dev MessagingReceipt: LayerZero msg receipt
+ * - guid: The unique identifier for the sent message.
+ * - nonce: The nonce of the sent message.
+ * - fee: The LayerZero fee incurred for the message.
+ */
+ function send(
+ SendParam calldata _sendParam,
+ MessagingFee calldata _fee,
+ address _refundAddress
+ ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {
+ // @dev Applies the token transfers regarding this send() operation.
+ // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.
+ // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.
+ (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(
+ msg.sender,
+ _sendParam.amountLD,
+ _sendParam.minAmountLD,
+ _sendParam.dstEid
+ );
+
+ // @dev Builds the options and OFT message to quote in the endpoint.
+ (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);
+
+ // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.
+ msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);
+ // @dev Formulate the OFT receipt.
+ oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);
+
+ emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);
+ }
+
+ /**
+ * @dev Internal function to build the message and options.
+ * @param _sendParam The parameters for the send() operation.
+ * @param _amountLD The amount in local decimals.
+ * @return message The encoded message.
+ * @return options The encoded options.
+ */
+ function _buildMsgAndOptions(
+ SendParam calldata _sendParam,
+ uint256 _amountLD
+ ) internal view virtual returns (bytes memory message, bytes memory options) {
+ bool hasCompose;
+ // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.
+ (message, hasCompose) = OFTMsgCodec.encode(
+ _sendParam.to,
+ _toSD(_amountLD),
+ // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.
+ // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'
+ _sendParam.composeMsg
+ );
+ // @dev Change the msg type depending if its composed or not.
+ uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;
+ // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.
+ options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);
+
+ OFTCoreStorage storage $ = _getOFTCoreStorage();
+
+ // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.
+ // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean
+ address inspector = $.msgInspector; // caches the msgInspector to avoid potential double storage read
+ if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);
+ }
+
+ /**
+ * @dev Internal function to handle the receive on the LayerZero endpoint.
+ * @param _origin The origin information.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address from the src chain.
+ * - nonce: The nonce of the LayerZero message.
+ * @param _guid The unique identifier for the received LayerZero message.
+ * @param _message The encoded message.
+ * @dev _executor The address of the executor.
+ * @dev _extraData Additional data.
+ */
+ function _lzReceive(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address /*_executor*/, // @dev unused in the default implementation.
+ bytes calldata /*_extraData*/ // @dev unused in the default implementation.
+ ) internal virtual override {
+ // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)
+ // Thus everything is bytes32() encoded in flight.
+ address toAddress = _message.sendTo().bytes32ToAddress();
+ // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals
+ uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);
+
+ if (_message.isComposed()) {
+ // @dev Proprietary composeMsg format for the OFT.
+ bytes memory composeMsg = OFTComposeMsgCodec.encode(
+ _origin.nonce,
+ _origin.srcEid,
+ amountReceivedLD,
+ _message.composeMsg()
+ );
+
+ // @dev Stores the lzCompose payload that will be executed in a separate tx.
+ // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.
+ // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.
+ // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.
+ // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.
+ endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);
+ }
+
+ emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);
+ }
+
+ /**
+ * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.
+ * @param _origin The origin information.
+ * - srcEid: The source chain endpoint ID.
+ * - sender: The sender address from the src chain.
+ * - nonce: The nonce of the LayerZero message.
+ * @param _guid The unique identifier for the received LayerZero message.
+ * @param _message The LayerZero message.
+ * @param _executor The address of the off-chain executor.
+ * @param _extraData Arbitrary data passed by the msg executor.
+ *
+ * @dev Enables the preCrime simulator to mock sending lzReceive() messages,
+ * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.
+ */
+ function _lzReceiveSimulate(
+ Origin calldata _origin,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata _extraData
+ ) internal virtual override {
+ _lzReceive(_origin, _guid, _message, _executor, _extraData);
+ }
+
+ /**
+ * @dev Check if the peer is considered 'trusted' by the OApp.
+ * @param _eid The endpoint ID to check.
+ * @param _peer The peer to check.
+ * @return Whether the peer passed is considered 'trusted' by the OApp.
+ *
+ * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.
+ */
+ function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {
+ return peers(_eid) == _peer;
+ }
+
+ /**
+ * @dev Internal function to remove dust from the given local decimal amount.
+ * @param _amountLD The amount in local decimals.
+ * @return amountLD The amount after removing dust.
+ *
+ * @dev Prevents the loss of dust when moving amounts between chains with different decimals.
+ * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).
+ */
+ function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {
+ return (_amountLD / decimalConversionRate) * decimalConversionRate;
+ }
+
+ /**
+ * @dev Internal function to convert an amount from shared decimals into local decimals.
+ * @param _amountSD The amount in shared decimals.
+ * @return amountLD The amount in local decimals.
+ */
+ function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {
+ return _amountSD * decimalConversionRate;
+ }
+
+ /**
+ * @dev Internal function to convert an amount from local decimals into shared decimals.
+ * @param _amountLD The amount in local decimals.
+ * @return amountSD The amount in shared decimals.
+ */
+ function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {
+ return uint64(_amountLD / decimalConversionRate);
+ }
+
+ /**
+ * @dev Internal function to mock the amount mutation from a OFT debit() operation.
+ * @param _amountLD The amount to send in local decimals.
+ * @param _minAmountLD The minimum amount to send in local decimals.
+ * @dev _dstEid The destination endpoint ID.
+ * @return amountSentLD The amount sent, in local decimals.
+ * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.
+ *
+ * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.
+ */
+ function _debitView(
+ uint256 _amountLD,
+ uint256 _minAmountLD,
+ uint32 /*_dstEid*/
+ ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {
+ // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.
+ amountSentLD = _removeDust(_amountLD);
+ // @dev The amount to send is the same as amount received in the default implementation.
+ amountReceivedLD = amountSentLD;
+
+ // @dev Check for slippage.
+ if (amountReceivedLD < _minAmountLD) {
+ revert SlippageExceeded(amountReceivedLD, _minAmountLD);
+ }
+ }
+
+ /**
+ * @dev Internal function to perform a debit operation.
+ * @param _from The address to debit from.
+ * @param _amountLD The amount to send in local decimals.
+ * @param _minAmountLD The minimum amount to send in local decimals.
+ * @param _dstEid The destination endpoint ID.
+ * @return amountSentLD The amount sent in local decimals.
+ * @return amountReceivedLD The amount received in local decimals on the remote.
+ *
+ * @dev Defined here but are intended to be overriden depending on the OFT implementation.
+ * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.
+ */
+ function _debit(
+ address _from,
+ uint256 _amountLD,
+ uint256 _minAmountLD,
+ uint32 _dstEid
+ ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);
+
+ /**
+ * @dev Internal function to perform a credit operation.
+ * @param _to The address to credit.
+ * @param _amountLD The amount to credit in local decimals.
+ * @param _srcEid The source endpoint ID.
+ * @return amountReceivedLD The amount ACTUALLY received in local decimals.
+ *
+ * @dev Defined here but are intended to be overriden depending on the OFT implementation.
+ * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.
+ */
+ function _credit(
+ address _to,
+ uint256 _amountLD,
+ uint32 _srcEid
+ ) internal virtual returns (uint256 amountReceivedLD);
+}
diff --git a/packages/oft-evm-upgradeable/contracts/oft/OFTUpgradeable.sol b/packages/oft-evm-upgradeable/contracts/oft/OFTUpgradeable.sol
new file mode 100644
index 000000000..3acae02b6
--- /dev/null
+++ b/packages/oft-evm-upgradeable/contracts/oft/OFTUpgradeable.sol
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.20;
+
+import { ERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
+import { IOFT, OFTCoreUpgradeable } from "./OFTCoreUpgradeable.sol";
+
+/**
+ * @title OFT Contract
+ * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.
+ */
+abstract contract OFTUpgradeable is OFTCoreUpgradeable, ERC20Upgradeable {
+ /**
+ * @dev Constructor for the OFT contract.
+ * @param _lzEndpoint The LayerZero endpoint address.
+ */
+ constructor(address _lzEndpoint) OFTCoreUpgradeable(decimals(), _lzEndpoint) {}
+
+ /**
+ * @dev Initializes the OFT with the provided name, symbol, and delegate.
+ * @param _name The name of the OFT.
+ * @param _symbol The symbol of the OFT.
+ * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.
+ *
+ * @dev The delegate typically should be set as the owner of the contract.
+ * @dev Ownable is not initialized here on purpose. It should be initialized in the child contract to
+ * accommodate the different version of Ownable.
+ */
+ function __OFT_init(string memory _name, string memory _symbol, address _delegate) internal onlyInitializing {
+ __ERC20_init(_name, _symbol);
+ __OFTCore_init(_delegate);
+ }
+
+ function __OFT_init_unchained() internal onlyInitializing {}
+
+ /**
+ * @dev Retrieves the address of the underlying ERC20 implementation.
+ * @return The address of the OFT token.
+ *
+ * @dev In the case of OFT, address(this) and erc20 are the same contract.
+ */
+ function token() public view returns (address) {
+ return address(this);
+ }
+
+ /**
+ * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.
+ * @return requiresApproval Needs approval of the underlying token implementation.
+ *
+ * @dev In the case of OFT where the contract IS the token, approval is NOT required.
+ */
+ function approvalRequired() external pure virtual returns (bool) {
+ return false;
+ }
+
+ /**
+ * @dev Burns tokens from the sender's specified balance.
+ * @param _from The address to debit the tokens from.
+ * @param _amountLD The amount of tokens to send in local decimals.
+ * @param _minAmountLD The minimum amount to send in local decimals.
+ * @param _dstEid The destination chain ID.
+ * @return amountSentLD The amount sent in local decimals.
+ * @return amountReceivedLD The amount received in local decimals on the remote.
+ */
+ function _debit(
+ address _from,
+ uint256 _amountLD,
+ uint256 _minAmountLD,
+ uint32 _dstEid
+ ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {
+ (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);
+
+ // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,
+ // therefore amountSentLD CAN differ from amountReceivedLD.
+
+ // @dev Default OFT burns on src.
+ _burn(_from, amountSentLD);
+ }
+
+ /**
+ * @dev Credits tokens to the specified address.
+ * @param _to The address to credit the tokens to.
+ * @param _amountLD The amount of tokens to credit in local decimals.
+ * @dev _srcEid The source chain ID.
+ * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.
+ */
+ function _credit(
+ address _to,
+ uint256 _amountLD,
+ uint32 /*_srcEid*/
+ ) internal virtual override returns (uint256 amountReceivedLD) {
+ if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)
+ // @dev Default OFT mints on dst.
+ _mint(_to, _amountLD);
+ // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.
+ return _amountLD;
+ }
+}
diff --git a/packages/oft-evm-upgradeable/foundry.toml b/packages/oft-evm-upgradeable/foundry.toml
new file mode 100644
index 000000000..74c97fb60
--- /dev/null
+++ b/packages/oft-evm-upgradeable/foundry.toml
@@ -0,0 +1,35 @@
+[profile.default]
+solc = '0.8.22'
+verbosity = 3
+src = "contracts"
+test = "test"
+out = "artifacts"
+cache_path = "cache"
+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/',
+ 'solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/',
+ '@layerzerolabs/=node_modules/@layerzerolabs/',
+ '@openzeppelin/=node_modules/@openzeppelin/',
+]
+
+[fuzz]
+runs = 1000
diff --git a/packages/oft-evm-upgradeable/package.json b/packages/oft-evm-upgradeable/package.json
new file mode 100644
index 000000000..4884fa021
--- /dev/null
+++ b/packages/oft-evm-upgradeable/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "@layerzerolabs/oft-evm-upgradeable",
+ "version": "0.0.1",
+ "description": "LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation",
+ "keywords": [
+ "LayerZero",
+ "OFT",
+ "OmniChain",
+ "Fungible",
+ "Token",
+ "EndpointV2",
+ "EVM"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/LayerZero-Labs/devtools.git",
+ "directory": "packages/oft-evm"
+ },
+ "license": "MIT",
+ "exports": {
+ "./package.json": "./package.json",
+ "./artifacts/*.json": {
+ "require": "./artifacts/*.json",
+ "imports": "./artifacts/*.json"
+ }
+ },
+ "files": [
+ "artifacts/Fee.sol/Fee.json",
+ "artifacts/IFee.sol/IFee.json",
+ "artifacts/IOFT.sol/IOFT.json",
+ "artifacts/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json",
+ "artifacts/OFTMsgCodec.sol/OFTMsgCodec.json",
+ "artifacts/OFT.sol/OFT.json",
+ "artifacts/OFTAdapter.sol/OFTAdapter.json",
+ "artifacts/OFTCore.sol/OFTCore.json",
+ "contracts/**/*",
+ "test/**/*"
+ ],
+ "scripts": {
+ "build": "$npm_execpath compile",
+ "clean": "rimraf .turbo cache out artifacts",
+ "compile": "$npm_execpath compile:forge",
+ "compile:forge": "$npm_execpath forge build",
+ "test": "$npm_execpath test:forge",
+ "test:forge": "$npm_execpath forge test"
+ },
+ "devDependencies": {
+ "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.39",
+ "@layerzerolabs/oapp-evm": "^0.0.4",
+ "@layerzerolabs/oapp-evm-upgradeable": "^0.0.1",
+ "@layerzerolabs/oft-evm": "^0.1.0",
+ "@layerzerolabs/test-devtools-evm-foundry": "~1.0.0",
+ "@layerzerolabs/toolbox-foundry": "^0.1.9",
+ "@openzeppelin/contracts": "^5.0.2",
+ "@openzeppelin/contracts-upgradeable": "^5.0.2",
+ "rimraf": "^5.0.5"
+ },
+ "peerDependencies": {
+ "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-protocol-v2": "^2.3.39",
+ "@layerzerolabs/lz-evm-v1-0.7": "^2.3.39",
+ "@layerzerolabs/oapp-evm": "^0.0.4",
+ "@openzeppelin/contracts": "^4.8.1 || ^5.0.0",
+ "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/OFT.t.sol b/packages/oft-evm-upgradeable/test/OFT.t.sol
new file mode 100644
index 000000000..099250db0
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/OFT.t.sol
@@ -0,0 +1,558 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.20;
+
+import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol";
+
+import { OFTUpgradeableMock } from "./mocks/OFTUpgradeableMock.sol";
+import { MessagingFee, MessagingReceipt } from "../contracts/oft/OFTCoreUpgradeable.sol";
+import { OFTAdapterUpgradeableMock } from "./mocks/OFTAdapterUpgradeableMock.sol";
+import { ERC20Mock } from "./mocks/ERC20Mock.sol";
+import { OFTComposerMock } from "./mocks/OFTComposerMock.sol";
+import { OFTInspectorMock, IOAppMsgInspector } from "./mocks/OFTInspectorMock.sol";
+import { IOAppOptionsType3, EnforcedOptionParam } from "@layerzerolabs/oapp-evm-upgradeable/contracts/oapp/libs/OAppOptionsType3Upgradeable.sol";
+
+import { OFTMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol";
+import { OFTComposeMsgCodec } from "@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol";
+
+import { IOFT, SendParam, OFTReceipt } from "@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol";
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+import "forge-std/console.sol";
+import { TestHelperOz5 } from "@layerzerolabs/test-devtools-evm-foundry/contracts/TestHelperOz5.sol";
+import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+
+
+contract OFTTest is TestHelperOz5 {
+ using OptionsBuilder for bytes;
+
+ uint32 aEid = 1;
+ uint32 bEid = 2;
+ uint32 cEid = 3;
+
+ OFTUpgradeableMock aOFT;
+ OFTUpgradeableMock bOFT;
+ OFTAdapterUpgradeableMock cOFTAdapter;
+ ERC20Mock cERC20Mock;
+
+ OFTInspectorMock oAppInspector;
+
+ address public userA = address(0x1);
+ address public userB = address(0x2);
+ address public userC = address(0x3);
+ uint256 public initialBalance = 100 ether;
+
+ address public proxyAdmin = makeAddr("proxyAdmin");
+
+ function setUp() public virtual override {
+ vm.deal(userA, 1000 ether);
+ vm.deal(userB, 1000 ether);
+ vm.deal(userC, 1000 ether);
+
+ super.setUp();
+ setUpEndpoints(3, LibraryType.UltraLightNode);
+
+ aOFT = OFTUpgradeableMock(
+ _deployContractAndProxy(
+ type(OFTUpgradeableMock).creationCode,
+ abi.encode(address(endpoints[aEid])),
+ abi.encodeWithSelector(OFTUpgradeableMock.initialize.selector, "aOFT", "aOFT", address(this))
+ )
+ );
+
+ bOFT = OFTUpgradeableMock(
+ _deployContractAndProxy(
+ type(OFTUpgradeableMock).creationCode,
+ abi.encode(address(endpoints[bEid])),
+ abi.encodeWithSelector(OFTUpgradeableMock.initialize.selector, "bOFT", "bOFT", address(this))
+ )
+ );
+
+ cERC20Mock = new ERC20Mock("cToken", "cToken");
+ cOFTAdapter = OFTAdapterUpgradeableMock(
+ _deployContractAndProxy(
+ type(OFTAdapterUpgradeableMock).creationCode,
+ abi.encode(address(cERC20Mock), address(endpoints[cEid])),
+ abi.encodeWithSelector(OFTAdapterUpgradeableMock.initialize.selector, address(this))
+ )
+ );
+
+ // config and wire the ofts
+ address[] memory ofts = new address[](3);
+ ofts[0] = address(aOFT);
+ ofts[1] = address(bOFT);
+ ofts[2] = address(cOFTAdapter);
+ this.wireOApps(ofts);
+
+ // mint tokens
+ aOFT.mint(userA, initialBalance);
+ bOFT.mint(userB, initialBalance);
+ cERC20Mock.mint(userC, initialBalance);
+
+ // deploy a universal inspector, can be used by each oft
+ oAppInspector = new OFTInspectorMock();
+ }
+
+ function _deployContractAndProxy(
+ bytes memory _oappBytecode,
+ bytes memory _constructorArgs,
+ bytes memory _initializeArgs
+ ) internal returns (address addr) {
+ bytes memory bytecode = bytes.concat(abi.encodePacked(_oappBytecode), _constructorArgs);
+ assembly {
+ addr := create(0, add(bytecode, 0x20), mload(bytecode))
+ if iszero(extcodesize(addr)) {
+ revert(0, 0)
+ }
+ }
+
+ return address(new TransparentUpgradeableProxy(addr, proxyAdmin, _initializeArgs));
+ }
+
+ function test_constructor() public {
+ assertEq(aOFT.owner(), address(this));
+ assertEq(bOFT.owner(), address(this));
+ assertEq(cOFTAdapter.owner(), address(this));
+
+ assertEq(aOFT.balanceOf(userA), initialBalance);
+ assertEq(bOFT.balanceOf(userB), initialBalance);
+ assertEq(IERC20(cOFTAdapter.token()).balanceOf(userC), initialBalance);
+
+ assertEq(aOFT.token(), address(aOFT));
+ assertEq(bOFT.token(), address(bOFT));
+ assertEq(cOFTAdapter.token(), address(cERC20Mock));
+ }
+
+ function test_oftVersion() public {
+ (bytes4 interfaceId, ) = aOFT.oftVersion();
+ bytes4 expectedId = 0x02e49c2c;
+ assertEq(interfaceId, expectedId);
+ }
+
+ function test_send_oft() public {
+ uint256 tokensToSend = 1 ether;
+ bytes memory options = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ SendParam memory sendParam = SendParam(
+ bEid,
+ addressToBytes32(userB),
+ tokensToSend,
+ tokensToSend,
+ options,
+ "",
+ ""
+ );
+ MessagingFee memory fee = aOFT.quoteSend(sendParam, false);
+
+ assertEq(aOFT.balanceOf(userA), initialBalance);
+ assertEq(bOFT.balanceOf(userB), initialBalance);
+
+ vm.prank(userA);
+ aOFT.send{ value: fee.nativeFee }(sendParam, fee, payable(address(this)));
+ verifyPackets(bEid, addressToBytes32(address(bOFT)));
+
+ assertEq(aOFT.balanceOf(userA), initialBalance - tokensToSend);
+ assertEq(bOFT.balanceOf(userB), initialBalance + tokensToSend);
+ }
+
+ function test_send_oft_compose_msg() public {
+ uint256 tokensToSend = 1 ether;
+
+ OFTComposerMock composer = new OFTComposerMock();
+
+ bytes memory options = OptionsBuilder
+ .newOptions()
+ .addExecutorLzReceiveOption(200000, 0)
+ .addExecutorLzComposeOption(0, 500000, 0);
+ bytes memory composeMsg = hex"1234";
+ SendParam memory sendParam = SendParam(
+ bEid,
+ addressToBytes32(address(composer)),
+ tokensToSend,
+ tokensToSend,
+ options,
+ composeMsg,
+ ""
+ );
+ MessagingFee memory fee = aOFT.quoteSend(sendParam, false);
+
+ assertEq(aOFT.balanceOf(userA), initialBalance);
+ assertEq(bOFT.balanceOf(address(composer)), 0);
+
+ vm.prank(userA);
+ (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) = aOFT.send{ value: fee.nativeFee }(
+ sendParam,
+ fee,
+ payable(address(this))
+ );
+ verifyPackets(bEid, addressToBytes32(address(bOFT)));
+
+ // lzCompose params
+ uint32 dstEid_ = bEid;
+ address from_ = address(bOFT);
+ bytes memory options_ = options;
+ bytes32 guid_ = msgReceipt.guid;
+ address to_ = address(composer);
+ bytes memory composerMsg_ = OFTComposeMsgCodec.encode(
+ msgReceipt.nonce,
+ aEid,
+ oftReceipt.amountReceivedLD,
+ abi.encodePacked(addressToBytes32(userA), composeMsg)
+ );
+ this.lzCompose(dstEid_, from_, options_, guid_, to_, composerMsg_);
+
+ assertEq(aOFT.balanceOf(userA), initialBalance - tokensToSend);
+ assertEq(bOFT.balanceOf(address(composer)), tokensToSend);
+
+ assertEq(composer.from(), from_);
+ assertEq(composer.guid(), guid_);
+ assertEq(composer.message(), composerMsg_);
+ assertEq(composer.executor(), address(this));
+ assertEq(composer.extraData(), composerMsg_); // default to setting the extraData to the message as well to test
+ }
+
+ function test_oft_compose_codec() public {
+ uint64 nonce = 1;
+ uint32 srcEid = 2;
+ uint256 amountCreditLD = 3;
+ bytes memory composeMsg = hex"1234";
+
+ bytes memory message = OFTComposeMsgCodec.encode(
+ nonce,
+ srcEid,
+ amountCreditLD,
+ abi.encodePacked(addressToBytes32(msg.sender), composeMsg)
+ );
+ (uint64 nonce_, uint32 srcEid_, uint256 amountCreditLD_, bytes32 composeFrom_, bytes memory composeMsg_) = this
+ .decodeOFTComposeMsgCodec(message);
+
+ assertEq(nonce_, nonce);
+ assertEq(srcEid_, srcEid);
+ assertEq(amountCreditLD_, amountCreditLD);
+ assertEq(composeFrom_, addressToBytes32(msg.sender));
+ assertEq(composeMsg_, composeMsg);
+ }
+
+ function decodeOFTComposeMsgCodec(
+ bytes calldata message
+ )
+ public
+ pure
+ returns (uint64 nonce, uint32 srcEid, uint256 amountCreditLD, bytes32 composeFrom, bytes memory composeMsg)
+ {
+ nonce = OFTComposeMsgCodec.nonce(message);
+ srcEid = OFTComposeMsgCodec.srcEid(message);
+ amountCreditLD = OFTComposeMsgCodec.amountLD(message);
+ composeFrom = OFTComposeMsgCodec.composeFrom(message);
+ composeMsg = OFTComposeMsgCodec.composeMsg(message);
+ }
+
+ function test_debit_slippage_removeDust() public {
+ uint256 amountToSendLD = 1.23456789 ether;
+ uint256 minAmountToCreditLD = 1.23456789 ether;
+ uint32 dstEid = aEid;
+
+ // remove the dust form the shared decimal conversion
+ assertEq(aOFT.removeDust(amountToSendLD), 1.234567 ether);
+
+ vm.expectRevert(
+ abi.encodeWithSelector(IOFT.SlippageExceeded.selector, aOFT.removeDust(amountToSendLD), minAmountToCreditLD)
+ );
+ aOFT.debit(amountToSendLD, minAmountToCreditLD, dstEid);
+ }
+
+ function test_debit_slippage_minAmountToCreditLD() public {
+ uint256 amountToSendLD = 1 ether;
+ uint256 minAmountToCreditLD = 1.00000001 ether;
+ uint32 dstEid = aEid;
+
+ vm.expectRevert(abi.encodeWithSelector(IOFT.SlippageExceeded.selector, amountToSendLD, minAmountToCreditLD));
+ aOFT.debit(amountToSendLD, minAmountToCreditLD, dstEid);
+ }
+
+ function test_toLD() public {
+ uint64 amountSD = 1000;
+ assertEq(amountSD * aOFT.decimalConversionRate(), aOFT.toLD(uint64(amountSD)));
+ }
+
+ function test_toSD() public {
+ uint256 amountLD = 1000000;
+ assertEq(amountLD / aOFT.decimalConversionRate(), aOFT.toSD(amountLD));
+ }
+
+ function test_oft_debit() public {
+ uint256 amountToSendLD = 1 ether;
+ uint256 minAmountToCreditLD = 1 ether;
+ uint32 dstEid = aEid;
+
+ assertEq(aOFT.balanceOf(userA), initialBalance);
+ assertEq(aOFT.balanceOf(address(this)), 0);
+
+ vm.prank(userA);
+ (uint256 amountDebitedLD, uint256 amountToCreditLD) = aOFT.debit(amountToSendLD, minAmountToCreditLD, dstEid);
+
+ assertEq(amountDebitedLD, amountToSendLD);
+ assertEq(amountToCreditLD, amountToSendLD);
+
+ assertEq(aOFT.balanceOf(userA), initialBalance - amountToSendLD);
+ assertEq(aOFT.balanceOf(address(this)), 0);
+ }
+
+ function test_oft_credit() public {
+ uint256 amountToCreditLD = 1 ether;
+ uint32 srcEid = aEid;
+
+ assertEq(aOFT.balanceOf(userA), initialBalance);
+ assertEq(aOFT.balanceOf(address(this)), 0);
+
+ vm.prank(userA);
+ uint256 amountReceived = aOFT.credit(userA, amountToCreditLD, srcEid);
+
+ assertEq(aOFT.balanceOf(userA), initialBalance + amountReceived);
+ assertEq(aOFT.balanceOf(address(this)), 0);
+ }
+
+ function test_oft_adapter_debit() public {
+ uint256 amountToSendLD = 1 ether;
+ uint256 minAmountToCreditLD = 1 ether;
+ uint32 dstEid = cEid;
+
+ assertEq(cERC20Mock.balanceOf(userC), initialBalance);
+ assertEq(cERC20Mock.balanceOf(address(cOFTAdapter)), 0);
+
+ vm.prank(userC);
+ vm.expectRevert(
+ abi.encodeWithSelector(IOFT.SlippageExceeded.selector, amountToSendLD, minAmountToCreditLD + 1)
+ );
+ cOFTAdapter.debitView(amountToSendLD, minAmountToCreditLD + 1, dstEid);
+
+ vm.prank(userC);
+ cERC20Mock.approve(address(cOFTAdapter), amountToSendLD);
+ vm.prank(userC);
+ (uint256 amountDebitedLD, uint256 amountToCreditLD) = cOFTAdapter.debit(
+ amountToSendLD,
+ minAmountToCreditLD,
+ dstEid
+ );
+
+ assertEq(amountDebitedLD, amountToSendLD);
+ assertEq(amountToCreditLD, amountToSendLD);
+
+ assertEq(cERC20Mock.balanceOf(userC), initialBalance - amountToSendLD);
+ assertEq(cERC20Mock.balanceOf(address(cOFTAdapter)), amountToSendLD);
+ }
+
+ function test_oft_adapter_credit() public {
+ uint256 amountToCreditLD = 1 ether;
+ uint32 srcEid = cEid;
+
+ assertEq(cERC20Mock.balanceOf(userC), initialBalance);
+ assertEq(cERC20Mock.balanceOf(address(cOFTAdapter)), 0);
+
+ vm.prank(userC);
+ cERC20Mock.transfer(address(cOFTAdapter), amountToCreditLD);
+
+ uint256 amountReceived = cOFTAdapter.credit(userB, amountToCreditLD, srcEid);
+
+ assertEq(cERC20Mock.balanceOf(userC), initialBalance - amountToCreditLD);
+ assertEq(cERC20Mock.balanceOf(address(userB)), amountReceived);
+ assertEq(cERC20Mock.balanceOf(address(cOFTAdapter)), 0);
+ }
+
+ function decodeOFTMsgCodec(
+ bytes calldata message
+ ) public pure returns (bool isComposed, bytes32 sendTo, uint64 amountSD, bytes memory composeMsg) {
+ isComposed = OFTMsgCodec.isComposed(message);
+ sendTo = OFTMsgCodec.sendTo(message);
+ amountSD = OFTMsgCodec.amountSD(message);
+ composeMsg = OFTMsgCodec.composeMsg(message);
+ }
+
+ function test_oft_build_msg() public {
+ uint32 dstEid = bEid;
+ bytes32 to = addressToBytes32(userA);
+ uint256 amountToSendLD = 1.23456789 ether;
+ uint256 minAmountToCreditLD = aOFT.removeDust(amountToSendLD);
+
+ // params for buildMsgAndOptions
+ bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ bytes memory composeMsg = hex"1234";
+ SendParam memory sendParam = SendParam(
+ dstEid,
+ to,
+ amountToSendLD,
+ minAmountToCreditLD,
+ extraOptions,
+ composeMsg,
+ ""
+ );
+ uint256 amountToCreditLD = minAmountToCreditLD;
+
+ (bytes memory message, ) = aOFT.buildMsgAndOptions(sendParam, amountToCreditLD);
+
+ (bool isComposed_, bytes32 sendTo_, uint64 amountSD_, bytes memory composeMsg_) = this.decodeOFTMsgCodec(
+ message
+ );
+
+ assertEq(isComposed_, true);
+ assertEq(sendTo_, to);
+ assertEq(amountSD_, aOFT.toSD(amountToCreditLD));
+ bytes memory expectedComposeMsg = abi.encodePacked(addressToBytes32(address(this)), composeMsg);
+ assertEq(composeMsg_, expectedComposeMsg);
+ }
+
+ function test_oft_build_msg_no_compose_msg() public {
+ uint32 dstEid = bEid;
+ bytes32 to = addressToBytes32(userA);
+ uint256 amountToSendLD = 1.23456789 ether;
+ uint256 minAmountToCreditLD = aOFT.removeDust(amountToSendLD);
+
+ // params for buildMsgAndOptions
+ bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ bytes memory composeMsg = "";
+ SendParam memory sendParam = SendParam(
+ dstEid,
+ to,
+ amountToSendLD,
+ minAmountToCreditLD,
+ extraOptions,
+ composeMsg,
+ ""
+ );
+ uint256 amountToCreditLD = minAmountToCreditLD;
+
+ (bytes memory message, ) = aOFT.buildMsgAndOptions(sendParam, amountToCreditLD);
+
+ (bool isComposed_, bytes32 sendTo_, uint64 amountSD_, bytes memory composeMsg_) = this.decodeOFTMsgCodec(
+ message
+ );
+
+ assertEq(isComposed_, false);
+ assertEq(sendTo_, to);
+ assertEq(amountSD_, aOFT.toSD(amountToCreditLD));
+ assertEq(composeMsg_, "");
+ }
+
+ function test_set_enforced_options() public {
+ uint32 eid = 1;
+
+ bytes memory optionsTypeOne = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ bytes memory optionsTypeTwo = OptionsBuilder.newOptions().addExecutorLzReceiveOption(250000, 0);
+
+ EnforcedOptionParam[] memory enforcedOptions = new EnforcedOptionParam[](2);
+ enforcedOptions[0] = EnforcedOptionParam(eid, 1, optionsTypeOne);
+ enforcedOptions[1] = EnforcedOptionParam(eid, 2, optionsTypeTwo);
+
+ aOFT.setEnforcedOptions(enforcedOptions);
+
+ assertEq(aOFT.enforcedOptions(eid, 1), optionsTypeOne);
+ assertEq(aOFT.enforcedOptions(eid, 2), optionsTypeTwo);
+ }
+
+ function test_assert_options_type3_revert() public {
+ uint32 eid = 1;
+ EnforcedOptionParam[] memory enforcedOptions = new EnforcedOptionParam[](1);
+
+ enforcedOptions[0] = EnforcedOptionParam(eid, 1, hex"0004"); // not type 3
+ vm.expectRevert(abi.encodeWithSelector(IOAppOptionsType3.InvalidOptions.selector, hex"0004"));
+ aOFT.setEnforcedOptions(enforcedOptions);
+
+ enforcedOptions[0] = EnforcedOptionParam(eid, 1, hex"0002"); // not type 3
+ vm.expectRevert(abi.encodeWithSelector(IOAppOptionsType3.InvalidOptions.selector, hex"0002"));
+ aOFT.setEnforcedOptions(enforcedOptions);
+
+ enforcedOptions[0] = EnforcedOptionParam(eid, 1, hex"0001"); // not type 3
+ vm.expectRevert(abi.encodeWithSelector(IOAppOptionsType3.InvalidOptions.selector, hex"0001"));
+ aOFT.setEnforcedOptions(enforcedOptions);
+
+ enforcedOptions[0] = EnforcedOptionParam(eid, 1, hex"0003"); // IS type 3
+ aOFT.setEnforcedOptions(enforcedOptions); // doesnt revert cus option type 3
+ }
+
+ function test_combine_options() public {
+ uint32 eid = 1;
+ uint16 msgType = 1;
+
+ bytes memory enforcedOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ EnforcedOptionParam[] memory enforcedOptionsArray = new EnforcedOptionParam[](1);
+ enforcedOptionsArray[0] = EnforcedOptionParam(eid, msgType, enforcedOptions);
+ aOFT.setEnforcedOptions(enforcedOptionsArray);
+
+ bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorNativeDropOption(
+ 1.2345 ether,
+ addressToBytes32(userA)
+ );
+
+ bytes memory expectedOptions = OptionsBuilder
+ .newOptions()
+ .addExecutorLzReceiveOption(200000, 0)
+ .addExecutorNativeDropOption(1.2345 ether, addressToBytes32(userA));
+
+ bytes memory combinedOptions = aOFT.combineOptions(eid, msgType, extraOptions);
+ assertEq(combinedOptions, expectedOptions);
+ }
+
+ function test_combine_options_no_extra_options() public {
+ uint32 eid = 1;
+ uint16 msgType = 1;
+
+ bytes memory enforcedOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ EnforcedOptionParam[] memory enforcedOptionsArray = new EnforcedOptionParam[](1);
+ enforcedOptionsArray[0] = EnforcedOptionParam(eid, msgType, enforcedOptions);
+ aOFT.setEnforcedOptions(enforcedOptionsArray);
+
+ bytes memory expectedOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+
+ bytes memory combinedOptions = aOFT.combineOptions(eid, msgType, "");
+ assertEq(combinedOptions, expectedOptions);
+ }
+
+ function test_combine_options_no_enforced_options() public {
+ uint32 eid = 1;
+ uint16 msgType = 1;
+
+ bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorNativeDropOption(
+ 1.2345 ether,
+ addressToBytes32(userA)
+ );
+
+ bytes memory expectedOptions = OptionsBuilder.newOptions().addExecutorNativeDropOption(
+ 1.2345 ether,
+ addressToBytes32(userA)
+ );
+
+ bytes memory combinedOptions = aOFT.combineOptions(eid, msgType, extraOptions);
+ assertEq(combinedOptions, expectedOptions);
+ }
+
+ function test_oapp_inspector_inspect() public {
+ uint32 dstEid = bEid;
+ bytes32 to = addressToBytes32(userA);
+ uint256 amountToSendLD = 1.23456789 ether;
+ uint256 minAmountToCreditLD = aOFT.removeDust(amountToSendLD);
+
+ // params for buildMsgAndOptions
+ bytes memory extraOptions = OptionsBuilder.newOptions().addExecutorLzReceiveOption(200000, 0);
+ bytes memory composeMsg = "";
+ SendParam memory sendParam = SendParam(
+ dstEid,
+ to,
+ amountToSendLD,
+ minAmountToCreditLD,
+ extraOptions,
+ composeMsg,
+ ""
+ );
+ uint256 amountToCreditLD = minAmountToCreditLD;
+
+ // doesnt revert
+ (bytes memory message, ) = aOFT.buildMsgAndOptions(sendParam, amountToCreditLD);
+
+ // deploy a universal inspector, it automatically reverts
+ oAppInspector = new OFTInspectorMock();
+ // set the inspector
+ aOFT.setMsgInspector(address(oAppInspector));
+
+ // does revert because inspector is set
+ vm.expectRevert(abi.encodeWithSelector(IOAppMsgInspector.InspectionFailed.selector, message, extraOptions));
+ (message, ) = aOFT.buildMsgAndOptions(sendParam, amountToCreditLD);
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/ERC20Mock.sol b/packages/oft-evm-upgradeable/test/mocks/ERC20Mock.sol
new file mode 100644
index 000000000..6ce17e418
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/ERC20Mock.sol
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.20;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+contract ERC20Mock is ERC20 {
+ constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/OFTAdapterUpgradeableMock.sol b/packages/oft-evm-upgradeable/test/mocks/OFTAdapterUpgradeableMock.sol
new file mode 100644
index 000000000..65f92bf20
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/OFTAdapterUpgradeableMock.sol
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { OFTAdapterUpgradeable } from "../../contracts/oft/OFTAdapterUpgradeable.sol";
+
+contract OFTAdapterUpgradeableMock is OFTAdapterUpgradeable {
+ constructor(address _token, address _lzEndpoint) OFTAdapterUpgradeable(_token, _lzEndpoint) {}
+
+ function initialize(address _delegate) external initializer {
+ __OFTAdapter_init(_delegate);
+ __Ownable_init(_delegate);
+ }
+
+ // @dev expose internal functions for testing purposes
+ function debit(
+ uint256 _amountToSendLD,
+ uint256 _minAmountToCreditLD,
+ uint32 _dstEid
+ ) public returns (uint256 amountDebitedLD, uint256 amountToCreditLD) {
+ return _debit(msg.sender, _amountToSendLD, _minAmountToCreditLD, _dstEid);
+ }
+
+ function debitView(
+ uint256 _amountToSendLD,
+ uint256 _minAmountToCreditLD,
+ uint32 _dstEid
+ ) public view returns (uint256 amountDebitedLD, uint256 amountToCreditLD) {
+ return _debitView(_amountToSendLD, _minAmountToCreditLD, _dstEid);
+ }
+
+ function credit(address _to, uint256 _amountToCreditLD, uint32 _srcEid) public returns (uint256 amountReceivedLD) {
+ return _credit(_to, _amountToCreditLD, _srcEid);
+ }
+
+ function removeDust(uint256 _amountLD) public view returns (uint256 amountLD) {
+ return _removeDust(_amountLD);
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/OFTComposerMock.sol b/packages/oft-evm-upgradeable/test/mocks/OFTComposerMock.sol
new file mode 100644
index 000000000..fdd5c2426
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/OFTComposerMock.sol
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { IOAppComposer } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol";
+
+contract OFTComposerMock is IOAppComposer {
+ // default empty values for testing a lzCompose received message
+ address public from;
+ bytes32 public guid;
+ bytes public message;
+ address public executor;
+ bytes public extraData;
+
+ function lzCompose(
+ address _from,
+ bytes32 _guid,
+ bytes calldata _message,
+ address _executor,
+ bytes calldata /*_extraData*/
+ ) external payable {
+ from = _from;
+ guid = _guid;
+ message = _message;
+ executor = _executor;
+ extraData = _message;
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/OFTInspectorMock.sol b/packages/oft-evm-upgradeable/test/mocks/OFTInspectorMock.sol
new file mode 100644
index 000000000..c182bad28
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/OFTInspectorMock.sol
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { IOAppMsgInspector } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol";
+
+contract OFTInspectorMock is IOAppMsgInspector {
+ function inspect(bytes calldata _message, bytes calldata _options) external pure returns (bool) {
+ revert InspectionFailed(_message, _options);
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/OFTUpgradeableMock.sol b/packages/oft-evm-upgradeable/test/mocks/OFTUpgradeableMock.sol
new file mode 100644
index 000000000..74905e926
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/OFTUpgradeableMock.sol
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { OFTUpgradeable } from "../../contracts/oft/OFTUpgradeable.sol";
+import { SendParam } from "../../contracts/oft/OFTCoreUpgradeable.sol";
+
+contract OFTUpgradeableMock is OFTUpgradeable {
+ constructor(address _lzEndpoint) OFTUpgradeable(_lzEndpoint) {}
+
+ function initialize(string memory _name, string memory _symbol, address _delegate) external initializer {
+ __OFT_init(_name, _symbol, _delegate);
+ __Ownable_init(_delegate);
+ }
+
+ function mint(address _to, uint256 _amount) public {
+ _mint(_to, _amount);
+ }
+
+ // @dev expose internal functions for testing purposes
+ function debit(
+ uint256 _amountToSendLD,
+ uint256 _minAmountToCreditLD,
+ uint32 _dstEid
+ ) public returns (uint256 amountDebitedLD, uint256 amountToCreditLD) {
+ return _debit(msg.sender, _amountToSendLD, _minAmountToCreditLD, _dstEid);
+ }
+
+ function debitView(
+ uint256 _amountToSendLD,
+ uint256 _minAmountToCreditLD,
+ uint32 _dstEid
+ ) public view returns (uint256 amountDebitedLD, uint256 amountToCreditLD) {
+ return _debitView(_amountToSendLD, _minAmountToCreditLD, _dstEid);
+ }
+
+ function removeDust(uint256 _amountLD) public view returns (uint256 amountLD) {
+ return _removeDust(_amountLD);
+ }
+
+ function toLD(uint64 _amountSD) public view returns (uint256 amountLD) {
+ return _toLD(_amountSD);
+ }
+
+ function toSD(uint256 _amountLD) public view returns (uint64 amountSD) {
+ return _toSD(_amountLD);
+ }
+
+ function credit(address _to, uint256 _amountToCreditLD, uint32 _srcEid) public returns (uint256 amountReceivedLD) {
+ return _credit(_to, _amountToCreditLD, _srcEid);
+ }
+
+ function buildMsgAndOptions(
+ SendParam calldata _sendParam,
+ uint256 _amountToCreditLD
+ ) public view returns (bytes memory message, bytes memory options) {
+ return _buildMsgAndOptions(_sendParam, _amountToCreditLD);
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol b/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol
new file mode 100644
index 000000000..aa66e3aa0
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2SimulatorUpgradeableMock.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { Origin } from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";
+import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
+
+import { OAppPreCrimeSimulatorUpgradeable } from "@layerzerolabs/oapp-evm-upgradeable/contracts/precrime/OAppPreCrimeSimulatorUpgradeable.sol";
+
+contract PreCrimeV2SimulatorUpgradeableMock is OAppPreCrimeSimulatorUpgradeable {
+ uint256 public count;
+
+ error InvalidEid();
+
+ function initialize(address _delegate) external initializer {
+ __Ownable_init(_delegate);
+ }
+
+ function _lzReceiveSimulate(
+ Origin calldata _origin,
+ bytes32 /*_guid*/,
+ bytes calldata /*_message*/,
+ address /*_executor*/,
+ bytes calldata /*_extraData*/
+ ) internal override {
+ if (_origin.srcEid == 0) revert InvalidEid();
+ count++;
+ }
+
+ function isPeer(uint32 _eid, bytes32 _peer) public pure override returns (bool) {
+ return bytes32(uint256(_eid)) == _peer;
+ }
+}
diff --git a/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol b/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol
new file mode 100644
index 000000000..41beab225
--- /dev/null
+++ b/packages/oft-evm-upgradeable/test/mocks/PreCrimeV2UpgradeableMock.sol
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.0;
+
+import { PreCrimePeer } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol";
+import { IOAppPreCrimeSimulator } from "@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol";
+import { PreCrimeUpgradeable } from "@layerzerolabs/oapp-evm-upgradeable/contracts/precrime/PreCrimeUpgradeable.sol";
+import { InboundPacket } from "@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol";
+
+import { PreCrimeV2SimulatorUpgradeableMock } from "./PreCrimeV2SimulatorUpgradeableMock.sol";
+
+contract PreCrimeV2UpgradeableMock is PreCrimeUpgradeable {
+ constructor(address _endpoint, address _simulator) PreCrimeUpgradeable(_endpoint, _simulator) {}
+
+ uint32[] public eids;
+ bytes[] public results;
+
+ function initialize(address _delegate) external initializer {
+ __Ownable_init(_delegate);
+ }
+
+ function buildSimulationResult() external view override returns (bytes memory) {
+ return abi.encode(PreCrimeV2SimulatorUpgradeableMock(simulator).count());
+ }
+
+ function _getPreCrimePeers(
+ InboundPacket[] memory _packets
+ ) internal view override returns (PreCrimePeer[] memory peers) {
+ for (uint256 i = 0; i < _packets.length; i++) {
+ InboundPacket memory packet = _packets[i];
+ if (IOAppPreCrimeSimulator(simulator).isPeer(packet.origin.srcEid, packet.origin.sender)) {
+ return getPreCrimePeers();
+ }
+ }
+ return (new PreCrimePeer[](0));
+ }
+
+ function _preCrime(InboundPacket[] memory, uint32[] memory _eids, bytes[] memory _results) internal override {
+ eids = _eids;
+ results = _results;
+ }
+}
diff --git a/packages/oft-evm-upgradeable/turbo.json b/packages/oft-evm-upgradeable/turbo.json
new file mode 100644
index 000000000..07b634ad1
--- /dev/null
+++ b/packages/oft-evm-upgradeable/turbo.json
@@ -0,0 +1,8 @@
+{
+ "extends": ["//"],
+ "pipeline": {
+ "build": {
+ "outputs": ["artifacts*/**", "cache*/**", "out/**", "node_modules/**"]
+ }
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b185e1086..1697ca8ea 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -735,6 +735,132 @@ importers:
specifier: ^5.4.4
version: 5.5.3
+ examples/oft-upgradeable:
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.23.9
+ version: 7.23.9
+ '@layerzerolabs/devtools-evm-hardhat':
+ specifier: ^1.2.0
+ version: link:../../packages/devtools-evm-hardhat
+ '@layerzerolabs/eslint-config-next':
+ specifier: ~2.3.39
+ version: 2.3.44(typescript@5.5.3)
+ '@layerzerolabs/lz-definitions':
+ specifier: ^2.3.39
+ version: 2.3.44
+ '@layerzerolabs/lz-evm-messagelib-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-protocol-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-v1-0.7':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)
+ '@layerzerolabs/lz-v2-utilities':
+ specifier: ^2.3.39
+ version: 2.3.39
+ '@layerzerolabs/oapp-evm':
+ specifier: ^0.0.4
+ version: link:../../packages/oapp-evm
+ '@layerzerolabs/oapp-evm-upgradeable':
+ specifier: ^0.0.1
+ version: link:../../packages/oapp-evm-upgradeable
+ '@layerzerolabs/oft-evm':
+ specifier: ^0.1.0
+ version: link:../../packages/oft-evm
+ '@layerzerolabs/oft-evm-upgradeable':
+ specifier: ^0.0.1
+ version: link:../../packages/oft-evm-upgradeable
+ '@layerzerolabs/prettier-config-next':
+ specifier: ^2.3.39
+ version: 2.3.44
+ '@layerzerolabs/solhint-config':
+ specifier: ^2.3.39
+ version: 2.3.44(typescript@5.5.3)
+ '@layerzerolabs/test-devtools-evm-foundry':
+ specifier: ~2.0.0
+ version: link:../../packages/test-devtools-evm-foundry
+ '@layerzerolabs/toolbox-foundry':
+ specifier: ~0.1.9
+ version: link:../../packages/toolbox-foundry
+ '@layerzerolabs/toolbox-hardhat':
+ specifier: ~0.4.0
+ version: link:../../packages/toolbox-hardhat
+ '@nomiclabs/hardhat-ethers':
+ specifier: ^2.2.3
+ version: 2.2.3(ethers@5.7.2)(hardhat@2.22.12)
+ '@nomiclabs/hardhat-waffle':
+ specifier: ^2.0.6
+ version: 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.12)(ethereum-waffle@4.0.10)(ethers@5.7.2)(hardhat@2.22.12)
+ '@openzeppelin/contracts':
+ specifier: ^5.0.2
+ version: 5.0.2
+ '@openzeppelin/contracts-upgradeable':
+ specifier: ^5.0.2
+ version: 5.0.2(@openzeppelin/contracts@5.0.2)
+ '@openzeppelin/hardhat-upgrades':
+ specifier: ^1.28.0
+ version: 1.28.0(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.8)(ethers@5.7.2)(hardhat@2.22.12)
+ '@rushstack/eslint-patch':
+ specifier: ^1.7.0
+ version: 1.7.0
+ '@types/chai':
+ specifier: ^4.3.11
+ version: 4.3.11
+ '@types/mocha':
+ specifier: ^10.0.6
+ version: 10.0.6
+ '@types/node':
+ specifier: ~18.18.14
+ version: 18.18.14
+ chai:
+ specifier: ^4.4.1
+ version: 4.4.1
+ dotenv:
+ specifier: ^16.4.1
+ version: 16.4.5
+ eslint:
+ specifier: ^8.55.0
+ version: 8.57.0
+ eslint-plugin-jest-extended:
+ specifier: ~2.0.0
+ version: 2.0.0(eslint@8.57.0)(typescript@5.5.3)
+ ethers:
+ specifier: ^5.7.2
+ version: 5.7.2
+ hardhat:
+ specifier: ^2.22.10
+ version: 2.22.12(ts-node@10.9.2)(typescript@5.5.3)
+ hardhat-contract-sizer:
+ specifier: ^2.10.0
+ version: 2.10.0(hardhat@2.22.12)
+ hardhat-deploy:
+ specifier: ^0.12.1
+ version: 0.12.4
+ hardhat-deploy-ethers:
+ specifier: ^0.3.0-beta.13
+ version: 0.3.0-beta.13(ethers@5.7.2)(hardhat@2.22.12)
+ mocha:
+ specifier: ^10.2.0
+ version: 10.2.0
+ prettier:
+ specifier: ^3.2.5
+ version: 3.2.5
+ solhint:
+ specifier: ^4.1.1
+ version: 4.1.1(typescript@5.5.3)
+ solidity-bytes-utils:
+ specifier: ^0.8.2
+ version: 0.8.2
+ ts-node:
+ specifier: ^10.9.2
+ version: 10.9.2(@swc/core@1.4.0)(@types/node@18.18.14)(typescript@5.5.3)
+ typescript:
+ specifier: ^5.4.4
+ version: 5.5.3
+
examples/onft721:
devDependencies:
'@babel/core':
@@ -1592,6 +1718,37 @@ importers:
specifier: ^5.0.2
version: 5.0.2(@openzeppelin/contracts@5.0.2)
+ packages/oapp-evm-upgradeable:
+ dependencies:
+ ethers:
+ specifier: ^5.7.2
+ version: 5.7.2
+ devDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-protocol-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-v1-0.7':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)
+ '@layerzerolabs/oapp-evm':
+ specifier: ^0.0.4
+ version: link:../oapp-evm
+ '@layerzerolabs/test-devtools-evm-foundry':
+ specifier: ~1.0.0
+ version: 1.0.0(@layerzerolabs/lz-evm-messagelib-v2@2.3.44)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@layerzerolabs/oapp-evm@packages+oapp-evm)(@layerzerolabs/oft-evm@packages+oft-evm)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)
+ '@layerzerolabs/toolbox-foundry':
+ specifier: ^0.1.9
+ version: link:../toolbox-foundry
+ '@openzeppelin/contracts':
+ specifier: ^5.0.2
+ version: 5.0.2
+ '@openzeppelin/contracts-upgradeable':
+ specifier: ^5.0.2
+ version: 5.0.2(@openzeppelin/contracts@5.0.2)
+
packages/oft-evm:
devDependencies:
'@layerzerolabs/lz-evm-messagelib-v2':
@@ -1622,6 +1779,42 @@ importers:
specifier: ^5.0.5
version: 5.0.9
+ packages/oft-evm-upgradeable:
+ devDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-protocol-v2':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-v1-0.7':
+ specifier: ^2.3.39
+ version: 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)
+ '@layerzerolabs/oapp-evm':
+ specifier: ^0.0.4
+ version: link:../oapp-evm
+ '@layerzerolabs/oapp-evm-upgradeable':
+ specifier: ^0.0.1
+ version: link:../oapp-evm-upgradeable
+ '@layerzerolabs/oft-evm':
+ specifier: ^0.1.0
+ version: link:../oft-evm
+ '@layerzerolabs/test-devtools-evm-foundry':
+ specifier: ~1.0.0
+ version: 1.0.0(@layerzerolabs/lz-evm-messagelib-v2@2.3.44)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@layerzerolabs/oapp-evm@packages+oapp-evm)(@layerzerolabs/oft-evm@packages+oft-evm)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)
+ '@layerzerolabs/toolbox-foundry':
+ specifier: ^0.1.9
+ version: link:../toolbox-foundry
+ '@openzeppelin/contracts':
+ specifier: ^5.0.2
+ version: 5.0.2
+ '@openzeppelin/contracts-upgradeable':
+ specifier: ^5.0.2
+ version: 5.0.2(@openzeppelin/contracts@5.0.2)
+ rimraf:
+ specifier: ^5.0.5
+ version: 5.0.9
+
packages/omnicounter-devtools:
devDependencies:
'@layerzerolabs/devtools':
@@ -3403,6 +3596,36 @@ packages:
- debug
dev: true
+ /@aws-crypto/sha256-js@1.2.2:
+ resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==}
+ dependencies:
+ '@aws-crypto/util': 1.2.2
+ '@aws-sdk/types': 3.664.0
+ tslib: 1.14.1
+ dev: true
+
+ /@aws-crypto/util@1.2.2:
+ resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==}
+ dependencies:
+ '@aws-sdk/types': 3.664.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: true
+
+ /@aws-sdk/types@3.664.0:
+ resolution: {integrity: sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ '@smithy/types': 3.6.0
+ tslib: 2.6.3
+ dev: true
+
+ /@aws-sdk/util-utf8-browser@3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.6.3
+ dev: true
+
/@axelar-network/axelar-gmp-sdk-solidity@5.9.0:
resolution: {integrity: sha512-BarUqOln3m5jnvBo+LF6ARWwbRXqek93dDtCgIevKGl+Be2JcNOaBB32Bg2LOOBnpOKJBvJq1SI2ZoGurBQ4Qg==}
engines: {node: '>=18'}
@@ -5856,6 +6079,26 @@ packages:
- typescript
dev: true
+ /@layerzerolabs/test-devtools-evm-foundry@1.0.0(@layerzerolabs/lz-evm-messagelib-v2@2.3.44)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@layerzerolabs/oapp-evm@packages+oapp-evm)(@layerzerolabs/oft-evm@packages+oft-evm)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2):
+ resolution: {integrity: sha512-7TwAz1G7lGf7NXHzg9rVJgRkXd5MIvBdBv55LnFnlC6JrMpZPXVK8L8C70/apuEtba1RE2nUbMLOzS5vrOLudA==}
+ peerDependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.3
+ '@layerzerolabs/lz-evm-protocol-v2': ^2.3.3
+ '@layerzerolabs/lz-evm-v1-0.7': ^2.3.3
+ '@layerzerolabs/oapp-evm': ^0.0.4
+ '@layerzerolabs/oft-evm': ^0.1.0
+ '@openzeppelin/contracts': ^4.9.5 || ^5.0.0
+ '@openzeppelin/contracts-upgradeable': ^4.9.5 || ^5.0.0
+ dependencies:
+ '@layerzerolabs/lz-evm-messagelib-v2': 2.3.44(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@2.3.44)(@layerzerolabs/lz-evm-v1-0.7@2.3.44)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-protocol-v2': 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2)
+ '@layerzerolabs/lz-evm-v1-0.7': 2.3.44(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)
+ '@layerzerolabs/oapp-evm': link:packages/oapp-evm
+ '@layerzerolabs/oft-evm': link:packages/oft-evm
+ '@openzeppelin/contracts': 5.0.2
+ '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2)
+ dev: true
+
/@manypkg/find-root@1.1.0:
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
dependencies:
@@ -6273,6 +6516,66 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@nomicfoundation/slang-darwin-arm64@0.17.0:
+ resolution: {integrity: sha512-O0q94EUtoWy9A5kOTOa9/khtxXDYnLqmuda9pQELurSiwbQEVCPQL8kb34VbOW+ifdre66JM/05Xw9JWhIZ9sA==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-darwin-x64@0.17.0:
+ resolution: {integrity: sha512-IaDbHzvT08sBK2HyGzonWhq1uu8IxdjmTqAWHr25Oh/PYnamdi8u4qchZXXYKz/DHLoYN3vIpBXoqLQIomhD/g==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-linux-arm64-gnu@0.17.0:
+ resolution: {integrity: sha512-Lj4anvOsQZxs1SycG8VyT2Rl2oqIhyLSUCgGepTt3CiJ/bM+8r8bLJIgh8vKkki4BWz49YsYIgaJB2IPv8FFTw==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-linux-arm64-musl@0.17.0:
+ resolution: {integrity: sha512-/xkTCa9d5SIWUBQE3BmLqDFfJRr4yUBwbl4ynPiGUpRXrD69cs6pWKkwjwz/FdBpXqVo36I+zY95qzoTj/YhOA==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-linux-x64-gnu@0.17.0:
+ resolution: {integrity: sha512-oe5IO5vntOqYvTd67deCHPIWuSuWm6aYtT2/0Kqz2/VLtGz4ClEulBSRwfnNzBVtw2nksWipE1w8BzhImI7Syg==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-linux-x64-musl@0.17.0:
+ resolution: {integrity: sha512-PpYCI5K/kgLAMXaPY0V4VST5gCDprEOh7z/47tbI8kJQumI5odjsj/Cs8MpTo7/uRH6flKYbVNgUzcocWVYrAQ==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-win32-arm64-msvc@0.17.0:
+ resolution: {integrity: sha512-u/Mkf7OjokdBilP7QOJj6QYJU4/mjkbKnTX21wLyCIzeVWS7yafRPYpBycKIBj2pRRZ6ceAY5EqRpb0aiCq+0Q==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-win32-ia32-msvc@0.17.0:
+ resolution: {integrity: sha512-XJBVQfNnZQUv0tP2JSJ573S+pmgrLWgqSZOGaMllnB/TL1gRci4Z7dYRJUF2s82GlRJE+FHSI2Ro6JISKmlXCg==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang-win32-x64-msvc@0.17.0:
+ resolution: {integrity: sha512-zPGsAeiTfqfPNYHD8BfrahQmYzA78ZraoHKTGraq/1xwJwzBK4bu/NtvVA4pJjBV+B4L6DCxVhSbpn40q26JQA==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@nomicfoundation/slang@0.17.0:
+ resolution: {integrity: sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@nomicfoundation/slang-darwin-arm64': 0.17.0
+ '@nomicfoundation/slang-darwin-x64': 0.17.0
+ '@nomicfoundation/slang-linux-arm64-gnu': 0.17.0
+ '@nomicfoundation/slang-linux-arm64-musl': 0.17.0
+ '@nomicfoundation/slang-linux-x64-gnu': 0.17.0
+ '@nomicfoundation/slang-linux-x64-musl': 0.17.0
+ '@nomicfoundation/slang-win32-arm64-msvc': 0.17.0
+ '@nomicfoundation/slang-win32-ia32-msvc': 0.17.0
+ '@nomicfoundation/slang-win32-x64-msvc': 0.17.0
+ dev: true
+
/@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1:
resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==}
engines: {node: '>= 10'}
@@ -6378,6 +6681,27 @@ packages:
hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3)
dev: true
+ /@nomiclabs/hardhat-etherscan@3.1.8(hardhat@2.22.12):
+ resolution: {integrity: sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==}
+ deprecated: The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead
+ peerDependencies:
+ hardhat: ^2.0.4
+ dependencies:
+ '@ethersproject/abi': 5.7.0
+ '@ethersproject/address': 5.7.0
+ cbor: 8.1.0
+ chalk: 2.4.2
+ debug: 4.3.5
+ fs-extra: 7.0.1
+ hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3)
+ lodash: 4.17.21
+ semver: 6.3.1
+ table: 6.8.2
+ undici: 5.28.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@nomiclabs/hardhat-waffle@2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.12)(ethereum-waffle@4.0.10)(ethers@5.7.2)(hardhat@2.22.12):
resolution: {integrity: sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg==}
peerDependencies:
@@ -6426,6 +6750,80 @@ packages:
resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==}
dev: true
+ /@openzeppelin/defender-base-client@1.54.6(debug@4.3.5):
+ resolution: {integrity: sha512-PTef+rMxkM5VQ7sLwLKSjp2DBakYQd661ZJiSRywx+q/nIpm3B/HYGcz5wPZCA5O/QcEP6TatXXDoeMwimbcnw==}
+ deprecated: This package has been deprecated and will no longer be maintained, please use @openzeppelin/defender-sdk package instead.
+ dependencies:
+ amazon-cognito-identity-js: 6.3.12
+ async-retry: 1.3.3
+ axios: 1.7.4(debug@4.3.5)
+ lodash: 4.17.21
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - debug
+ - encoding
+ dev: true
+
+ /@openzeppelin/hardhat-upgrades@1.28.0(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.8)(ethers@5.7.2)(hardhat@2.22.12):
+ resolution: {integrity: sha512-7sb/Jf+X+uIufOBnmHR0FJVWuxEs2lpxjJnLNN6eCJCP8nD0v+Ot5lTOW2Qb/GFnh+fLvJtEkhkowz4ZQ57+zQ==}
+ hasBin: true
+ peerDependencies:
+ '@nomiclabs/hardhat-ethers': ^2.0.0
+ '@nomiclabs/hardhat-etherscan': ^3.1.0
+ '@nomiclabs/harhdat-etherscan': '*'
+ ethers: ^5.7.2
+ hardhat: ^2.0.2
+ peerDependenciesMeta:
+ '@nomiclabs/harhdat-etherscan':
+ optional: true
+ dependencies:
+ '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.22.12)
+ '@nomiclabs/hardhat-etherscan': 3.1.8(hardhat@2.22.12)
+ '@openzeppelin/defender-base-client': 1.54.6(debug@4.3.5)
+ '@openzeppelin/platform-deploy-client': 0.8.0(debug@4.3.5)
+ '@openzeppelin/upgrades-core': 1.40.0
+ chalk: 4.1.2
+ debug: 4.3.5
+ ethers: 5.7.2
+ hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3)
+ proper-lockfile: 4.1.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /@openzeppelin/platform-deploy-client@0.8.0(debug@4.3.5):
+ resolution: {integrity: sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA==}
+ deprecated: '@openzeppelin/platform-deploy-client is deprecated. Please use @openzeppelin/defender-sdk-deploy-client'
+ dependencies:
+ '@ethersproject/abi': 5.7.0
+ '@openzeppelin/defender-base-client': 1.54.6(debug@4.3.5)
+ axios: 0.21.4(debug@4.3.5)
+ lodash: 4.17.21
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - debug
+ - encoding
+ dev: true
+
+ /@openzeppelin/upgrades-core@1.40.0:
+ resolution: {integrity: sha512-4bPSXdEqHsNRL5T1ybPLneWGYjzGl6XWGWkv7aUoFFgz8mOdarstRBX1Wi4XJFw6IeHPUI7mMSQr2jdz8Y2ypQ==}
+ hasBin: true
+ dependencies:
+ '@nomicfoundation/slang': 0.17.0
+ cbor: 9.0.2
+ chalk: 4.1.2
+ compare-versions: 6.1.1
+ debug: 4.3.5
+ ethereumjs-util: 7.1.5
+ minimatch: 9.0.5
+ minimist: 1.2.8
+ proper-lockfile: 4.1.2
+ solidity-ast: 0.4.59
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@pkgjs/parseargs@0.11.0:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -6805,6 +7203,13 @@ packages:
resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==}
dev: true
+ /@smithy/types@3.6.0:
+ resolution: {integrity: sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ tslib: 2.6.3
+ dev: true
+
/@solana-developers/helpers@2.4.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.3):
resolution: {integrity: sha512-eiqHOluJlP9cYfAkgSLaM6o5etWfbBbjNnR3AL0Ds09CJdA3A61qimCPQFmjiLynAb6U7/NSWq0Q28/hnb02Bw==}
dependencies:
@@ -7704,7 +8109,7 @@ packages:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.2
@@ -7905,6 +8310,18 @@ packages:
require-from-string: 2.0.2
uri-js: 4.4.1
+ /amazon-cognito-identity-js@6.3.12:
+ resolution: {integrity: sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==}
+ dependencies:
+ '@aws-crypto/sha256-js': 1.2.2
+ buffer: 4.9.2
+ fast-base64-decode: 1.0.0
+ isomorphic-unfetch: 3.1.0
+ js-cookie: 2.2.1
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
dependencies:
@@ -8166,6 +8583,12 @@ packages:
resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
dev: false
+ /async-retry@1.3.3:
+ resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
+ dependencies:
+ retry: 0.13.1
+ dev: true
+
/async@2.6.4:
resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
dependencies:
@@ -8201,7 +8624,7 @@ packages:
/axios@0.21.4(debug@4.3.4):
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
dependencies:
- follow-redirects: 1.15.5(debug@4.3.4)
+ follow-redirects: 1.15.6(debug@4.3.4)
transitivePeerDependencies:
- debug
dev: true
@@ -8217,12 +8640,22 @@ packages:
/axios@0.25.0:
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
dependencies:
- follow-redirects: 1.15.6(debug@4.3.5)
+ follow-redirects: 1.15.6(debug@4.3.4)
transitivePeerDependencies:
- debug
dev: true
/axios@1.7.4:
+ resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==}
+ dependencies:
+ follow-redirects: 1.15.6(debug@4.3.4)
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+ dev: true
+
+ /axios@1.7.4(debug@4.3.5):
resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==}
dependencies:
follow-redirects: 1.15.6(debug@4.3.5)
@@ -8547,6 +8980,14 @@ packages:
safe-buffer: 5.2.1
dev: true
+ /buffer@4.9.2:
+ resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ isarray: 1.0.0
+ dev: true
+
/buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
dependencies:
@@ -8702,6 +9143,20 @@ packages:
/caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+ /cbor@8.1.0:
+ resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==}
+ engines: {node: '>=12.19'}
+ dependencies:
+ nofilter: 3.1.0
+ dev: true
+
+ /cbor@9.0.2:
+ resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==}
+ engines: {node: '>=16'}
+ dependencies:
+ nofilter: 3.1.0
+ dev: true
+
/chai@4.4.1:
resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
engines: {node: '>=4'}
@@ -9045,6 +9500,10 @@ packages:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
+ /compare-versions@6.1.1:
+ resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
+ dev: true
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -10669,6 +11128,10 @@ packages:
engines: {node: '> 0.1.90'}
dev: true
+ /fast-base64-decode@1.0.0:
+ resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==}
+ dev: true
+
/fast-check@3.15.1:
resolution: {integrity: sha512-GutOXZ+SCxGaFWfHe0Pbeq8PrkpGtPxA9/hdkI3s9YzqeMlrq5RdJ+QfYZ/S93jMX+tAyqgW0z5c9ppD+vkGUw==}
engines: {node: '>=8.0.0'}
@@ -10843,8 +11306,8 @@ packages:
/fn.name@1.1.0:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
- /follow-redirects@1.15.5(debug@4.3.4):
- resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==}
+ /follow-redirects@1.15.6(debug@4.3.4):
+ resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -11152,7 +11615,7 @@ packages:
foreground-child: 3.1.1
jackspeak: 2.3.6
minimatch: 9.0.4
- minipass: 7.0.4
+ minipass: 7.1.2
path-scurry: 1.10.1
dev: true
@@ -11194,6 +11657,7 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -11378,6 +11842,16 @@ packages:
strip-ansi: 6.0.1
dev: true
+ /hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2)(hardhat@2.22.12):
+ resolution: {integrity: sha512-PdWVcKB9coqWV1L7JTpfXRCI91Cgwsm7KLmBcwZ8f0COSm1xtABHZTyz3fvF6p42cTnz1VM0QnfDvMFlIRkSNw==}
+ peerDependencies:
+ ethers: ^5.7.2
+ hardhat: ^2.0.0
+ dependencies:
+ ethers: 5.7.2
+ hardhat: 2.22.12(ts-node@10.9.2)(typescript@5.5.3)
+ dev: true
+
/hardhat-deploy-ethers@0.4.2(@nomicfoundation/hardhat-ethers@3.0.5)(hardhat-deploy@0.12.4)(hardhat@2.22.12):
resolution: {integrity: sha512-AskNH/XRYYYqPT94MvO5s1yMi+/QvoNjS4oU5VcVqfDU99kgpGETl+uIYHIrSXtH5sy7J6gyVjpRMf4x0tjLSQ==}
peerDependencies:
@@ -11681,7 +12155,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
dev: true
@@ -12201,6 +12675,10 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+ dev: true
+
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
dev: true
@@ -12214,6 +12692,15 @@ packages:
engines: {node: '>=16'}
dev: true
+ /isomorphic-unfetch@3.1.0:
+ resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==}
+ dependencies:
+ node-fetch: 2.7.0
+ unfetch: 4.2.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/isomorphic-ws@4.0.1(ws@7.5.10):
resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==}
peerDependencies:
@@ -12764,6 +13251,10 @@ packages:
engines: {node: '>=10'}
dev: true
+ /js-cookie@2.2.1:
+ resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
+ dev: true
+
/js-sha256@0.9.0:
resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==}
dev: true
@@ -13496,6 +13987,13 @@ packages:
brace-expansion: 2.0.1
dev: true
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
/minimist-options@4.1.0:
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
engines: {node: '>= 6'}
@@ -13751,6 +14249,11 @@ packages:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: true
+ /nofilter@3.1.0:
+ resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==}
+ engines: {node: '>=12.19'}
+ dev: true
+
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
@@ -14344,6 +14847,14 @@ packages:
object-assign: 4.1.1
react-is: 16.13.1
+ /proper-lockfile@4.1.2:
+ resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
+ dependencies:
+ graceful-fs: 4.2.11
+ retry: 0.12.0
+ signal-exit: 3.0.7
+ dev: true
+
/proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
dev: true
@@ -14774,6 +15285,16 @@ packages:
signal-exit: 3.0.7
dev: true
+ /retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /retry@0.13.1:
+ resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
+ engines: {node: '>= 4'}
+ dev: true
+
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -15242,7 +15763,7 @@ packages:
dependencies:
command-exists: 1.2.9
commander: 8.3.0
- follow-redirects: 1.15.6(debug@4.3.5)
+ follow-redirects: 1.15.6(debug@4.3.4)
js-sha3: 0.8.0
memorystream: 0.3.1
semver: 5.7.2
@@ -15294,6 +15815,10 @@ packages:
- typescript
dev: true
+ /solidity-ast@0.4.59:
+ resolution: {integrity: sha512-I+CX0wrYUN9jDfYtcgWSe+OAowaXy8/1YQy7NS4ni5IBDmIYBq7ZzaP/7QqouLjzZapmQtvGLqCaYgoUWqBo5g==}
+ dev: true
+
/solidity-bytes-utils@0.8.2:
resolution: {integrity: sha512-cqXPYAV2auhpdKSTPuqji0CwpSceZDu95CzqSM/9tDJ2MoMaMsdHTpOIWtVw31BIqqGPNmIChCswzbw0tHaMTw==}
dependencies:
@@ -16365,6 +16890,10 @@ packages:
dependencies:
'@fastify/busboy': 2.1.0
+ /unfetch@4.2.0:
+ resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
+ dev: true
+
/universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}