019bab3c-e9f9-72ab-84cf-abd0852573bf
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 39033 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39034 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39035 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39036 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39037 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39038 | detector.run | complete | 1 / 3 | 3 months ago |
| 39039 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39242 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39243 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-qoo7ndg1) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-qoo7ndg1) MrpcDeposit.deleteToken(address) (contracts/MrpcDeposit.sol#107-119) uses a dangerous strict equality: - require(bool,string)(IERC20(token).balanceOf(address(this)) == 0,MrpcDeposit: cannot delete token with positive balance) (contracts/MrpcDeposit.sol#109) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities MrpcDeposit.collectPayment(address[],uint256[],address) (contracts/MrpcDeposit.sol#150-161) has external calls inside a loop: require(bool,string)(IERC20(tokens[i_scope_0]).balanceOf(address(this)) >= amounts[i_scope_0],MrpcDeposit: wrong amount) (contracts/MrpcDeposit.sol#157) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop OwnableUpgradeable._getOwnableStorage() (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#30-34) uses assembly - INLINE ASM (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#31-33) Initializable._getInitializableStorage() (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#223-227) uses assembly - INLINE ASM (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#224-226) PausableUpgradeable._getPausableStorage() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#27-31) uses assembly - INLINE ASM (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#28-30) ReentrancyGuardUpgradeable._getReentrancyGuardStorage() (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#46-50) uses assembly - INLINE ASM (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#47-49) SafeERC20._safeTransfer(IERC20,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#176-200) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#179-199) SafeERC20._safeTransferFrom(IERC20,address,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#212-244) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#221-243) SafeERC20._safeApprove(IERC20,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#255-279) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#258-278) StorageSlot.getAddressSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#66-70) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#67-69) StorageSlot.getBooleanSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#75-79) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#76-78) StorageSlot.getBytes32Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#84-88) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#85-87) StorageSlot.getUint256Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#93-97) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#94-96) StorageSlot.getInt256Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#102-106) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#103-105) StorageSlot.getStringSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#111-115) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#112-114) StorageSlot.getStringSlot(string) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#120-124) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#121-123) StorageSlot.getBytesSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#129-133) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#130-132) StorageSlot.getBytesSlot(bytes) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#138-142) uses assembly - INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#139-141) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage 4 different versions of Solidity are used: - Version constraint ^0.8.20 is used by: -^0.8.20 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4) -^0.8.20 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4) -^0.8.20 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4) -^0.8.20 (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#4) -^0.8.20 (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#4) -^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4) -^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol#4) -^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5) - Version constraint ^0.8.23 is used by: -^0.8.23 (contracts/MrpcDeposit.sol#2) -^0.8.23 (contracts/interfaces/IMrpcDeposit.sol#2) - Version constraint >=0.6.2 is used by: ->=0.6.2 (lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol#4) - Version constraint >=0.4.16 is used by: ->=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4) ->=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4) ->=0.4.16 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4) ->=0.4.16 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used MrpcDeposit.deleteToken(address) (contracts/MrpcDeposit.sol#107-119) has costly operations inside a loop: - _acceptableTokens.pop() (contracts/MrpcDeposit.sol#113) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed ContextUpgradeable._contextSuffixLength() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31-33) is never used and should be removed ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed Initializable._disableInitializers() (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#192-203) is never used and should be removed Initializable._getInitializedVersion() (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#208-210) is never used and should be removed ReentrancyGuardUpgradeable._reentrancyGuardEntered() (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#101-104) is never used and should be removed Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - VerbatimInvalidDeduplication - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess. It is used by: - ^0.8.20 (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4) - ^0.8.20 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4) - ^0.8.20 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4) - ^0.8.20 (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#4) - ^0.8.20 (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#4) - ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4) - ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol#4) - ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5) Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - NestedCalldataArrayAbiReencodingSizeValidation - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - MissingEscapingInFormatting - ArraySliceDynamicallyEncodedBaseType - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow. It is used by: - >=0.6.2 (lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol#4) Version constraint >=0.4.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow - privateCanBeOverridden - SignedArrayStorageCopy - ABIEncoderV2StorageArrayWithMultiSlotElement - DynamicConstructorArgumentsClippedABIV2 - UninitializedFunctionPointerInConstructor_0.4.x - IncorrectEventSignatureInLibraries_0.4.x - ExpExponentCleanup - NestedArrayFunctionCallDecoder - ZeroFunctionSelector. It is used by: - >=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4) - >=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4) - >=0.4.16 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4) - >=0.4.16 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Function OwnableUpgradeable.__Ownable_init(address) (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#51-53) is not in mixedCase Function OwnableUpgradeable.__Ownable_init_unchained(address) (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#55-60) is not in mixedCase Constant OwnableUpgradeable.OwnableStorageLocation (@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#28) is not in UPPER_CASE_WITH_UNDERSCORES Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase Function PausableUpgradeable.__Pausable_init() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#56-58) is not in mixedCase Function PausableUpgradeable.__Pausable_init_unchained() (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#60-63) is not in mixedCase Constant PausableUpgradeable.PausableStorageLocation (@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol#25) is not in UPPER_CASE_WITH_UNDERSCORES Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init() (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#57-59) is not in mixedCase Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#61-64) is not in mixedCase Constant ReentrancyGuardUpgradeable.ReentrancyGuardStorageLocation (@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol#44) is not in UPPER_CASE_WITH_UNDERSCORES Function MrpcDeposit.__Deposit_init(address,address,address,address[],uint256[]) (contracts/MrpcDeposit.sol#51-64) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Loop condition i < _acceptableTokens.length (contracts/MrpcDeposit.sol#98) should use cached array length instead of referencing `length` member of the storage array. Loop condition i < _acceptableTokens.length (contracts/MrpcDeposit.sol#191) should use cached array length instead of referencing `length` member of the storage array. Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length . analyzed (13 contracts with 100 detectors), 44 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.23",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.23",
"install_stderr": null,
"install_stdout": "Version '0.8.23' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-qoo7ndg1 --include-path /tmp/slither-qoo7ndg1/lib --include-path /tmp/slither-qoo7ndg1/lib/openzeppelin-contracts --allow-paths /tmp/slither-qoo7ndg1,/tmp/slither-qoo7ndg1/lib,/tmp/slither-qoo7ndg1/lib/openzeppelin-contracts,/tmp/slither-qoo7ndg1/src",
"remappings": [
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"
],
"source_files": [
"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol",
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
"@openzeppelin/contracts/token/ERC20/IERC20.sol",
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"@openzeppelin/contracts/utils/Address.sol",
"@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"contracts/interfaces/IMrpcDeposit.sol",
"contracts/MrpcDeposit.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 44,
"workspace_hash": "9c705e400ea2bb2da593975690f5444da3c1ae3077f83ff739d9d5874bee2d78",
"duration_seconds": 0.8715434074401855,
"solc_version_requested": "0.8.23"
}
{"no_findings":false,"summary":"Two upgradeability-related risks: potential proxy takeover if initialization is not atomic, and unprotected implementation initialization.","findings":[{"severity":"medium","category":"upgradeability","title":"Proxy can be hijacked if not initialized atomically","exploit_scenario":"If the proxy is deployed without calling `initialize` in the same transaction, an attacker can call `initialize` first and set themselves as consensus/governance/treasury, then drain deposits via `collectPayment` or change token controls.","recommendation":"Ensure the proxy is initialized atomically at deployment (e.g., constructor data on the proxy or a deployment script that calls `initialize` immediately). Consider deployment safeguards to prevent uninitialized proxies.","evidence":"`initialize` is external and only protected by `initializer`, so the first caller sets critical roles.","locations":["contracts/MrpcDeposit.sol:44"]},{"severity":"low","category":"upgradeability","title":"Implementation contract is left initializable","exploit_scenario":"Anyone can initialize the implementation contract itself and take control of it. If tokens are mistakenly sent to the implementation address, the attacker can call `collectPayment` to withdraw them.","recommendation":"Add a constructor that calls `_disableInitializers()` to lock the implementation, and avoid sending assets to the implementation address.","evidence":"No constructor disables initializers; `initialize` is publicly callable once on any deployment of the implementation.","locations":["contracts/MrpcDeposit.sol:13","contracts/MrpcDeposit.sol:44"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-u20ew16_
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac2f-8645-7700-868d-28ea26d211eb
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Preparing to audit with AUDIT_BUNDLE.txt**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-u20ew16_ succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/MrpcDeposit.sol
================================================================================
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.23;
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
import "./interfaces/IMrpcDeposit.sol";
contract MrpcDeposit is IMrpcDeposit, ReentrancyGuardUpgradeable, OwnableUpgradeable, PausableUpgradeable {
thinking
**Analyzing potential vulnerabilities and upgradeability risks**
I've examined the MrpcDeposit contract closely, identifying mostly low- to medium-risk issues like missing _disableInitializers on the implementation contract which could allow takeover if tokens are sent there, and some configuration risks such as allowing governance/treasury addresses to be zero. There are no clear exploitable access control bypasses or critical reentrancy flaws, but some edge cases around token deletion and stuck funds exist. Overall, vulnerabilities appear limited and largely relate to deployment practices and upgradeability precautions.
exec
/bin/bash -lc 'nl -ba contracts/MrpcDeposit.sol' in /tmp/codex-u20ew16_ succeeded in 20ms:
1 // SPDX-License-Identifier: GPL-3.0-only
2 pragma solidity ^0.8.23;
3
4 import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
5 import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6 import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7 import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
8 import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
9 import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
10
11 import "./interfaces/IMrpcDeposit.sol";
12
13 contract MrpcDeposit is IMrpcDeposit, ReentrancyGuardUpgradeable, OwnableUpgradeable, PausableUpgradeable {
14
15 enum TokenListAlteration{ ADD, UPDATE, DISABLE, ENABLE, DELETE }
16
17 event PaymentCollected(address indexed treasury, address[] tokens, uint256[] amounts);
18 event ConsensusUpdated(address prevConsensus, address newConsensus);
19 event TreasuryUpdated(address prevTreasury, address newTreasury);
20 event GovernanceUpdated(address prevGovernance, address newGovernance);
thinking
**Summarizing security findings and preparing JSON output**
I'm analyzing potential low-severity upgradeability and configuration risks in the contract, focusing on uninitialized proxies and missing initializer locks that could let attackers seize control or withdraw tokens mistakenly sent to implementation. I'll produce a concise JSON with two findings covering these concerns, including evidence lines and deployment recommendations.
codex
{"no_findings":false,"summary":"Two upgradeability-related risks: potential proxy takeover if initialization is not atomic, and unprotected implementation initialization.","findings":[{"severity":"medium","category":"upgradeability","title":"Proxy can be hijacked if not initialized atomically","exploit_scenario":"If the proxy is deployed without calling `initialize` in the same transaction, an attacker can call `initialize` first and set themselves as consensus/governance/treasury, then drain deposits via `collectPayment` or change token controls.","recommendation":"Ensure the proxy is initialized atomically at deployment (e.g., constructor data on the proxy or a deployment script that calls `initialize` immediately). Consider deployment safeguards to prevent uninitialized proxies.","evidence":"`initialize` is external and only protected by `initializer`, so the first caller sets critical roles.","locations":["contracts/MrpcDeposit.sol:44"]},{"severity":"low","category":"upgradeability","title":"Implementation contract is left initializable","exploit_scenario":"Anyone can initialize the implementation contract itself and take control of it. If tokens are mistakenly sent to the implementation address, the attacker can call `collectPayment` to withdraw them.","recommendation":"Add a constructor that calls `_disableInitializers()` to lock the implementation, and avoid sending assets to the implementation address.","evidence":"No constructor disables initializers; `initialize` is publicly callable once on any deployment of the implementation.","locations":["contracts/MrpcDeposit.sol:13","contracts/MrpcDeposit.sol:44"]}]}
tokens used
15,408
{
"codex": {
"ran_at": "2026-01-11T08:34:07.350463+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 12,
"import_count": 12,
"first_party_contracts_count": 2
},
"summary": "Two upgradeability-related risks: potential proxy takeover if initialization is not atomic, and unprotected implementation initialization.",
"raw_final": {
"summary": "Two upgradeability-related risks: potential proxy takeover if initialization is not atomic, and unprotected implementation initialization.",
"findings": [
{
"title": "Proxy can be hijacked if not initialized atomically",
"category": "upgradeability",
"evidence": "`initialize` is external and only protected by `initializer`, so the first caller sets critical roles.",
"severity": "medium",
"locations": [
"contracts/MrpcDeposit.sol:44"
],
"recommendation": "Ensure the proxy is initialized atomically at deployment (e.g., constructor data on the proxy or a deployment script that calls `initialize` immediately). Consider deployment safeguards to prevent uninitialized proxies.",
"exploit_scenario": "If the proxy is deployed without calling `initialize` in the same transaction, an attacker can call `initialize` first and set themselves as consensus/governance/treasury, then drain deposits via `collectPayment` or change token controls."
},
{
"title": "Implementation contract is left initializable",
"category": "upgradeability",
"evidence": "No constructor disables initializers; `initialize` is publicly callable once on any deployment of the implementation.",
"severity": "low",
"locations": [
"contracts/MrpcDeposit.sol:13",
"contracts/MrpcDeposit.sol:44"
],
"recommendation": "Add a constructor that calls `_disableInitializers()` to lock the implementation, and avoid sending assets to the implementation address.",
"exploit_scenario": "Anyone can initialize the implementation contract itself and take control of it. If tokens are mistakenly sent to the implementation address, the attacker can call `collectPayment` to withdraw them."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0142 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x8456cb59 00000026: GT 00000027: PUSH2 0x00b8 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xd0965645 00000031: GT 00000032: PUSH2 0x007c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xd0965645 0000003c: EQ 0000003d: PUSH2 0x0298 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xd3c7c2c7 00000047: EQ 00000048: PUSH2 0x02ab 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xe0149124 00000052: EQ 00000053: PUSH2 0x02c0 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xe12f3a61 0000005d: EQ 0000005e: PUSH2 0x02d3 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xf069f712 00000068: EQ 00000069: PUSH2 0x02f4 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xf2fde38b 00000073: EQ 00000074: PUSH2 0x0307 00000077: JUMPI 00000078: PUSH1 0x00 0000007a: DUP1 0000007b: REVERT 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x8456cb59 00000083: EQ 00000084: PUSH2 0x0227 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x8da5cb5b 0000008e: EQ 0000008f: PUSH2 0x022f 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x99572d6f 00000099: EQ 0000009a: PUSH2 0x025f 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0xb14f2a39 000000a4: EQ 000000a5: PUSH2 0x0272 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0xc690908a 000000af: EQ 000000b0: PUSH2 0x0285 000000b3: JUMPI 000000b4: PUSH1 0x00 000000b6: DUP1 000000b7: REVERT 000000b8: JUMPDEST 000000b9: DUP1 000000ba: PUSH4 0x3b19e84a 000000bf: GT 000000c0: PUSH2 0x010a 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x3b19e84a 000000ca: EQ 000000cb: PUSH2 0x01bd 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x3f4ba83a 000000d5: EQ 000000d6: PUSH2 0x01ce 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x47e7ef24 000000e0: EQ 000000e1: PUSH2 0x01d6 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x5c975abb 000000eb: EQ 000000ec: PUSH2 0x01e9 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x60e06010 000000f6: EQ 000000f7: PUSH2 0x020c 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x715018a6 00000101: EQ 00000102: PUSH2 0x021f 00000105: JUMPI 00000106: PUSH1 0x00 00000108: DUP1 00000109: REVERT 0000010a: JUMPDEST 0000010b: DUP1 0000010c: PUSH4 0x1355a3ed 00000111: EQ 00000112: PUSH2 0x0147 00000115: JUMPI 00000116: DUP1 00000117: PUSH4 0x179e740b 0000011c: EQ 0000011d: PUSH2 0x015c 00000120: JUMPI 00000121: DUP1 00000122: PUSH4 0x23e27a64 00000127: EQ 00000128: PUSH2 0x0186 0000012b: JUMPI 0000012c: DUP1 0000012d: PUSH4 0x289b3c0d 00000132: EQ 00000133: PUSH2 0x0199 00000136: JUMPI 00000137: DUP1 00000138: PUSH4 0x2f0de139 0000013d: EQ 0000013e: PUSH2 0x01aa 00000141: JUMPI 00000142: JUMPDEST 00000143: PUSH1 0x00 00000145: DUP1 00000146: REVERT 00000147: JUMPDEST 00000148: PUSH2 0x015a 0000014b: PUSH2 0x0155 0000014e: CALLDATASIZE 0000014f: PUSH1 0x04 00000151: PUSH2 0x1e03 00000154: JUMP 00000155: JUMPDEST 00000156: PUSH2 0x031a 00000159: JUMP 0000015a: JUMPDEST 0000015b: STOP 0000015c: JUMPDEST 0000015d: PUSH1 0x00 0000015f: SLOAD 00000160: PUSH1 0x01 00000162: PUSH1 0x01 00000164: PUSH1 0xa0 00000166: SHL 00000167: SUB 00000168: AND 00000169: JUMPDEST 0000016a: PUSH1 0x40 0000016c: MLOAD 0000016d: PUSH1 0x01 0000016f: PUSH1 0x01 00000171: PUSH1 0xa0 00000173: SHL 00000174: SUB 00000175: SWAP1 00000176: SWAP2 00000177: AND 00000178: DUP2 00000179: MSTORE 0000017a: PUSH1 0x20 0000017c: ADD 0000017d: JUMPDEST 0000017e: PUSH1 0x40 00000180: MLOAD 00000181: DUP1 00000182: SWAP2 00000183: SUB 00000184: SWAP1 00000185: RETURN 00000186: JUMPDEST 00000187: PUSH2 0x015a 0000018a: PUSH2 0x0194 0000018d: CALLDATASIZE 0000018e: PUSH1 0x04 00000190: PUSH2 0x1ea5 00000193: JUMP 00000194: JUMPDEST 00000195: PUSH2 0x044f 00000198: JUMP 00000199: JUMPDEST 0000019a: PUSH1 0x02 0000019c: SLOAD 0000019d: PUSH1 0x01 0000019f: PUSH1 0x01 000001a1: PUSH1 0xa0 000001a3: SHL 000001a4: SUB 000001a5: AND 000001a6: PUSH2 0x0169 000001a9: JUMP 000001aa: JUMPDEST 000001ab: PUSH2 0x015a 000001ae: PUSH2 0x01b8 000001b1: CALLDATASIZE 000001b2: PUSH1 0x04 000001b4: PUSH2 0x1ea5 000001b7: JUMP 000001b8: JUMPDEST 000001b9: PUSH2 0x050b 000001bc: JUMP 000001bd: JUMPDEST 000001be: PUSH1 0x01 000001c0: SLOAD 000001c1: PUSH1 0x01 000001c3: PUSH1 0x01 000001c5: PUSH1 0xa0 000001c7: SHL 000001c8: SUB 000001c9: AND 000001ca: PUSH2 0x0169 000001cd: JUMP 000001ce: JUMPDEST 000001cf: PUSH2 0x015a 000001d2: PUSH2 0x05b3 000001d5: JUMP 000001d6: JUMPDEST 000001d7: PUSH2 0x015a 000001da: PUSH2 0x01e4 000001dd: CALLDATASIZE 000001de: PUSH1 0x04 000001e0: PUSH2 0x1ec0 000001e3: JUMP 000001e4: JUMPDEST 000001e5: PUSH2 0x05fc 000001e8: JUMP 000001e9: JUMPDEST 000001ea: PUSH1 0x00 000001ec: DUP1 000001ed: MLOAD 000001ee: PUSH1 0x20 000001f0: PUSH2 0x2286 000001f3: DUP4 000001f4: CODECOPY 000001f5: DUP2 000001f6: MLOAD 000001f7: SWAP2 000001f8: MSTORE 000001f9: SLOAD 000001fa: PUSH1 0xff 000001fc: AND 000001fd: PUSH1 0x40 000001ff: MLOAD 00000200: SWAP1 00000201: ISZERO 00000202: ISZERO 00000203: DUP2 00000204: MSTORE 00000205: PUSH1 0x20 00000207: ADD 00000208: PUSH2 0x017d 0000020b: JUMP 0000020c: JUMPDEST 0000020d: PUSH2 0x015a 00000210: PUSH2 0x021a 00000213: CALLDATASIZE 00000214: PUSH1 0x04 00000216: PUSH2 0x1eea 00000219: JUMP 0000021a: JUMPDEST 0000021b: PUSH2 0x0633 0000021e: JUMP 0000021f: JUMPDEST 00000220: PUSH2 0x015a 00000223: PUSH2 0x0955 00000226: JUMP 00000227: JUMPDEST 00000228: PUSH2 0x015a 0000022b: PUSH2 0x0967 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH32 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300 00000251: SLOAD 00000252: PUSH1 0x01 00000254: PUSH1 0x01 00000256: PUSH1 0xa0 00000258: SHL 00000259: SUB 0000025a: AND 0000025b: PUSH2 0x0169 0000025e: JUMP 0000025f: JUMPDEST 00000260: PUSH2 0x015a 00000263: PUSH2 0x026d 00000266: CALLDATASIZE 00000267: PUSH1 0x04 00000269: PUSH2 0x1ea5 0000026c: JUMP 0000026d: JUMPDEST 0000026e: PUSH2 0x09ae 00000271: JUMP 00000272: JUMPDEST 00000273: PUSH2 0x015a 00000276: PUSH2 0x0280 00000279: CALLDATASIZE 0000027a: PUSH1 0x04 0000027c: PUSH2 0x1ea5 0000027f: JUMP 00000280: JUMPDEST 00000281: PUSH2 0x0a71 00000284: JUMP 00000285: JUMPDEST 00000286: PUSH2 0x015a 00000289: PUSH2 0x0293 0000028c: CALLDATASIZE 0000028d: PUSH1 0x04 0000028f: PUSH2 0x1ea5 00000292: JUMP 00000293: JUMPDEST 00000294: PUSH2 0x0b5a 00000297: JUMP 00000298: JUMPDEST 00000299: PUSH2 0x015a 0000029c: PUSH2 0x02a6 0000029f: CALLDATASIZE 000002a0: PUSH1 0x04 000002a2: PUSH2 0x1f79 000002a5: JUMP 000002a6: JUMPDEST 000002a7: PUSH2 0x0c07 000002aa: JUMP 000002ab: JUMPDEST 000002ac: PUSH2 0x02b3 000002af: PUSH2 0x0dde 000002b2: JUMP 000002b3: JUMPDEST 000002b4: PUSH1 0x40 000002b6: MLOAD 000002b7: PUSH2 0x017d 000002ba: SWAP2 000002bb: SWAP1 000002bc: PUSH2 0x1fb9 000002bf: JUMP 000002c0: JUMPDEST 000002c1: PUSH2 0x015a 000002c4: PUSH2 0x02ce 000002c7: CALLDATASIZE 000002c8: PUSH1 0x04 000002ca: PUSH2 0x201d 000002cd: JUMP 000002ce: JUMPDEST 000002cf: PUSH2 0x0f4c 000002d2: JUMP 000002d3: JUMPDEST 000002d4: PUSH2 0x02e6 000002d7: PUSH2 0x02e1 000002da: CALLDATASIZE 000002db: PUSH1 0x04 000002dd: PUSH2 0x1ea5 000002e0: JUMP 000002e1: JUMPDEST 000002e2: PUSH2 0x0f7f 000002e5: JUMP 000002e6: JUMPDEST 000002e7: PUSH1 0x40 000002e9: MLOAD 000002ea: SWAP1 000002eb: DUP2 000002ec: MSTORE 000002ed: PUSH1 0x20 000002ef: ADD 000002f0: PUSH2 0x017d 000002f3: JUMP 000002f4: JUMPDEST 000002f5: PUSH2 0x015a 000002f8: PUSH2 0x0302 000002fb: CALLDATASIZE 000002fc: PUSH1 0x04 000002fe: PUSH2 0x1ea5 00000301: JUMP 00000302: JUMPDEST 00000303: PUSH2 0x1044 00000306: JUMP 00000307: JUMPDEST 00000308: PUSH2 0x015a 0000030b: PUSH2 0x0315 0000030e: CALLDATASIZE 0000030f: PUSH1 0x04 00000311: PUSH2 0x1ea5 00000314: JUMP 00000315: JUMPDEST 00000316: PUSH2 0x12c4 00000319: JUMP 0000031a: JUMPDEST 0000031b: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 0000033c: DUP1 0000033d: SLOAD 0000033e: PUSH1 0x01 00000340: PUSH1 0x40 00000342: SHL 00000343: DUP2 00000344: DIV 00000345: PUSH1 0xff 00000347: AND 00000348: ISZERO 00000349: SWAP1 0000034a: PUSH8 0xffffffffffffffff 00000353: AND 00000354: PUSH1 0x00 00000356: DUP2 00000357: ISZERO 00000358: DUP1 00000359: ISZERO 0000035a: PUSH2 0x0360 0000035d: JUMPI 0000035e: POP 0000035f: DUP3 00000360: JUMPDEST 00000361: SWAP1 00000362: POP 00000363: PUSH1 0x00 00000365: DUP3 00000366: PUSH8 0xffffffffffffffff 0000036f: AND 00000370: PUSH1 0x01 00000372: EQ 00000373: DUP1 00000374: ISZERO 00000375: PUSH2 0x037d 00000378: JUMPI 00000379: POP 0000037a: ADDRESS 0000037b: EXTCODESIZE 0000037c: ISZERO 0000037d: JUMPDEST 0000037e: SWAP1 0000037f: POP 00000380: DUP2 00000381: ISZERO 00000382: DUP1 00000383: ISZERO 00000384: PUSH2 0x038b 00000387: JUMPI 00000388: POP 00000389: DUP1 0000038a: ISZERO 0000038b: JUMPDEST 0000038c: ISZERO 0000038d: PUSH2 0x03a9 00000390: JUMPI 00000391: PUSH1 0x40 00000393: MLOAD 00000394: PUSH4 0xf92ee8a9 00000399: PUSH1 0xe0 0000039b: SHL 0000039c: DUP2 0000039d: MSTORE 0000039e: PUSH1 0x04 000003a0: ADD 000003a1: PUSH1 0x40 000003a3: MLOAD 000003a4: DUP1 000003a5: SWAP2 000003a6: SUB 000003a7: SWAP1 000003a8: REVERT 000003a9: JUMPDEST 000003aa: DUP5 000003ab: SLOAD 000003ac: PUSH8 0xffffffffffffffff 000003b5: NOT 000003b6: AND 000003b7: PUSH1 0x01 000003b9: OR 000003ba: DUP6 000003bb: SSTORE 000003bc: DUP4 000003bd: ISZERO 000003be: PUSH2 0x03d3 000003c1: JUMPI 000003c2: DUP5 000003c3: SLOAD 000003c4: PUSH1 0xff 000003c6: PUSH1 0x40 000003c8: SHL 000003c9: NOT 000003ca: AND 000003cb: PUSH1 0x01 000003cd: PUSH1 0x40 000003cf: SHL 000003d0: OR 000003d1: DUP6 000003d2: SSTORE 000003d3: JUMPDEST 000003d4: PUSH2 0x03db 000003d7: PUSH2 0x1302 000003da: JUMP 000003db: JUMPDEST 000003dc: PUSH2 0x03e3 000003df: PUSH2 0x1312 000003e2: JUMP 000003e3: JUMPDEST 000003e4: PUSH2 0x03ec 000003e7: CALLER 000003e8: PUSH2 0x1322 000003eb: JUMP 000003ec: JUMPDEST 000003ed: PUSH2 0x03fb 000003f0: DUP13 000003f1: DUP13 000003f2: DUP13 000003f3: DUP13 000003f4: DUP13 000003f5: DUP13 000003f6: DUP13 000003f7: PUSH2 0x1333 000003fa: JUMP 000003fb: JUMPDEST 000003fc: DUP4 000003fd: ISZERO 000003fe: PUSH2 0x0441 00000401: JUMPI 00000402: DUP5 00000403: SLOAD 00000404: PUSH1 0xff 00000406: PUSH1 0x40 00000408: SHL 00000409: NOT 0000040a: AND 0000040b: DUP6 0000040c: SSTORE 0000040d: PUSH1 0x40 0000040f: MLOAD 00000410: PUSH1 0x01 00000412: DUP2 00000413: MSTORE 00000414: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 00000435: SWAP1 00000436: PUSH1 0x20 00000438: ADD 00000439: PUSH1 0x40 0000043b: MLOAD 0000043c: DUP1 0000043d: SWAP2 0000043e: SUB 0000043f: SWAP1 00000440: LOG1 00000441: JUMPDEST 00000442: POP 00000443: POP 00000444: POP 00000445: POP 00000446: POP 00000447: POP 00000448: POP 00000449: POP 0000044a: POP 0000044b: POP 0000044c: POP 0000044d: POP 0000044e: JUMP 0000044f: JUMPDEST 00000450: PUSH1 0x00 00000452: SLOAD 00000453: PUSH1 0x01 00000455: PUSH1 0x01 00000457: PUSH1 0xa0 00000459: SHL 0000045a: SUB 0000045b: AND 0000045c: CALLER 0000045d: EQ 0000045e: DUP1 0000045f: PUSH2 0x0472 00000462: JUMPI 00000463: POP 00000464: PUSH1 0x02 00000466: SLOAD 00000467: PUSH1 0x01 00000469: PUSH1 0x01 0000046b: PUSH1 0xa0 0000046d: SHL 0000046e: SUB 0000046f: AND 00000470: CALLER 00000471: EQ 00000472: JUMPDEST 00000473: PUSH2 0x0497 00000476: JUMPI 00000477: PUSH1 0x40 00000479: MLOAD 0000047a: PUSH3 0x461bcd 0000047e: PUSH1 0xe5 00000480: SHL 00000481: DUP2 00000482: MSTORE 00000483: PUSH1 0x04 00000485: ADD 00000486: PUSH2 0x048e 00000489: SWAP1 0000048a: PUSH2 0x2059 0000048d: JUMP 0000048e: JUMPDEST 0000048f: PUSH1 0x40 00000491: MLOAD 00000492: DUP1 00000493: SWAP2 00000494: SUB 00000495: SWAP1 00000496: REVERT 00000497: JUMPDEST 00000498: PUSH2 0x04a0 0000049b: DUP2 0000049c: PUSH2 0x16b6 0000049f: JUMP 000004a0: JUMPDEST 000004a1: PUSH2 0x04bc 000004a4: JUMPI 000004a5: PUSH1 0x40 000004a7: MLOAD 000004a8: PUSH3 0x461bcd 000004ac: PUSH1 0xe5 000004ae: SHL 000004af: DUP2 000004b0: MSTORE 000004b1: PUSH1 0x04 000004b3: ADD 000004b4: PUSH2 0x048e 000004b7: SWAP1 000004b8: PUSH2 0x20a2 000004bb: JUMP 000004bc: JUMPDEST 000004bd: PUSH1 0x01 000004bf: PUSH1 0x01 000004c1: PUSH1 0xa0 000004c3: SHL 000004c4: SUB 000004c5: DUP2 000004c6: AND 000004c7: PUSH1 0x00 000004c9: SWAP1 000004ca: DUP2 000004cb: MSTORE 000004cc: PUSH1 0x04 000004ce: PUSH1 0x20 000004d0: MSTORE 000004d1: PUSH1 0x40 000004d3: SWAP1 000004d4: DUP2 000004d5: SWAP1 000004d6: KECCAK256 000004d7: PUSH1 0x01 000004d9: ADD 000004da: DUP1 000004db: SLOAD 000004dc: PUSH1 0xff 000004de: NOT 000004df: AND 000004e0: SWAP1 000004e1: SSTORE 000004e2: MLOAD 000004e3: PUSH1 0x00 000004e5: DUP1 000004e6: MLOAD 000004e7: PUSH1 0x20 000004e9: PUSH2 0x2266 000004ec: DUP4 000004ed: CODECOPY 000004ee: DUP2 000004ef: MLOAD 000004f0: SWAP2 000004f1: MSTORE 000004f2: SWAP1 000004f3: PUSH2 0x0500 000004f6: SWAP1 000004f7: DUP4 000004f8: SWAP1 000004f9: PUSH1 0x02 000004fb: SWAP1 000004fc: PUSH2 0x20e6 000004ff: JUMP 00000500: JUMPDEST 00000501: PUSH1 0x40 00000503: MLOAD 00000504: DUP1 00000505: SWAP2 00000506: SUB 00000507: SWAP1 00000508: LOG1 00000509: POP 0000050a: JUMP 0000050b: JUMPDEST 0000050c: PUSH1 0x00 0000050e: SLOAD 0000050f: PUSH1 0x01 00000511: PUSH1 0x01 00000513: PUSH1 0xa0 00000515: SHL 00000516: SUB 00000517: AND 00000518: CALLER 00000519: EQ 0000051a: DUP1 0000051b: PUSH2 0x052e 0000051e: JUMPI 0000051f: POP 00000520: PUSH1 0x02 00000522: SLOAD 00000523: PUSH1 0x01 00000525: PUSH1 0x01 00000527: PUSH1 0xa0 00000529: SHL 0000052a: SUB 0000052b: AND 0000052c: CALLER 0000052d: EQ 0000052e: JUMPDEST 0000052f: PUSH2 0x054a 00000532: JUMPI 00000533: PUSH1 0x40 00000535: MLOAD 00000536: PUSH3 0x461bcd 0000053a: PUSH1 0xe5 0000053c: SHL 0000053d: DUP2 0000053e: MSTORE 0000053f: PUSH1 0x04 00000541: ADD 00000542: PUSH2 0x048e 00000545: SWAP1 00000546: PUSH2 0x2059 00000549: JUMP 0000054a: JUMPDEST 0000054b: PUSH1 0x00 0000054d: SLOAD 0000054e: PUSH1 0x40 00000550: DUP1 00000551: MLOAD 00000552: PUSH1 0x01 00000554: PUSH1 0x01 00000556: PUSH1 0xa0 00000558: SHL 00000559: SUB 0000055a: SWAP3 0000055b: DUP4 0000055c: AND 0000055d: DUP2 0000055e: MSTORE 0000055f: SWAP2 00000560: DUP4 00000561: AND 00000562: PUSH1 0x20 00000564: DUP4 00000565: ADD 00000566: MSTORE 00000567: PUSH32 0x91c5e352a8a46928a880c2b1e32829f7577693def1a565042a475c588f237f53 00000588: SWAP2 00000589: ADD 0000058a: PUSH1 0x40 0000058c: MLOAD 0000058d: DUP1 0000058e: SWAP2 0000058f: SUB 00000590: SWAP1 00000591: LOG1 00000592: PUSH1 0x00 00000594: DUP1 00000595: SLOAD 00000596: PUSH1 0x01 00000598: PUSH1 0x01 0000059a: PUSH1 0xa0 0000059c: SHL 0000059d: SUB 0000059e: NOT 0000059f: AND 000005a0: PUSH1 0x01 000005a2: PUSH1 0x01 000005a4: PUSH1 0xa0 000005a6: SHL 000005a7: SUB 000005a8: SWAP3 000005a9: SWAP1 000005aa: SWAP3 000005ab: AND 000005ac: SWAP2 000005ad: SWAP1 000005ae: SWAP2 000005af: OR 000005b0: SWAP1 000005b1: SSTORE 000005b2: JUMP 000005b3: JUMPDEST 000005b4: PUSH1 0x00 000005b6: SLOAD 000005b7: PUSH1 0x01 000005b9: PUSH1 0x01 000005bb: PUSH1 0xa0 000005bd: SHL 000005be: SUB 000005bf: AND 000005c0: CALLER 000005c1: EQ 000005c2: DUP1 000005c3: PUSH2 0x05d6 000005c6: JUMPI 000005c7: POP 000005c8: PUSH1 0x02 000005ca: SLOAD 000005cb: PUSH1 0x01 000005cd: PUSH1 0x01 000005cf: PUSH1 0xa0 000005d1: SHL 000005d2: SUB 000005d3: AND 000005d4: CALLER 000005d5: EQ 000005d6: JUMPDEST 000005d7: PUSH2 0x05f2 000005da: JUMPI 000005db: PUSH1 0x40 000005dd: MLOAD 000005de: PUSH3 0x461bcd 000005e2: PUSH1 0xe5 000005e4: SHL 000005e5: DUP2 000005e6: MSTORE 000005e7: PUSH1 0x04 000005e9: ADD 000005ea: PUSH2 0x048e 000005ed: SWAP1 000005ee: PUSH2 0x2059 000005f1: JUMP 000005f2: JUMPDEST 000005f3: PUSH2 0x05fa 000005f6: PUSH2 0x1715 000005f9: JUMP 000005fa: JUMPDEST 000005fb: JUMP 000005fc: JUMPDEST 000005fd: PUSH2 0x0604 00000600: PUSH2 0x176f 00000603: JUMP 00000604: JUMPDEST 00000605: PUSH2 0x060c 00000608: PUSH2 0x17a7 0000060b: JUMP 0000060c: JUMPDEST 0000060d: PUSH2 0x0618 00000610: DUP3 00000611: DUP3 00000612: CALLER 00000613: CALLER 00000614: PUSH2 0x17d8 00000617: JUMP 00000618: JUMPDEST 00000619: PUSH2 0x062f 0000061c: PUSH1 0x01 0000061e: PUSH1 0x00 00000620: DUP1 00000621: MLOAD 00000622: PUSH1 0x20 00000624: PUSH2 0x22a6 00000627: DUP4 00000628: CODECOPY 00000629: DUP2 0000062a: MLOAD 0000062b: SWAP2 0000062c: MSTORE 0000062d: SSTORE 0000062e: JUMP 0000062f: JUMPDEST 00000630: POP 00000631: POP 00000632: JUMP 00000633: JUMPDEST 00000634: PUSH1 0x00 00000636: SLOAD 00000637: PUSH1 0x01 00000639: PUSH1 0x01 0000063b: PUSH1 0xa0 0000063d: SHL 0000063e: SUB 0000063f: AND 00000640: CALLER 00000641: EQ 00000642: DUP1 00000643: PUSH2 0x0656 00000646: JUMPI 00000647: POP 00000648: PUSH1 0x02 0000064a: SLOAD 0000064b: PUSH1 0x01 0000064d: PUSH1 0x01 0000064f: PUSH1 0xa0 00000651: SHL 00000652: SUB 00000653: AND 00000654: CALLER 00000655: EQ 00000656: JUMPDEST 00000657: PUSH2 0x0672 0000065a: JUMPI 0000065b: PUSH1 0x40 0000065d: MLOAD 0000065e: PUSH3 0x461bcd 00000662: PUSH1 0xe5 00000664: SHL 00000665: DUP2 00000666: MSTORE 00000667: PUSH1 0x04 00000669: ADD 0000066a: PUSH2 0x048e 0000066d: SWAP1 0000066e: PUSH2 0x2059 00000671: JUMP 00000672: JUMPDEST 00000673: PUSH2 0x067a 00000676: PUSH2 0x17a7 00000679: JUMP 0000067a: JUMPDEST 0000067b: PUSH1 0x01 0000067d: SLOAD 0000067e: PUSH1 0x01 00000680: PUSH1 0x01 00000682: PUSH1 0xa0 00000684: SHL 00000685: SUB 00000686: DUP3 00000687: DUP2 00000688: AND 00000689: SWAP2 0000068a: AND 0000068b: EQ 0000068c: PUSH2 0x06e9 0000068f: JUMPI 00000690: PUSH1 0x40 00000692: MLOAD 00000693: PUSH3 0x461bcd 00000697: PUSH1 0xe5 00000699: SHL 0000069a: DUP2 0000069b: MSTORE 0000069c: PUSH1 0x20 0000069e: PUSH1 0x04 000006a0: DUP3 000006a1: ADD 000006a2: MSTORE 000006a3: PUSH1 0x29 000006a5: PUSH1 0x24 000006a7: DUP3 000006a8: ADD 000006a9: MSTORE 000006aa: PUSH32 0x4d7270634465706f7369743a2063616e6e6f7420636c61696d206f6e20746869 000006cb: PUSH1 0x44 000006cd: DUP3 000006ce: ADD 000006cf: MSTORE 000006d0: PUSH9 0x732061646472657373 000006da: PUSH1 0xb8 000006dc: SHL 000006dd: PUSH1 0x64 000006df: DUP3 000006e0: ADD 000006e1: MSTORE 000006e2: PUSH1 0x84 000006e4: ADD 000006e5: PUSH2 0x048e 000006e8: JUMP 000006e9: JUMPDEST 000006ea: DUP4 000006eb: DUP3 000006ec: EQ 000006ed: PUSH2 0x0753 000006f0: JUMPI 000006f1: PUSH1 0x40 000006f3: MLOAD 000006f4: PUSH3 0x461bcd 000006f8: PUSH1 0xe5 000006fa: SHL 000006fb: DUP2 000006fc: MSTORE 000006fd: PUSH1 0x20 000006ff: PUSH1 0x04 00000701: DUP3 00000702: ADD 00000703: MSTORE 00000704: PUSH1 0x32 00000706: PUSH1 0x24 00000708: DUP3 00000709: ADD 0000070a: MSTORE 0000070b: PUSH32 0x4d7270634465706f7369743a206d616c666f726d656420646174612c20617272 0000072c: PUSH1 0x44 0000072e: DUP3 0000072f: ADD 00000730: MSTORE 00000731: PUSH18 0x0c2f2e640c8decae640dcdee840dac2e8c6d 00000744: PUSH1 0x73 00000746: SHL 00000747: PUSH1 0x64 00000749: DUP3 0000074a: ADD 0000074b: MSTORE 0000074c: PUSH1 0x84 0000074e: ADD 0000074f: PUSH2 0x048e 00000752: JUMP 00000753: JUMPDEST 00000754: PUSH1 0x00 00000756: JUMPDEST 00000757: DUP5 00000758: DUP2 00000759: LT 0000075a: ISZERO 0000075b: PUSH2 0x07b1 0000075e: JUMPI 0000075f: PUSH2 0x078d 00000762: DUP7 00000763: DUP7 00000764: DUP4 00000765: DUP2 00000766: DUP2 00000767: LT 00000768: PUSH2 0x0773 0000076b: JUMPI 0000076c: PUSH2 0x0773 0000076f: PUSH2 0x2121 00000772: JUMP 00000773: JUMPDEST 00000774: SWAP1 00000775: POP 00000776: PUSH1 0x20 00000778: MUL 00000779: ADD 0000077a: PUSH1 0x20 0000077c: DUP2 0000077d: ADD 0000077e: SWAP1 0000077f: PUSH2 0x0788 00000782: SWAP2 00000783: SWAP1 00000784: PUSH2 0x1ea5 00000787: JUMP 00000788: JUMPDEST 00000789: PUSH2 0x1918 0000078c: JUMP 0000078d: JUMPDEST 0000078e: PUSH2 0x07a9 00000791: JUMPI 00000792: PUSH1 0x40 00000794: MLOAD 00000795: PUSH3 0x461bcd 00000799: PUSH1 0xe5 0000079b: SHL 0000079c: DUP2 0000079d: MSTORE 0000079e: PUSH1 0x04 000007a0: ADD 000007a1: PUSH2 0x048e 000007a4: SWAP1 000007a5: PUSH2 0x20a2 000007a8: JUMP 000007a9: JUMPDEST 000007aa: PUSH1 0x01 000007ac: ADD 000007ad: PUSH2 0x0756 000007b0: JUMP 000007b1: JUMPDEST 000007b2: POP 000007b3: PUSH1 0x00 000007b5: JUMPDEST 000007b6: DUP5 000007b7: DUP2 000007b8: LT 000007b9: ISZERO 000007ba: PUSH2 0x0906 000007bd: JUMPI 000007be: DUP4 000007bf: DUP4 000007c0: DUP3 000007c1: DUP2 000007c2: DUP2 000007c3: LT 000007c4: PUSH2 0x07cf 000007c7: JUMPI 000007c8: PUSH2 0x07cf 000007cb: PUSH2 0x2121 000007ce: JUMP 000007cf: JUMPDEST 000007d0: SWAP1 000007d1: POP 000007d2: PUSH1 0x20 000007d4: MUL 000007d5: ADD 000007d6: CALLDATALOAD 000007d7: DUP7 000007d8: DUP7 000007d9: DUP4 000007da: DUP2 000007db: DUP2 000007dc: LT 000007dd: PUSH2 0x07e8 000007e0: JUMPI 000007e1: PUSH2 0x07e8 000007e4: PUSH2 0x2121 000007e7: JUMP 000007e8: JUMPDEST 000007e9: SWAP1 000007ea: POP 000007eb: PUSH1 0x20 000007ed: MUL 000007ee: ADD 000007ef: PUSH1 0x20 000007f1: DUP2 000007f2: ADD 000007f3: SWAP1 000007f4: PUSH2 0x07fd 000007f7: SWAP2 000007f8: SWAP1 000007f9: PUSH2 0x1ea5 000007fc: JUMP 000007fd: JUMPDEST 000007fe: PUSH1 0x40 00000800: MLOAD 00000801: PUSH4 0x70a08231 00000806: PUSH1 0xe0 00000808: SHL 00000809: DUP2 0000080a: MSTORE 0000080b: ADDRESS 0000080c: PUSH1 0x04 0000080e: DUP3 0000080f: ADD 00000810: MSTORE 00000811: PUSH1 0x01 00000813: PUSH1 0x01 00000815: PUSH1 0xa0 00000817: SHL 00000818: SUB 00000819: SWAP2 0000081a: SWAP1 0000081b: SWAP2 0000081c: AND 0000081d: SWAP1 0000081e: PUSH4 0x70a08231 00000823: SWAP1 00000824: PUSH1 0x24 00000826: ADD 00000827: PUSH1 0x20 00000829: PUSH1 0x40 0000082b: MLOAD 0000082c: DUP1 0000082d: DUP4 0000082e: SUB 0000082f: DUP2 00000830: DUP7 00000831: GAS 00000832: STATICCALL 00000833: ISZERO 00000834: DUP1 00000835: ISZERO 00000836: PUSH2 0x0843 00000839: JUMPI 0000083a: RETURNDATASIZE 0000083b: PUSH1 0x00 0000083d: DUP1 0000083e: RETURNDATACOPY 0000083f: RETURNDATASIZE 00000840: PUSH1 0x00 00000842: REVERT 00000843: JUMPDEST 00000844: POP 00000845: POP 00000846: POP 00000847: POP 00000848: PUSH1 0x40 0000084a: MLOAD 0000084b: RETURNDATASIZE 0000084c: PUSH1 0x1f 0000084e: NOT 0000084f: PUSH1 0x1f 00000851: DUP3 00000852: ADD 00000853: AND 00000854: DUP3 00000855: ADD 00000856: DUP1 00000857: PUSH1 0x40 00000859: MSTORE 0000085a: POP 0000085b: DUP2 0000085c: ADD 0000085d: SWAP1 0000085e: PUSH2 0x0867 00000861: SWAP2 00000862: SWAP1 00000863: PUSH2 0x2137 00000866: JUMP 00000867: JUMPDEST 00000868: LT 00000869: ISZERO 0000086a: PUSH2 0x08b5 0000086d: JUMPI 0000086e: PUSH1 0x40 00000870: MLOAD 00000871: PUSH3 0x461bcd 00000875: PUSH1 0xe5 00000877: SHL 00000878: DUP2 00000879: MSTORE 0000087a: PUSH1 0x20 0000087c: PUSH1 0x04 0000087e: DUP3 0000087f: ADD 00000880: MSTORE 00000881: PUSH1 0x19 00000883: PUSH1 0x24 00000885: DUP3 00000886: ADD 00000887: MSTORE 00000888: PUSH32 0x4d7270634465706f7369743a2077726f6e6720616d6f756e7400000000000000 000008a9: PUSH1 0x44 000008ab: DUP3 000008ac: ADD 000008ad: MSTORE 000008ae: PUSH1 0x64 000008b0: ADD 000008b1: PUSH2 0x048e 000008b4: JUMP 000008b5: JUMPDEST 000008b6: PUSH2 0x08fe 000008b9: DUP7 000008ba: DUP7 000008bb: DUP4 000008bc: DUP2 000008bd: DUP2 000008be: LT 000008bf: PUSH2 0x08ca 000008c2: JUMPI 000008c3: PUSH2 0x08ca 000008c6: PUSH2 0x2121 000008c9: JUMP 000008ca: JUMPDEST 000008cb: SWAP1 000008cc: POP 000008cd: PUSH1 0x20 000008cf: MUL 000008d0: ADD 000008d1: PUSH1 0x20 000008d3: DUP2 000008d4: ADD 000008d5: SWAP1 000008d6: PUSH2 0x08df 000008d9: SWAP2 000008da: SWAP1 000008db: PUSH2 0x1ea5 000008de: JUMP 000008df: JUMPDEST 000008e0: DUP4 000008e1: DUP7 000008e2: DUP7 000008e3: DUP6 000008e4: DUP2 000008e5: DUP2 000008e6: LT 000008e7: PUSH2 0x08f2 000008ea: JUMPI 000008eb: PUSH2 0x08f2 000008ee: PUSH2 0x2121 000008f1: JUMP 000008f2: JUMPDEST 000008f3: SWAP1 000008f4: POP 000008f5: PUSH1 0x20 000008f7: MUL 000008f8: ADD 000008f9: CALLDATALOAD 000008fa: PUSH2 0x195b 000008fd: JUMP 000008fe: JUMPDEST 000008ff: PUSH1 0x01 00000901: ADD 00000902: PUSH2 0x07b5 00000905: JUMP 00000906: JUMPDEST 00000907: POP 00000908: DUP1 00000909: PUSH1 0x01 0000090b: PUSH1 0x01 0000090d: PUSH1 0xa0 0000090f: SHL 00000910: SUB 00000911: AND 00000912: PUSH32 0xbe524971d348b8b7715db769df0ba20b5e69acc429b30c959245ed5c74151732 00000933: DUP7 00000934: DUP7 00000935: DUP7 00000936: DUP7 00000937: PUSH1 0x40 00000939: MLOAD 0000093a: PUSH2 0x0946 0000093d: SWAP5 0000093e: SWAP4 0000093f: SWAP3 00000940: SWAP2 00000941: SWAP1 00000942: PUSH2 0x2150 00000945: JUMP 00000946: JUMPDEST 00000947: PUSH1 0x40 00000949: MLOAD 0000094a: DUP1 0000094b: SWAP2 0000094c: SUB 0000094d: SWAP1 0000094e: LOG2 0000094f: POP 00000950: POP 00000951: POP 00000952: POP 00000953: POP 00000954: JUMP 00000955: JUMPDEST 00000956: PUSH2 0x095d 00000959: PUSH2 0x19ba 0000095c: JUMP 0000095d: JUMPDEST 0000095e: PUSH2 0x05fa 00000961: PUSH1 0x00 00000963: PUSH2 0x1a15 00000966: JUMP 00000967: JUMPDEST 00000968: PUSH1 0x00 0000096a: SLOAD 0000096b: PUSH1 0x01 0000096d: PUSH1 0x01 0000096f: PUSH1 0xa0 00000971: SHL 00000972: SUB 00000973: AND 00000974: CALLER 00000975: EQ 00000976: DUP1 00000977: PUSH2 0x098a 0000097a: JUMPI 0000097b: POP 0000097c: PUSH1 0x02 0000097e: SLOAD 0000097f: PUSH1 0x01 00000981: PUSH1 0x01 00000983: PUSH1 0xa0 00000985: SHL 00000986: SUB 00000987: AND 00000988: CALLER 00000989: EQ 0000098a: JUMPDEST 0000098b: PUSH2 0x09a6 0000098e: JUMPI 0000098f: PUSH1 0x40 00000991: MLOAD 00000992: PUSH3 0x461bcd 00000996: PUSH1 0xe5 00000998: SHL 00000999: DUP2 0000099a: MSTORE 0000099b: PUSH1 0x04 0000099d: ADD 0000099e: PUSH2 0x048e 000009a1: SWAP1 000009a2: PUSH2 0x2059 000009a5: JUMP 000009a6: JUMPDEST 000009a7: PUSH2 0x05fa 000009aa: PUSH2 0x1a86 000009ad: JUMP 000009ae: JUMPDEST 000009af: PUSH1 0x02 000009b1: SLOAD 000009b2: PUSH1 0x01 000009b4: PUSH1 0x01 000009b6: PUSH1 0xa0 000009b8: SHL 000009b9: SUB 000009ba: AND 000009bb: CALLER 000009bc: EQ 000009bd: PUSH2 0x0a08 000009c0: JUMPI 000009c1: PUSH1 0x40 000009c3: MLOAD 000009c4: PUSH3 0x461bcd 000009c8: PUSH1 0xe5 000009ca: SHL 000009cb: DUP2 000009cc: MSTORE 000009cd: PUSH1 0x20 000009cf: PUSH1 0x04 000009d1: DUP3 000009d2: ADD 000009d3: MSTORE 000009d4: PUSH1 0x1c 000009d6: PUSH1 0x24 000009d8: DUP3 000009d9: ADD 000009da: MSTORE 000009db: PUSH32 0x4d7270634465706f7369743a206f6e6c7920676f7665726e616e636500000000 000009fc: PUSH1 0x44 000009fe: DUP3 000009ff: ADD 00000a00: MSTORE 00000a01: PUSH1 0x64 00000a03: ADD 00000a04: PUSH2 0x048e 00000a07: JUMP 00000a08: JUMPDEST 00000a09: PUSH1 0x02 00000a0b: SLOAD 00000a0c: PUSH1 0x40 00000a0e: DUP1 00000a0f: MLOAD 00000a10: PUSH1 0x01 00000a12: PUSH1 0x01 00000a14: PUSH1 0xa0 00000a16: SHL 00000a17: SUB 00000a18: SWAP3 00000a19: DUP4 00000a1a: AND 00000a1b: DUP2 00000a1c: MSTORE 00000a1d: SWAP2 00000a1e: DUP4 00000a1f: AND 00000a20: PUSH1 0x20 00000a22: DUP4 00000a23: ADD 00000a24: MSTORE 00000a25: PUSH32 0x434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d 00000a46: SWAP2 00000a47: ADD 00000a48: PUSH1 0x40 00000a4a: MLOAD 00000a4b: DUP1 00000a4c: SWAP2 00000a4d: SUB 00000a4e: SWAP1 00000a4f: LOG1 00000a50: PUSH1 0x02 00000a52: DUP1 00000a53: SLOAD 00000a54: PUSH1 0x01 00000a56: PUSH1 0x01 00000a58: PUSH1 0xa0 00000a5a: SHL 00000a5b: SUB 00000a5c: NOT 00000a5d: AND 00000a5e: PUSH1 0x01 00000a60: PUSH1 0x01 00000a62: PUSH1 0xa0 00000a64: SHL 00000a65: SUB 00000a66: SWAP3 00000a67: SWAP1 00000a68: SWAP3 00000a69: AND 00000a6a: SWAP2 00000a6b: SWAP1 00000a6c: SWAP2 00000a6d: OR 00000a6e: SWAP1 00000a6f: SSTORE 00000a70: JUMP 00000a71: JUMPDEST 00000a72: PUSH1 0x01 00000a74: SLOAD 00000a75: PUSH1 0x01 00000a77: PUSH1 0x01 00000a79: PUSH1 0xa0 00000a7b: SHL 00000a7c: SUB 00000a7d: AND 00000a7e: CALLER 00000a7f: EQ 00000a80: DUP1 00000a81: PUSH2 0x0a94 00000a84: JUMPI 00000a85: POP 00000a86: PUSH1 0x02 00000a88: SLOAD 00000a89: PUSH1 0x01 00000a8b: PUSH1 0x01 00000a8d: PUSH1 0xa0 00000a8f: SHL 00000a90: SUB 00000a91: AND 00000a92: CALLER 00000a93: EQ 00000a94: JUMPDEST 00000a95: PUSH2 0x0af1 00000a98: JUMPI 00000a99: PUSH1 0x40 00000a9b: MLOAD 00000a9c: PUSH3 0x461bcd 00000aa0: PUSH1 0xe5 00000aa2: SHL 00000aa3: DUP2 00000aa4: MSTORE 00000aa5: PUSH1 0x20 00000aa7: PUSH1 0x04 00000aa9: DUP3 00000aaa: ADD 00000aab: MSTORE 00000aac: PUSH1 0x28 00000aae: PUSH1 0x24 00000ab0: DUP3 00000ab1: ADD 00000ab2: MSTORE 00000ab3: PUSH32 0x4d7270634465706f7369743a206f6e6c79207472656173757279206f7220676f 00000ad4: PUSH1 0x44 00000ad6: DUP3 00000ad7: ADD 00000ad8: MSTORE 00000ad9: PUSH8 0x7665726e616e6365 00000ae2: PUSH1 0xc0 00000ae4: SHL 00000ae5: PUSH1 0x64 00000ae7: DUP3 00000ae8: ADD 00000ae9: MSTORE 00000aea: PUSH1 0x84 00000aec: ADD 00000aed: PUSH2 0x048e 00000af0: JUMP 00000af1: JUMPDEST 00000af2: PUSH1 0x01 00000af4: SLOAD 00000af5: PUSH1 0x40 00000af7: DUP1 00000af8: MLOAD 00000af9: PUSH1 0x01 00000afb: PUSH1 0x01 00000afd: PUSH1 0xa0 00000aff: SHL 00000b00: SUB 00000b01: SWAP3 00000b02: DUP4 00000b03: AND 00000b04: DUP2 00000b05: MSTORE 00000b06: SWAP2 00000b07: DUP4 00000b08: AND 00000b09: PUSH1 0x20 00000b0b: DUP4 00000b0c: ADD 00000b0d: MSTORE 00000b0e: PUSH32 0x4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a 00000b2f: SWAP2 00000b30: ADD 00000b31: PUSH1 0x40 00000b33: MLOAD 00000b34: DUP1 00000b35: SWAP2 00000b36: SUB 00000b37: SWAP1 00000b38: LOG1 00000b39: PUSH1 0x01 00000b3b: DUP1 00000b3c: SLOAD 00000b3d: PUSH1 0x01 00000b3f: PUSH1 0x01 00000b41: PUSH1 0xa0 00000b43: SHL 00000b44: SUB 00000b45: NOT 00000b46: AND 00000b47: PUSH1 0x01 00000b49: PUSH1 0x01 00000b4b: PUSH1 0xa0 00000b4d: SHL 00000b4e: SUB 00000b4f: SWAP3 00000b50: SWAP1 00000b51: SWAP3 00000b52: AND 00000b53: SWAP2 00000b54: SWAP1 00000b55: SWAP2 00000b56: OR 00000b57: SWAP1 00000b58: SSTORE 00000b59: JUMP 00000b5a: JUMPDEST 00000b5b: PUSH1 0x00 00000b5d: SLOAD 00000b5e: PUSH1 0x01 00000b60: PUSH1 0x01 00000b62: PUSH1 0xa0 00000b64: SHL 00000b65: SUB 00000b66: AND 00000b67: CALLER 00000b68: EQ 00000b69: DUP1 00000b6a: PUSH2 0x0b7d 00000b6d: JUMPI 00000b6e: POP 00000b6f: PUSH1 0x02 00000b71: SLOAD 00000b72: PUSH1 0x01 00000b74: PUSH1 0x01 00000b76: PUSH1 0xa0 00000b78: SHL 00000b79: SUB 00000b7a: AND 00000b7b: CALLER 00000b7c: EQ 00000b7d: JUMPDEST 00000b7e: PUSH2 0x0b99 00000b81: JUMPI 00000b82: PUSH1 0x40 00000b84: MLOAD 00000b85: PUSH3 0x461bcd 00000b89: PUSH1 0xe5 00000b8b: SHL 00000b8c: DUP2 00000b8d: MSTORE 00000b8e: PUSH1 0x04 00000b90: ADD 00000b91: PUSH2 0x048e 00000b94: SWAP1 00000b95: PUSH2 0x2059 00000b98: JUMP 00000b99: JUMPDEST 00000b9a: PUSH2 0x0ba2 00000b9d: DUP2 00000b9e: PUSH2 0x16b6 00000ba1: JUMP 00000ba2: JUMPDEST 00000ba3: PUSH2 0x0bbe 00000ba6: JUMPI 00000ba7: PUSH1 0x40 00000ba9: MLOAD 00000baa: PUSH3 0x461bcd 00000bae: PUSH1 0xe5 00000bb0: SHL 00000bb1: DUP2 00000bb2: MSTORE 00000bb3: PUSH1 0x04 00000bb5: ADD 00000bb6: PUSH2 0x048e 00000bb9: SWAP1 00000bba: PUSH2 0x20a2 00000bbd: JUMP 00000bbe: JUMPDEST 00000bbf: PUSH1 0x01 00000bc1: PUSH1 0x01 00000bc3: PUSH1 0xa0 00000bc5: SHL 00000bc6: SUB 00000bc7: DUP2 00000bc8: AND 00000bc9: PUSH1 0x00 00000bcb: SWAP1 00000bcc: DUP2 00000bcd: MSTORE 00000bce: PUSH1 0x04 00000bd0: PUSH1 0x20 00000bd2: MSTORE 00000bd3: PUSH1 0x40 00000bd5: SWAP1 00000bd6: DUP2 00000bd7: SWAP1 00000bd8: KECCAK256 00000bd9: PUSH1 0x01 00000bdb: SWAP1 00000bdc: DUP2 00000bdd: ADD 00000bde: DUP1 00000bdf: SLOAD 00000be0: PUSH1 0xff 00000be2: NOT 00000be3: AND 00000be4: SWAP1 00000be5: SWAP2 00000be6: OR 00000be7: SWAP1 00000be8: SSTORE 00000be9: MLOAD 00000bea: PUSH1 0x00 00000bec: DUP1 00000bed: MLOAD 00000bee: PUSH1 0x20 00000bf0: PUSH2 0x2266 00000bf3: DUP4 00000bf4: CODECOPY 00000bf5: DUP2 00000bf6: MLOAD 00000bf7: SWAP2 00000bf8: MSTORE 00000bf9: SWAP1 00000bfa: PUSH2 0x0500 00000bfd: SWAP1 00000bfe: DUP4 00000bff: SWAP1 00000c00: PUSH1 0x03 00000c02: SWAP1 00000c03: PUSH2 0x20e6 00000c06: JUMP 00000c07: JUMPDEST 00000c08: PUSH1 0x00 00000c0a: SLOAD 00000c0b: PUSH1 0x01 00000c0d: PUSH1 0x01 00000c0f: PUSH1 0xa0 00000c11: SHL 00000c12: SUB 00000c13: AND 00000c14: CALLER 00000c15: EQ 00000c16: DUP1 00000c17: PUSH2 0x0c2a 00000c1a: JUMPI 00000c1b: POP 00000c1c: PUSH1 0x02 00000c1e: SLOAD 00000c1f: PUSH1 0x01 00000c21: PUSH1 0x01 00000c23: PUSH1 0xa0 00000c25: SHL 00000c26: SUB 00000c27: AND 00000c28: CALLER 00000c29: EQ 00000c2a: JUMPDEST 00000c2b: PUSH2 0x0c46 00000c2e: JUMPI 00000c2f: PUSH1 0x40 00000c31: MLOAD 00000c32: PUSH3 0x461bcd 00000c36: PUSH1 0xe5 00000c38: SHL 00000c39: DUP2 00000c3a: MSTORE 00000c3b: PUSH1 0x04 00000c3d: ADD 00000c3e: PUSH2 0x048e 00000c41: SWAP1 00000c42: PUSH2 0x2059 00000c45: JUMP 00000c46: JUMPDEST 00000c47: PUSH1 0x01 00000c49: PUSH1 0x01 00000c4b: PUSH1 0xa0 00000c4d: SHL 00000c4e: SUB 00000c4f: DUP4 00000c50: AND 00000c51: PUSH2 0x0c9c 00000c54: JUMPI 00000c55: PUSH1 0x40 00000c57: MLOAD 00000c58: PUSH3 0x461bcd 00000c5c: PUSH1 0xe5 00000c5e: SHL 00000c5f: DUP2 00000c60: MSTORE 00000c61: PUSH1 0x20 00000c63: PUSH1 0x04 00000c65: DUP3 00000c66: ADD 00000c67: DUP2 00000c68: SWAP1 00000c69: MSTORE 00000c6a: PUSH1 0x24 00000c6c: DUP3 00000c6d: ADD 00000c6e: MSTORE 00000c6f: PUSH32 0x4d7270634465706f7369743a2077726f6e6720746f6b656e2061646472657373 00000c90: PUSH1 0x44 00000c92: DUP3 00000c93: ADD 00000c94: MSTORE 00000c95: PUSH1 0x64 00000c97: ADD 00000c98: PUSH2 0x048e 00000c9b: JUMP 00000c9c: JUMPDEST 00000c9d: PUSH1 0x00 00000c9f: DUP3 00000ca0: GT 00000ca1: PUSH2 0x0cec 00000ca4: JUMPI 00000ca5: PUSH1 0x40 00000ca7: MLOAD 00000ca8: PUSH3 0x461bcd 00000cac: PUSH1 0xe5 00000cae: SHL 00000caf: DUP2 00000cb0: MSTORE 00000cb1: PUSH1 0x20 00000cb3: PUSH1 0x04 00000cb5: DUP3 00000cb6: ADD 00000cb7: MSTORE 00000cb8: PUSH1 0x1d 00000cba: PUSH1 0x24 00000cbc: DUP3 00000cbd: ADD 00000cbe: MSTORE 00000cbf: PUSH32 0x4d7270634465706f7369743a2077726f6e67206d696e20616d6f756e74000000 00000ce0: PUSH1 0x44 00000ce2: DUP3 00000ce3: ADD 00000ce4: MSTORE 00000ce5: PUSH1 0x64 00000ce7: ADD 00000ce8: PUSH2 0x048e 00000ceb: JUMP 00000cec: JUMPDEST 00000ced: PUSH1 0x40 00000cef: DUP1 00000cf0: MLOAD 00000cf1: DUP1 00000cf2: DUP3 00000cf3: ADD 00000cf4: DUP3 00000cf5: MSTORE 00000cf6: DUP4 00000cf7: DUP2 00000cf8: MSTORE 00000cf9: DUP3 00000cfa: ISZERO 00000cfb: ISZERO 00000cfc: PUSH1 0x20 00000cfe: DUP1 00000cff: DUP4 00000d00: ADD 00000d01: SWAP2 00000d02: DUP3 00000d03: MSTORE 00000d04: PUSH1 0x01 00000d06: PUSH1 0x01 00000d08: PUSH1 0xa0 00000d0a: SHL 00000d0b: SUB 00000d0c: DUP8 00000d0d: AND 00000d0e: PUSH1 0x00 00000d10: SWAP1 00000d11: DUP2 00000d12: MSTORE 00000d13: PUSH1 0x04 00000d15: SWAP1 00000d16: SWAP2 00000d17: MSTORE 00000d18: SWAP3 00000d19: SWAP1 00000d1a: SWAP3 00000d1b: KECCAK256 00000d1c: SWAP1 00000d1d: MLOAD 00000d1e: DUP2 00000d1f: SSTORE 00000d20: SWAP1 00000d21: MLOAD 00000d22: PUSH1 0x01 00000d24: SWAP1 00000d25: SWAP2 00000d26: ADD 00000d27: DUP1 00000d28: SLOAD 00000d29: PUSH1 0xff 00000d2b: NOT 00000d2c: AND 00000d2d: SWAP2 00000d2e: ISZERO 00000d2f: ISZERO 00000d30: SWAP2 00000d31: SWAP1 00000d32: SWAP2 00000d33: OR 00000d34: SWAP1 00000d35: SSTORE 00000d36: PUSH2 0x0d3e 00000d39: DUP4 00000d3a: PUSH2 0x16b6 00000d3d: JUMP 00000d3e: JUMPDEST 00000d3f: ISZERO 00000d40: PUSH2 0x0d70 00000d43: JUMPI 00000d44: PUSH1 0x00 00000d46: DUP1 00000d47: MLOAD 00000d48: PUSH1 0x20 00000d4a: PUSH2 0x2266 00000d4d: DUP4 00000d4e: CODECOPY 00000d4f: DUP2 00000d50: MLOAD 00000d51: SWAP2 00000d52: MSTORE 00000d53: DUP4 00000d54: PUSH1 0x01 00000d56: PUSH1 0x40 00000d58: MLOAD 00000d59: PUSH2 0x0d63 00000d5c: SWAP3 00000d5d: SWAP2 00000d5e: SWAP1 00000d5f: PUSH2 0x20e6 00000d62: JUMP 00000d63: JUMPDEST 00000d64: PUSH1 0x40 00000d66: MLOAD 00000d67: DUP1 00000d68: SWAP2 00000d69: SUB 00000d6a: SWAP1 00000d6b: LOG1 00000d6c: POP 00000d6d: POP 00000d6e: POP 00000d6f: JUMP 00000d70: JUMPDEST 00000d71: PUSH1 0x03 00000d73: DUP1 00000d74: SLOAD 00000d75: PUSH1 0x01 00000d77: DUP2 00000d78: ADD 00000d79: DUP3 00000d7a: SSTORE 00000d7b: PUSH1 0x00 00000d7d: SWAP2 00000d7e: DUP3 00000d7f: MSTORE 00000d80: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b 00000da1: ADD 00000da2: DUP1 00000da3: SLOAD 00000da4: PUSH1 0x01 00000da6: PUSH1 0x01 00000da8: PUSH1 0xa0 00000daa: SHL 00000dab: SUB 00000dac: NOT 00000dad: AND 00000dae: PUSH1 0x01 00000db0: PUSH1 0x01 00000db2: PUSH1 0xa0 00000db4: SHL 00000db5: SUB 00000db6: DUP7 00000db7: AND 00000db8: OR 00000db9: SWAP1 00000dba: SSTORE 00000dbb: PUSH1 0x40 00000dbd: MLOAD 00000dbe: PUSH1 0x00 00000dc0: DUP1 00000dc1: MLOAD 00000dc2: PUSH1 0x20 00000dc4: PUSH2 0x2266 00000dc7: DUP4 00000dc8: CODECOPY 00000dc9: DUP2 00000dca: MLOAD 00000dcb: SWAP2 00000dcc: MSTORE 00000dcd: SWAP2 00000dce: PUSH2 0x0d63 00000dd1: SWAP2 00000dd2: DUP7 00000dd3: SWAP2 00000dd4: SWAP1 00000dd5: PUSH2 0x20e6 00000dd8: JUMP 00000dd9: JUMPDEST 00000dda: POP 00000ddb: POP 00000ddc: POP 00000ddd: JUMP 00000dde: JUMPDEST 00000ddf: PUSH1 0x03 00000de1: SLOAD 00000de2: PUSH1 0x60 00000de4: SWAP1 00000de5: PUSH1 0x00 00000de7: SWAP1 00000de8: PUSH8 0xffffffffffffffff 00000df1: DUP2 00000df2: GT 00000df3: ISZERO 00000df4: PUSH2 0x0dff 00000df7: JUMPI 00000df8: PUSH2 0x0dff 00000dfb: PUSH2 0x21cc 00000dfe: JUMP 00000dff: JUMPDEST 00000e00: PUSH1 0x40 00000e02: MLOAD 00000e03: SWAP1 00000e04: DUP1 00000e05: DUP3 00000e06: MSTORE 00000e07: DUP1 00000e08: PUSH1 0x20 00000e0a: MUL 00000e0b: PUSH1 0x20 00000e0d: ADD 00000e0e: DUP3 00000e0f: ADD 00000e10: PUSH1 0x40 00000e12: MSTORE 00000e13: DUP1 00000e14: ISZERO 00000e15: PUSH2 0x0e4a 00000e18: JUMPI 00000e19: DUP2 00000e1a: PUSH1 0x20 00000e1c: ADD 00000e1d: JUMPDEST 00000e1e: PUSH1 0x40 00000e20: DUP1 00000e21: MLOAD 00000e22: PUSH1 0x60 00000e24: DUP2 00000e25: ADD 00000e26: DUP3 00000e27: MSTORE 00000e28: PUSH1 0x00 00000e2a: DUP1 00000e2b: DUP3 00000e2c: MSTORE 00000e2d: PUSH1 0x20 00000e2f: DUP1 00000e30: DUP4 00000e31: ADD 00000e32: DUP3 00000e33: SWAP1 00000e34: MSTORE 00000e35: SWAP3 00000e36: DUP3 00000e37: ADD 00000e38: MSTORE 00000e39: DUP3 00000e3a: MSTORE 00000e3b: PUSH1 0x00 00000e3d: NOT 00000e3e: SWAP1 00000e3f: SWAP3 00000e40: ADD 00000e41: SWAP2 00000e42: ADD 00000e43: DUP2 00000e44: PUSH2 0x0e1d 00000e47: JUMPI 00000e48: SWAP1 00000e49: POP 00000e4a: JUMPDEST 00000e4b: POP 00000e4c: SWAP1 00000e4d: POP 00000e4e: PUSH1 0x00 00000e50: JUMPDEST 00000e51: PUSH1 0x03 00000e53: SLOAD 00000e54: DUP2 00000e55: LT 00000e56: ISZERO 00000e57: PUSH2 0x0f46 00000e5a: JUMPI 00000e5b: PUSH1 0x00 00000e5d: PUSH1 0x03 00000e5f: DUP3 00000e60: DUP2 00000e61: SLOAD 00000e62: DUP2 00000e63: LT 00000e64: PUSH2 0x0e6f 00000e67: JUMPI 00000e68: PUSH2 0x0e6f 00000e6b: PUSH2 0x2121 00000e6e: JUMP 00000e6f: JUMPDEST 00000e70: SWAP1 00000e71: PUSH1 0x00 00000e73: MSTORE 00000e74: PUSH1 0x20 00000e76: PUSH1 0x00 00000e78: KECCAK256 00000e79: ADD 00000e7a: PUSH1 0x00 00000e7c: SWAP1 00000e7d: SLOAD 00000e7e: SWAP1 00000e7f: PUSH2 0x0100 00000e82: EXP 00000e83: SWAP1 00000e84: DIV 00000e85: PUSH1 0x01 00000e87: PUSH1 0x01 00000e89: PUSH1 0xa0 00000e8b: SHL 00000e8c: SUB 00000e8d: AND 00000e8e: SWAP1 00000e8f: POP 00000e90: DUP1 00000e91: DUP4 00000e92: DUP4 00000e93: DUP2 00000e94: MLOAD 00000e95: DUP2 00000e96: LT 00000e97: PUSH2 0x0ea2 00000e9a: JUMPI 00000e9b: PUSH2 0x0ea2 00000e9e: PUSH2 0x2121 00000ea1: JUMP 00000ea2: JUMPDEST 00000ea3: PUSH1 0x20 00000ea5: SWAP1 00000ea6: DUP2 00000ea7: MUL 00000ea8: SWAP2 00000ea9: SWAP1 00000eaa: SWAP2 00000eab: ADD 00000eac: DUP2 00000ead: ADD 00000eae: MLOAD 00000eaf: PUSH1 0x01 00000eb1: PUSH1 0x01 00000eb3: PUSH1 0xa0 00000eb5: SHL 00000eb6: SUB 00000eb7: SWAP3 00000eb8: DUP4 00000eb9: AND 00000eba: SWAP1 00000ebb: MSTORE 00000ebc: SWAP1 00000ebd: DUP3 00000ebe: AND 00000ebf: PUSH1 0x00 00000ec1: SWAP1 00000ec2: DUP2 00000ec3: MSTORE 00000ec4: PUSH1 0x04 00000ec6: SWAP1 00000ec7: SWAP2 00000ec8: MSTORE 00000ec9: PUSH1 0x40 00000ecb: SWAP1 00000ecc: KECCAK256 00000ecd: SLOAD 00000ece: DUP4 00000ecf: MLOAD 00000ed0: DUP5 00000ed1: SWAP1 00000ed2: DUP5 00000ed3: SWAP1 00000ed4: DUP2 00000ed5: LT 00000ed6: PUSH2 0x0ee1 00000ed9: JUMPI 00000eda: PUSH2 0x0ee1 00000edd: PUSH2 0x2121 00000ee0: JUMP 00000ee1: JUMPDEST 00000ee2: PUSH1 0x20 00000ee4: SWAP1 00000ee5: DUP2 00000ee6: MUL 00000ee7: SWAP2 00000ee8: SWAP1 00000ee9: SWAP2 00000eea: ADD 00000eeb: DUP2 00000eec: ADD 00000eed: MLOAD 00000eee: DUP2 00000eef: ADD 00000ef0: SWAP2 00000ef1: SWAP1 00000ef2: SWAP2 00000ef3: MSTORE 00000ef4: PUSH1 0x01 00000ef6: PUSH1 0x01 00000ef8: PUSH1 0xa0 00000efa: SHL 00000efb: SUB 00000efc: DUP3 00000efd: AND 00000efe: PUSH1 0x00 00000f00: SWAP1 00000f01: DUP2 00000f02: MSTORE 00000f03: PUSH1 0x04 00000f05: SWAP1 00000f06: SWAP2 00000f07: MSTORE 00000f08: PUSH1 0x40 00000f0a: SWAP1 00000f0b: KECCAK256 00000f0c: PUSH1 0x01 00000f0e: ADD 00000f0f: SLOAD 00000f10: DUP4 00000f11: MLOAD 00000f12: PUSH1 0xff 00000f14: SWAP1 00000f15: SWAP2 00000f16: AND 00000f17: SWAP1 00000f18: DUP5 00000f19: SWAP1 00000f1a: DUP5 00000f1b: SWAP1 00000f1c: DUP2 00000f1d: LT 00000f1e: PUSH2 0x0f29 00000f21: JUMPI 00000f22: PUSH2 0x0f29 00000f25: PUSH2 0x2121 00000f28: JUMP 00000f29: JUMPDEST 00000f2a: PUSH1 0x20 00000f2c: SWAP1 00000f2d: DUP2 00000f2e: MUL 00000f2f: SWAP2 00000f30: SWAP1 00000f31: SWAP2 00000f32: ADD 00000f33: ADD 00000f34: MLOAD 00000f35: SWAP1 00000f36: ISZERO 00000f37: ISZERO 00000f38: PUSH1 0x40 00000f3a: SWAP1 00000f3b: SWAP2 00000f3c: ADD 00000f3d: MSTORE 00000f3e: POP 00000f3f: PUSH1 0x01 00000f41: ADD 00000f42: PUSH2 0x0e50 00000f45: JUMP 00000f46: JUMPDEST 00000f47: POP 00000f48: SWAP2 00000f49: SWAP1 00000f4a: POP 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: PUSH2 0x0f54 00000f50: PUSH2 0x176f 00000f53: JUMP 00000f54: JUMPDEST 00000f55: PUSH2 0x0f5c 00000f58: PUSH2 0x17a7 00000f5b: JUMP 00000f5c: JUMPDEST 00000f5d: PUSH2 0x0f68 00000f60: DUP4 00000f61: DUP4 00000f62: CALLER 00000f63: DUP5 00000f64: PUSH2 0x17d8 00000f67: JUMP 00000f68: JUMPDEST 00000f69: PUSH2 0x0dd9 00000f6c: PUSH1 0x01 00000f6e: PUSH1 0x00 00000f70: DUP1 00000f71: MLOAD 00000f72: PUSH1 0x20 00000f74: PUSH2 0x22a6 00000f77: DUP4 00000f78: CODECOPY 00000f79: DUP2 00000f7a: MLOAD 00000f7b: SWAP2 00000f7c: MSTORE 00000f7d: SSTORE 00000f7e: JUMP 00000f7f: JUMPDEST 00000f80: PUSH1 0x00 00000f82: PUSH2 0x0f8a 00000f85: DUP3 00000f86: PUSH2 0x1918 00000f89: JUMP 00000f8a: JUMPDEST 00000f8b: PUSH2 0x0fd6 00000f8e: JUMPI 00000f8f: PUSH1 0x40 00000f91: MLOAD 00000f92: PUSH3 0x461bcd 00000f96: PUSH1 0xe5 00000f98: SHL 00000f99: DUP2 00000f9a: MSTORE 00000f9b: PUSH1 0x20 00000f9d: PUSH1 0x04 00000f9f: DUP3 00000fa0: ADD 00000fa1: MSTORE 00000fa2: PUSH1 0x1b 00000fa4: PUSH1 0x24 00000fa6: DUP3 00000fa7: ADD 00000fa8: MSTORE 00000fa9: PUSH32 0x7468697320746f6b656e206973206e6f7420737570706f727465640000000000 00000fca: PUSH1 0x44 00000fcc: DUP3 00000fcd: ADD 00000fce: MSTORE 00000fcf: PUSH1 0x64 00000fd1: ADD 00000fd2: PUSH2 0x048e 00000fd5: JUMP 00000fd6: JUMPDEST 00000fd7: PUSH1 0x40 00000fd9: MLOAD 00000fda: PUSH4 0x70a08231 00000fdf: PUSH1 0xe0 00000fe1: SHL 00000fe2: DUP2 00000fe3: MSTORE 00000fe4: ADDRESS 00000fe5: PUSH1 0x04 00000fe7: DUP3 00000fe8: ADD 00000fe9: MSTORE 00000fea: PUSH1 0x01 00000fec: PUSH1 0x01 00000fee: PUSH1 0xa0 00000ff0: SHL 00000ff1: SUB 00000ff2: DUP4 00000ff3: AND 00000ff4: SWAP1 00000ff5: PUSH4 0x70a08231 00000ffa: SWAP1 00000ffb: PUSH1 0x24 00000ffd: ADD 00000ffe: PUSH1 0x20 00001000: PUSH1 0x40 00001002: MLOAD 00001003: DUP1 00001004: DUP4 00001005: SUB 00001006: DUP2 00001007: DUP7 00001008: GAS 00001009: STATICCALL 0000100a: ISZERO 0000100b: DUP1 0000100c: ISZERO 0000100d: PUSH2 0x101a 00001010: JUMPI 00001011: RETURNDATASIZE 00001012: PUSH1 0x00 00001014: DUP1 00001015: RETURNDATACOPY 00001016: RETURNDATASIZE 00001017: PUSH1 0x00 00001019: REVERT 0000101a: JUMPDEST 0000101b: POP 0000101c: POP 0000101d: POP 0000101e: POP 0000101f: PUSH1 0x40 00001021: MLOAD 00001022: RETURNDATASIZE 00001023: PUSH1 0x1f 00001025: NOT 00001026: PUSH1 0x1f 00001028: DUP3 00001029: ADD 0000102a: AND 0000102b: DUP3 0000102c: ADD 0000102d: DUP1 0000102e: PUSH1 0x40 00001030: MSTORE 00001031: POP 00001032: DUP2 00001033: ADD 00001034: SWAP1 00001035: PUSH2 0x103e 00001038: SWAP2 00001039: SWAP1 0000103a: PUSH2 0x2137 0000103d: JUMP 0000103e: JUMPDEST 0000103f: SWAP3 00001040: SWAP2 00001041: POP 00001042: POP 00001043: JUMP 00001044: JUMPDEST 00001045: PUSH1 0x00 00001047: SLOAD 00001048: PUSH1 0x01 0000104a: PUSH1 0x01 0000104c: PUSH1 0xa0 0000104e: SHL 0000104f: SUB 00001050: AND 00001051: CALLER 00001052: EQ 00001053: DUP1 00001054: PUSH2 0x1067 00001057: JUMPI 00001058: POP 00001059: PUSH1 0x02 0000105b: SLOAD 0000105c: PUSH1 0x01 0000105e: PUSH1 0x01 00001060: PUSH1 0xa0 00001062: SHL 00001063: SUB 00001064: AND 00001065: CALLER 00001066: EQ 00001067: JUMPDEST 00001068: PUSH2 0x1083 0000106b: JUMPI 0000106c: PUSH1 0x40 0000106e: MLOAD 0000106f: PUSH3 0x461bcd 00001073: PUSH1 0xe5 00001075: SHL 00001076: DUP2 00001077: MSTORE 00001078: PUSH1 0x04 0000107a: ADD 0000107b: PUSH2 0x048e 0000107e: SWAP1 0000107f: PUSH2 0x2059 00001082: JUMP 00001083: JUMPDEST 00001084: PUSH2 0x108c 00001087: DUP2 00001088: PUSH2 0x16b6 0000108b: JUMP 0000108c: JUMPDEST 0000108d: PUSH2 0x10a8 00001090: JUMPI 00001091: PUSH1 0x40 00001093: MLOAD 00001094: PUSH3 0x461bcd 00001098: PUSH1 0xe5 0000109a: SHL 0000109b: DUP2 0000109c: MSTORE 0000109d: PUSH1 0x04 0000109f: ADD 000010a0: PUSH2 0x048e 000010a3: SWAP1 000010a4: PUSH2 0x20a2 000010a7: JUMP 000010a8: JUMPDEST 000010a9: PUSH1 0x40 000010ab: MLOAD 000010ac: PUSH4 0x70a08231 000010b1: PUSH1 0xe0 000010b3: SHL 000010b4: DUP2 000010b5: MSTORE 000010b6: ADDRESS 000010b7: PUSH1 0x04 000010b9: DUP3 000010ba: ADD 000010bb: MSTORE 000010bc: PUSH1 0x01 000010be: PUSH1 0x01 000010c0: PUSH1 0xa0 000010c2: SHL 000010c3: SUB 000010c4: DUP3 000010c5: AND 000010c6: SWAP1 000010c7: PUSH4 0x70a08231 000010cc: SWAP1 000010cd: PUSH1 0x24 000010cf: ADD 000010d0: PUSH1 0x20 000010d2: PUSH1 0x40 000010d4: MLOAD 000010d5: DUP1 000010d6: DUP4 000010d7: SUB 000010d8: DUP2 000010d9: DUP7 000010da: GAS 000010db: STATICCALL 000010dc: ISZERO 000010dd: DUP1 000010de: ISZERO 000010df: PUSH2 0x10ec 000010e2: JUMPI 000010e3: RETURNDATASIZE 000010e4: PUSH1 0x00 000010e6: DUP1 000010e7: RETURNDATACOPY 000010e8: RETURNDATASIZE 000010e9: PUSH1 0x00 000010eb: REVERT 000010ec: JUMPDEST 000010ed: POP 000010ee: POP 000010ef: POP 000010f0: POP 000010f1: PUSH1 0x40 000010f3: MLOAD 000010f4: RETURNDATASIZE 000010f5: PUSH1 0x1f 000010f7: NOT 000010f8: PUSH1 0x1f 000010fa: DUP3 000010fb: ADD 000010fc: AND 000010fd: DUP3 000010fe: ADD 000010ff: DUP1 00001100: PUSH1 0x40 00001102: MSTORE 00001103: POP 00001104: DUP2 00001105: ADD 00001106: SWAP1 00001107: PUSH2 0x1110 0000110a: SWAP2 0000110b: SWAP1 0000110c: PUSH2 0x2137 0000110f: JUMP 00001110: JUMPDEST 00001111: ISZERO 00001112: PUSH2 0x117c 00001115: JUMPI 00001116: PUSH1 0x40 00001118: MLOAD 00001119: PUSH3 0x461bcd 0000111d: PUSH1 0xe5 0000111f: SHL 00001120: DUP2 00001121: MSTORE 00001122: PUSH1 0x20 00001124: PUSH1 0x04 00001126: DUP3 00001127: ADD 00001128: MSTORE 00001129: PUSH1 0x36 0000112b: PUSH1 0x24 0000112d: DUP3 0000112e: ADD 0000112f: MSTORE 00001130: PUSH32 0x4d7270634465706f7369743a2063616e6e6f742064656c65746520746f6b656e 00001151: PUSH1 0x44 00001153: DUP3 00001154: ADD 00001155: MSTORE 00001156: PUSH22 0x207769746820706f7369746976652062616c616e6365 0000116d: PUSH1 0x50 0000116f: SHL 00001170: PUSH1 0x64 00001172: DUP3 00001173: ADD 00001174: MSTORE 00001175: PUSH1 0x84 00001177: ADD 00001178: PUSH2 0x048e 0000117b: JUMP 0000117c: JUMPDEST 0000117d: PUSH1 0x00 0000117f: JUMPDEST 00001180: PUSH1 0x03 00001182: SLOAD 00001183: DUP2 00001184: LT 00001185: ISZERO 00001186: PUSH2 0x127a 00001189: JUMPI 0000118a: DUP2 0000118b: PUSH1 0x01 0000118d: PUSH1 0x01 0000118f: PUSH1 0xa0 00001191: SHL 00001192: SUB 00001193: AND 00001194: PUSH1 0x03 00001196: DUP3 00001197: DUP2 00001198: SLOAD 00001199: DUP2 0000119a: LT 0000119b: PUSH2 0x11a6 0000119e: JUMPI 0000119f: PUSH2 0x11a6 000011a2: PUSH2 0x2121 000011a5: JUMP 000011a6: JUMPDEST 000011a7: PUSH1 0x00 000011a9: SWAP2 000011aa: DUP3 000011ab: MSTORE 000011ac: PUSH1 0x20 000011ae: SWAP1 000011af: SWAP2 000011b0: KECCAK256 000011b1: ADD 000011b2: SLOAD 000011b3: PUSH1 0x01 000011b5: PUSH1 0x01 000011b7: PUSH1 0xa0 000011b9: SHL 000011ba: SUB 000011bb: AND 000011bc: SUB 000011bd: PUSH2 0x1272 000011c0: JUMPI 000011c1: PUSH1 0x03 000011c3: DUP1 000011c4: SLOAD 000011c5: PUSH2 0x11d0 000011c8: SWAP1 000011c9: PUSH1 0x01 000011cb: SWAP1 000011cc: PUSH2 0x21e2 000011cf: JUMP 000011d0: JUMPDEST 000011d1: DUP2 000011d2: SLOAD 000011d3: DUP2 000011d4: LT 000011d5: PUSH2 0x11e0 000011d8: JUMPI 000011d9: PUSH2 0x11e0 000011dc: PUSH2 0x2121 000011df: JUMP 000011e0: JUMPDEST 000011e1: PUSH1 0x00 000011e3: SWAP2 000011e4: DUP3 000011e5: MSTORE 000011e6: PUSH1 0x20 000011e8: SWAP1 000011e9: SWAP2 000011ea: KECCAK256 000011eb: ADD 000011ec: SLOAD 000011ed: PUSH1 0x03 000011ef: DUP1 000011f0: SLOAD 000011f1: PUSH1 0x01 000011f3: PUSH1 0x01 000011f5: PUSH1 0xa0 000011f7: SHL 000011f8: SUB 000011f9: SWAP1 000011fa: SWAP3 000011fb: AND 000011fc: SWAP2 000011fd: DUP4 000011fe: SWAP1 000011ff: DUP2 00001200: LT 00001201: PUSH2 0x120c 00001204: JUMPI 00001205: PUSH2 0x120c 00001208: PUSH2 0x2121 0000120b: JUMP 0000120c: JUMPDEST 0000120d: SWAP1 0000120e: PUSH1 0x00 00001210: MSTORE 00001211: PUSH1 0x20 00001213: PUSH1 0x00 00001215: KECCAK256 00001216: ADD 00001217: PUSH1 0x00 00001219: PUSH2 0x0100 0000121c: EXP 0000121d: DUP2 0000121e: SLOAD 0000121f: DUP2 00001220: PUSH1 0x01 00001222: PUSH1 0x01 00001224: PUSH1 0xa0 00001226: SHL 00001227: SUB 00001228: MUL 00001229: NOT 0000122a: AND 0000122b: SWAP1 0000122c: DUP4 0000122d: PUSH1 0x01 0000122f: PUSH1 0x01 00001231: PUSH1 0xa0 00001233: SHL 00001234: SUB 00001235: AND 00001236: MUL 00001237: OR 00001238: SWAP1 00001239: SSTORE 0000123a: POP 0000123b: PUSH1 0x03 0000123d: DUP1 0000123e: SLOAD 0000123f: DUP1 00001240: PUSH2 0x124b 00001243: JUMPI 00001244: PUSH2 0x124b 00001247: PUSH2 0x2203 0000124a: JUMP 0000124b: JUMPDEST 0000124c: PUSH1 0x00 0000124e: DUP3 0000124f: DUP2 00001250: MSTORE 00001251: PUSH1 0x20 00001253: SWAP1 00001254: KECCAK256 00001255: DUP2 00001256: ADD 00001257: PUSH1 0x00 00001259: NOT 0000125a: SWAP1 0000125b: DUP2 0000125c: ADD 0000125d: DUP1 0000125e: SLOAD 0000125f: PUSH1 0x01 00001261: PUSH1 0x01 00001263: PUSH1 0xa0 00001265: SHL 00001266: SUB 00001267: NOT 00001268: AND 00001269: SWAP1 0000126a: SSTORE 0000126b: ADD 0000126c: SWAP1 0000126d: SSTORE 0000126e: PUSH2 0x127a 00001271: JUMP 00001272: JUMPDEST 00001273: PUSH1 0x01 00001275: ADD 00001276: PUSH2 0x117f 00001279: JUMP 0000127a: JUMPDEST 0000127b: POP 0000127c: PUSH1 0x01 0000127e: PUSH1 0x01 00001280: PUSH1 0xa0 00001282: SHL 00001283: SUB 00001284: DUP2 00001285: AND 00001286: PUSH1 0x00 00001288: SWAP1 00001289: DUP2 0000128a: MSTORE 0000128b: PUSH1 0x04 0000128d: PUSH1 0x20 0000128f: DUP2 00001290: SWAP1 00001291: MSTORE 00001292: PUSH1 0x40 00001294: DUP1 00001295: DUP4 00001296: KECCAK256 00001297: SWAP3 00001298: DUP4 00001299: SSTORE 0000129a: PUSH1 0x01 0000129c: SWAP1 0000129d: SWAP3 0000129e: ADD 0000129f: DUP1 000012a0: SLOAD 000012a1: PUSH1 0xff 000012a3: NOT 000012a4: AND 000012a5: SWAP1 000012a6: SSTORE 000012a7: SWAP1 000012a8: MLOAD 000012a9: PUSH1 0x00 000012ab: DUP1 000012ac: MLOAD 000012ad: PUSH1 0x20 000012af: PUSH2 0x2266 000012b2: DUP4 000012b3: CODECOPY 000012b4: DUP2 000012b5: MLOAD 000012b6: SWAP2 000012b7: MSTORE 000012b8: SWAP2 000012b9: PUSH2 0x0500 000012bc: SWAP2 000012bd: DUP5 000012be: SWAP2 000012bf: SWAP1 000012c0: PUSH2 0x20e6 000012c3: JUMP 000012c4: JUMPDEST 000012c5: PUSH2 0x12cc 000012c8: PUSH2 0x19ba 000012cb: JUMP 000012cc: JUMPDEST 000012cd: PUSH1 0x01 000012cf: PUSH1 0x01 000012d1: PUSH1 0xa0 000012d3: SHL 000012d4: SUB 000012d5: DUP2 000012d6: AND 000012d7: PUSH2 0x12f6 000012da: JUMPI 000012db: PUSH1 0x40 000012dd: MLOAD 000012de: PUSH4 0x1e4fbdf7 000012e3: PUSH1 0xe0 000012e5: SHL 000012e6: DUP2 000012e7: MSTORE 000012e8: PUSH1 0x00 000012ea: PUSH1 0x04 000012ec: DUP3 000012ed: ADD 000012ee: MSTORE 000012ef: PUSH1 0x24 000012f1: ADD 000012f2: PUSH2 0x048e 000012f5: JUMP 000012f6: JUMPDEST 000012f7: PUSH2 0x12ff 000012fa: DUP2 000012fb: PUSH2 0x1a15 000012fe: JUMP 000012ff: JUMPDEST 00001300: POP 00001301: JUMP 00001302: JUMPDEST 00001303: PUSH2 0x130a 00001306: PUSH2 0x1acf 00001309: JUMP 0000130a: JUMPDEST 0000130b: PUSH2 0x05fa 0000130e: PUSH2 0x1b18 00001311: JUMP 00001312: JUMPDEST 00001313: PUSH2 0x131a 00001316: PUSH2 0x1acf 00001319: JUMP 0000131a: JUMPDEST 0000131b: PUSH2 0x05fa 0000131e: PUSH2 0x1b39 00001321: JUMP 00001322: JUMPDEST 00001323: PUSH2 0x132a 00001326: PUSH2 0x1acf 00001329: JUMP 0000132a: JUMPDEST 0000132b: PUSH2 0x12ff 0000132e: DUP2 0000132f: PUSH2 0x1b41 00001332: JUMP 00001333: JUMPDEST 00001334: DUP3 00001335: DUP2 00001336: EQ 00001337: PUSH2 0x139f 0000133a: JUMPI 0000133b: PUSH1 0x40 0000133d: MLOAD 0000133e: PUSH3 0x461bcd 00001342: PUSH1 0xe5 00001344: SHL 00001345: DUP2 00001346: MSTORE 00001347: PUSH1 0x20 00001349: PUSH1 0x04 0000134b: DUP3 0000134c: ADD 0000134d: MSTORE 0000134e: PUSH1 0x34 00001350: PUSH1 0x24 00001352: DUP3 00001353: ADD 00001354: MSTORE 00001355: PUSH32 0x4d7270634465706f7369743a20746f6b656e7320616e6420616d6f756e747320 00001376: PUSH1 0x44 00001378: DUP3 00001379: ADD 0000137a: MSTORE 0000137b: PUSH20 0x0d8d2e6e840d8cadccee8d040dad2e6dac2e8c6d 00001390: PUSH1 0x63 00001392: SHL 00001393: PUSH1 0x64 00001395: DUP3 00001396: ADD 00001397: MSTORE 00001398: PUSH1 0x84 0000139a: ADD 0000139b: PUSH2 0x048e 0000139e: JUMP 0000139f: JUMPDEST 000013a0: PUSH1 0x00 000013a2: DUP1 000013a3: SLOAD 000013a4: PUSH1 0x01 000013a6: PUSH1 0x01 000013a8: PUSH1 0xa0 000013aa: SHL 000013ab: SUB 000013ac: DUP1 000013ad: DUP11 000013ae: AND 000013af: PUSH1 0x01 000013b1: PUSH1 0x01 000013b3: PUSH1 0xa0 000013b5: SHL 000013b6: SUB 000013b7: NOT 000013b8: SWAP3 000013b9: DUP4 000013ba: AND 000013bb: OR 000013bc: DUP4 000013bd: SSTORE 000013be: PUSH1 0x01 000013c0: DUP1 000013c1: SLOAD 000013c2: DUP11 000013c3: DUP4 000013c4: AND 000013c5: SWAP1 000013c6: DUP5 000013c7: AND 000013c8: OR 000013c9: SWAP1 000013ca: SSTORE 000013cb: PUSH1 0x02 000013cd: DUP1 000013ce: SLOAD 000013cf: SWAP2 000013d0: DUP10 000013d1: AND 000013d2: SWAP2 000013d3: SWAP1 000013d4: SWAP3 000013d5: AND 000013d6: OR 000013d7: SWAP1 000013d8: SSTORE 000013d9: JUMPDEST 000013da: DUP4 000013db: DUP2 000013dc: LT 000013dd: ISZERO 000013de: PUSH2 0x16ac 000013e1: JUMPI 000013e2: PUSH1 0x00 000013e4: DUP6 000013e5: DUP6 000013e6: DUP4 000013e7: DUP2 000013e8: DUP2 000013e9: LT 000013ea: PUSH2 0x13f5 000013ed: JUMPI 000013ee: PUSH2 0x13f5 000013f1: PUSH2 0x2121 000013f4: JUMP 000013f5: JUMPDEST 000013f6: SWAP1 000013f7: POP 000013f8: PUSH1 0x20 000013fa: MUL 000013fb: ADD 000013fc: PUSH1 0x20 000013fe: DUP2 000013ff: ADD 00001400: SWAP1 00001401: PUSH2 0x140a 00001404: SWAP2 00001405: SWAP1 00001406: PUSH2 0x1ea5 00001409: JUMP 0000140a: JUMPDEST 0000140b: PUSH1 0x01 0000140d: PUSH1 0x01 0000140f: PUSH1 0xa0 00001411: SHL 00001412: SUB 00001413: AND 00001414: SUB 00001415: PUSH2 0x1460 00001418: JUMPI 00001419: PUSH1 0x40 0000141b: MLOAD 0000141c: PUSH3 0x461bcd 00001420: PUSH1 0xe5 00001422: SHL 00001423: DUP2 00001424: MSTORE 00001425: PUSH1 0x20 00001427: PUSH1 0x04 00001429: DUP3 0000142a: ADD 0000142b: DUP2 0000142c: SWAP1 0000142d: MSTORE 0000142e: PUSH1 0x24 00001430: DUP3 00001431: ADD 00001432: MSTORE 00001433: PUSH32 0x4d7270634465706f7369743a2077726f6e6720746f6b656e2061646472657373 00001454: PUSH1 0x44 00001456: DUP3 00001457: ADD 00001458: MSTORE 00001459: PUSH1 0x64 0000145b: ADD 0000145c: PUSH2 0x048e 0000145f: JUMP 00001460: JUMPDEST 00001461: PUSH1 0x04 00001463: PUSH1 0x00 00001465: DUP7 00001466: DUP7 00001467: DUP5 00001468: DUP2 00001469: DUP2 0000146a: LT 0000146b: PUSH2 0x1476 0000146e: JUMPI 0000146f: PUSH2 0x1476 00001472: PUSH2 0x2121 00001475: JUMP 00001476: JUMPDEST 00001477: SWAP1 00001478: POP 00001479: PUSH1 0x20 0000147b: MUL 0000147c: ADD 0000147d: PUSH1 0x20 0000147f: DUP2 00001480: ADD 00001481: SWAP1 00001482: PUSH2 0x148b 00001485: SWAP2 00001486: SWAP1 00001487: PUSH2 0x1ea5 0000148a: JUMP 0000148b: JUMPDEST 0000148c: PUSH1 0x01 0000148e: PUSH1 0x01 00001490: PUSH1 0xa0 00001492: SHL 00001493: SUB 00001494: AND 00001495: DUP2 00001496: MSTORE 00001497: PUSH1 0x20 00001499: DUP2 0000149a: ADD 0000149b: SWAP2 0000149c: SWAP1 0000149d: SWAP2 0000149e: MSTORE 0000149f: PUSH1 0x40 000014a1: ADD 000014a2: PUSH1 0x00 000014a4: KECCAK256 000014a5: PUSH1 0x01 000014a7: ADD 000014a8: SLOAD 000014a9: PUSH1 0xff 000014ab: AND 000014ac: ISZERO 000014ad: PUSH2 0x1503 000014b0: JUMPI 000014b1: PUSH1 0x40 000014b3: MLOAD 000014b4: PUSH3 0x461bcd 000014b8: PUSH1 0xe5 000014ba: SHL 000014bb: DUP2 000014bc: MSTORE 000014bd: PUSH1 0x20 000014bf: PUSH1 0x04 000014c1: DUP3 000014c2: ADD 000014c3: MSTORE 000014c4: PUSH1 0x22 000014c6: PUSH1 0x24 000014c8: DUP3 000014c9: ADD 000014ca: MSTORE 000014cb: PUSH32 0x4d7270634465706f7369743a20746f6b656e206475706c696361746520666f75 000014ec: PUSH1 0x44 000014ee: DUP3 000014ef: ADD 000014f0: MSTORE 000014f1: PUSH2 0x1b99 000014f4: PUSH1 0xf2 000014f6: SHL 000014f7: PUSH1 0x64 000014f9: DUP3 000014fa: ADD 000014fb: MSTORE 000014fc: PUSH1 0x84 000014fe: ADD 000014ff: PUSH2 0x048e 00001502: JUMP 00001503: JUMPDEST 00001504: PUSH1 0x00 00001506: DUP4 00001507: DUP4 00001508: DUP4 00001509: DUP2 0000150a: DUP2 0000150b: LT 0000150c: PUSH2 0x1517 0000150f: JUMPI 00001510: PUSH2 0x1517 00001513: PUSH2 0x2121 00001516: JUMP 00001517: JUMPDEST 00001518: SWAP1 00001519: POP 0000151a: PUSH1 0x20 0000151c: MUL 0000151d: ADD 0000151e: CALLDATALOAD 0000151f: GT 00001520: PUSH2 0x156b 00001523: JUMPI 00001524: PUSH1 0x40 00001526: MLOAD 00001527: PUSH3 0x461bcd 0000152b: PUSH1 0xe5 0000152d: SHL 0000152e: DUP2 0000152f: MSTORE 00001530: PUSH1 0x20 00001532: PUSH1 0x04 00001534: DUP3 00001535: ADD 00001536: MSTORE 00001537: PUSH1 0x1d 00001539: PUSH1 0x24 0000153b: DUP3 0000153c: ADD 0000153d: MSTORE 0000153e: PUSH32 0x4d7270634465706f7369743a2077726f6e67206d696e20616d6f756e74000000 0000155f: PUSH1 0x44 00001561: DUP3 00001562: ADD 00001563: MSTORE 00001564: PUSH1 0x64 00001566: ADD 00001567: PUSH2 0x048e 0000156a: JUMP 0000156b: JUMPDEST 0000156c: PUSH1 0x03 0000156e: DUP6 0000156f: DUP6 00001570: DUP4 00001571: DUP2 00001572: DUP2 00001573: LT 00001574: PUSH2 0x157f 00001577: JUMPI 00001578: PUSH2 0x157f 0000157b: PUSH2 0x2121 0000157e: JUMP 0000157f: JUMPDEST 00001580: SWAP1 00001581: POP 00001582: PUSH1 0x20 00001584: MUL 00001585: ADD 00001586: PUSH1 0x20 00001588: DUP2 00001589: ADD 0000158a: SWAP1 0000158b: PUSH2 0x1594 0000158e: SWAP2 0000158f: SWAP1 00001590: PUSH2 0x1ea5 00001593: JUMP 00001594: JUMPDEST 00001595: DUP2 00001596: SLOAD 00001597: PUSH1 0x01 00001599: DUP2 0000159a: ADD 0000159b: DUP4 0000159c: SSTORE 0000159d: PUSH1 0x00 0000159f: SWAP3 000015a0: DUP4 000015a1: MSTORE 000015a2: PUSH1 0x20 000015a4: SWAP1 000015a5: SWAP3 000015a6: KECCAK256 000015a7: SWAP1 000015a8: SWAP2 000015a9: ADD 000015aa: DUP1 000015ab: SLOAD 000015ac: PUSH1 0x01 000015ae: PUSH1 0x01 000015b0: PUSH1 0xa0 000015b2: SHL 000015b3: SUB 000015b4: NOT 000015b5: AND 000015b6: PUSH1 0x01 000015b8: PUSH1 0x01 000015ba: PUSH1 0xa0 000015bc: SHL 000015bd: SUB 000015be: SWAP1 000015bf: SWAP3 000015c0: AND 000015c1: SWAP2 000015c2: SWAP1 000015c3: SWAP2 000015c4: OR 000015c5: SWAP1 000015c6: SSTORE 000015c7: PUSH1 0x40 000015c9: DUP1 000015ca: MLOAD 000015cb: DUP1 000015cc: DUP3 000015cd: ADD 000015ce: SWAP1 000015cf: SWAP2 000015d0: MSTORE 000015d1: DUP1 000015d2: DUP5 000015d3: DUP5 000015d4: DUP5 000015d5: DUP2 000015d6: DUP2 000015d7: LT 000015d8: PUSH2 0x15e3 000015db: JUMPI 000015dc: PUSH2 0x15e3 000015df: PUSH2 0x2121 000015e2: JUMP 000015e3: JUMPDEST 000015e4: SWAP1 000015e5: POP 000015e6: PUSH1 0x20 000015e8: MUL 000015e9: ADD 000015ea: CALLDATALOAD 000015eb: DUP2 000015ec: MSTORE 000015ed: PUSH1 0x20 000015ef: ADD 000015f0: PUSH1 0x01 000015f2: ISZERO 000015f3: ISZERO 000015f4: DUP2 000015f5: MSTORE 000015f6: POP 000015f7: PUSH1 0x04 000015f9: PUSH1 0x00 000015fb: DUP8 000015fc: DUP8 000015fd: DUP6 000015fe: DUP2 000015ff: DUP2 00001600: LT 00001601: PUSH2 0x160c 00001604: JUMPI 00001605: PUSH2 0x160c 00001608: PUSH2 0x2121 0000160b: JUMP 0000160c: JUMPDEST 0000160d: SWAP1 0000160e: POP 0000160f: PUSH1 0x20 00001611: MUL 00001612: ADD 00001613: PUSH1 0x20 00001615: DUP2 00001616: ADD 00001617: SWAP1 00001618: PUSH2 0x1621 0000161b: SWAP2 0000161c: SWAP1 0000161d: PUSH2 0x1ea5 00001620: JUMP 00001621: JUMPDEST 00001622: PUSH1 0x01 00001624: PUSH1 0x01 00001626: PUSH1 0xa0 00001628: SHL 00001629: SUB 0000162a: AND 0000162b: DUP2 0000162c: MSTORE 0000162d: PUSH1 0x20 0000162f: DUP1 00001630: DUP3 00001631: ADD 00001632: SWAP3 00001633: SWAP1 00001634: SWAP3 00001635: MSTORE 00001636: PUSH1 0x40 00001638: ADD 00001639: PUSH1 0x00 0000163b: KECCAK256 0000163c: DUP3 0000163d: MLOAD 0000163e: DUP2 0000163f: SSTORE 00001640: SWAP2 00001641: ADD 00001642: MLOAD 00001643: PUSH1 0x01 00001645: SWAP1 00001646: SWAP2 00001647: ADD 00001648: DUP1 00001649: SLOAD 0000164a: PUSH1 0xff 0000164c: NOT 0000164d: AND 0000164e: SWAP2 0000164f: ISZERO 00001650: ISZERO 00001651: SWAP2 00001652: SWAP1 00001653: SWAP2 00001654: OR 00001655: SWAP1 00001656: SSTORE 00001657: PUSH1 0x00 00001659: DUP1 0000165a: MLOAD 0000165b: PUSH1 0x20 0000165d: PUSH2 0x2266 00001660: DUP4 00001661: CODECOPY 00001662: DUP2 00001663: MLOAD 00001664: SWAP2 00001665: MSTORE 00001666: DUP6 00001667: DUP6 00001668: DUP4 00001669: DUP2 0000166a: DUP2 0000166b: LT 0000166c: PUSH2 0x1677 0000166f: JUMPI 00001670: PUSH2 0x1677 00001673: PUSH2 0x2121 00001676: JUMP 00001677: JUMPDEST 00001678: SWAP1 00001679: POP 0000167a: PUSH1 0x20 0000167c: MUL 0000167d: ADD 0000167e: PUSH1 0x20 00001680: DUP2 00001681: ADD 00001682: SWAP1 00001683: PUSH2 0x168c 00001686: SWAP2 00001687: SWAP1 00001688: PUSH2 0x1ea5 0000168b: JUMP 0000168c: JUMPDEST 0000168d: PUSH1 0x00 0000168f: PUSH1 0x40 00001691: MLOAD 00001692: PUSH2 0x169c 00001695: SWAP3 00001696: SWAP2 00001697: SWAP1 00001698: PUSH2 0x20e6 0000169b: JUMP 0000169c: JUMPDEST 0000169d: PUSH1 0x40 0000169f: MLOAD 000016a0: DUP1 000016a1: SWAP2 000016a2: SUB 000016a3: SWAP1 000016a4: LOG1 000016a5: PUSH1 0x01 000016a7: ADD 000016a8: PUSH2 0x13d9 000016ab: JUMP 000016ac: JUMPDEST 000016ad: POP 000016ae: POP 000016af: POP 000016b0: POP 000016b1: POP 000016b2: POP 000016b3: POP 000016b4: POP 000016b5: JUMP 000016b6: JUMPDEST 000016b7: PUSH1 0x00 000016b9: DUP1 000016ba: JUMPDEST 000016bb: PUSH1 0x03 000016bd: SLOAD 000016be: DUP2 000016bf: LT 000016c0: ISZERO 000016c1: PUSH2 0x170c 000016c4: JUMPI 000016c5: DUP3 000016c6: PUSH1 0x01 000016c8: PUSH1 0x01 000016ca: PUSH1 0xa0 000016cc: SHL 000016cd: SUB 000016ce: AND 000016cf: PUSH1 0x03 000016d1: DUP3 000016d2: DUP2 000016d3: SLOAD 000016d4: DUP2 000016d5: LT 000016d6: PUSH2 0x16e1 000016d9: JUMPI 000016da: PUSH2 0x16e1 000016dd: PUSH2 0x2121 000016e0: JUMP 000016e1: JUMPDEST 000016e2: PUSH1 0x00 000016e4: SWAP2 000016e5: DUP3 000016e6: MSTORE 000016e7: PUSH1 0x20 000016e9: SWAP1 000016ea: SWAP2 000016eb: KECCAK256 000016ec: ADD 000016ed: SLOAD 000016ee: PUSH1 0x01 000016f0: PUSH1 0x01 000016f2: PUSH1 0xa0 000016f4: SHL 000016f5: SUB 000016f6: AND 000016f7: SUB 000016f8: PUSH2 0x1704 000016fb: JUMPI 000016fc: POP 000016fd: PUSH1 0x01 000016ff: SWAP3 00001700: SWAP2 00001701: POP 00001702: POP 00001703: JUMP 00001704: JUMPDEST 00001705: PUSH1 0x01 00001707: ADD 00001708: PUSH2 0x16ba 0000170b: JUMP 0000170c: JUMPDEST 0000170d: POP 0000170e: PUSH1 0x00 00001710: SWAP3 00001711: SWAP2 00001712: POP 00001713: POP 00001714: JUMP 00001715: JUMPDEST 00001716: PUSH2 0x171d 00001719: PUSH2 0x1b49 0000171c: JUMP 0000171d: JUMPDEST 0000171e: PUSH1 0x00 00001720: DUP1 00001721: MLOAD 00001722: PUSH1 0x20 00001724: PUSH2 0x2286 00001727: DUP4 00001728: CODECOPY 00001729: DUP2 0000172a: MLOAD 0000172b: SWAP2 0000172c: MSTORE 0000172d: DUP1 0000172e: SLOAD 0000172f: PUSH1 0xff 00001731: NOT 00001732: AND 00001733: DUP2 00001734: SSTORE 00001735: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa 00001756: CALLER 00001757: JUMPDEST 00001758: PUSH1 0x40 0000175a: MLOAD 0000175b: PUSH1 0x01 0000175d: PUSH1 0x01 0000175f: PUSH1 0xa0 00001761: SHL 00001762: SUB 00001763: SWAP1 00001764: SWAP2 00001765: AND 00001766: DUP2 00001767: MSTORE 00001768: PUSH1 0x20 0000176a: ADD 0000176b: PUSH2 0x0500 0000176e: JUMP 0000176f: JUMPDEST 00001770: PUSH1 0x00 00001772: DUP1 00001773: MLOAD 00001774: PUSH1 0x20 00001776: PUSH2 0x22a6 00001779: DUP4 0000177a: CODECOPY 0000177b: DUP2 0000177c: MLOAD 0000177d: SWAP2 0000177e: MSTORE 0000177f: DUP1 00001780: SLOAD 00001781: PUSH1 0x01 00001783: NOT 00001784: ADD 00001785: PUSH2 0x17a1 00001788: JUMPI 00001789: PUSH1 0x40 0000178b: MLOAD 0000178c: PUSH4 0x3ee5aeb5 00001791: PUSH1 0xe0 00001793: SHL 00001794: DUP2 00001795: MSTORE 00001796: PUSH1 0x04 00001798: ADD 00001799: PUSH1 0x40 0000179b: MLOAD 0000179c: DUP1 0000179d: SWAP2 0000179e: SUB 0000179f: SWAP1 000017a0: REVERT 000017a1: JUMPDEST 000017a2: PUSH1 0x02 000017a4: SWAP1 000017a5: SSTORE 000017a6: JUMP 000017a7: JUMPDEST 000017a8: PUSH1 0x00 000017aa: DUP1 000017ab: MLOAD 000017ac: PUSH1 0x20 000017ae: PUSH2 0x2286 000017b1: DUP4 000017b2: CODECOPY 000017b3: DUP2 000017b4: MLOAD 000017b5: SWAP2 000017b6: MSTORE 000017b7: SLOAD 000017b8: PUSH1 0xff 000017ba: AND 000017bb: ISZERO 000017bc: PUSH2 0x05fa 000017bf: JUMPI 000017c0: PUSH1 0x40 000017c2: MLOAD 000017c3: PUSH4 0xd93c0665 000017c8: PUSH1 0xe0 000017ca: SHL 000017cb: DUP2 000017cc: MSTORE 000017cd: PUSH1 0x04 000017cf: ADD 000017d0: PUSH1 0x40 000017d2: MLOAD 000017d3: DUP1 000017d4: SWAP2 000017d5: SUB 000017d6: SWAP1 000017d7: REVERT 000017d8: JUMPDEST 000017d9: PUSH1 0x01 000017db: PUSH1 0x01 000017dd: PUSH1 0xa0 000017df: SHL 000017e0: SUB 000017e1: DUP5 000017e2: AND 000017e3: PUSH1 0x00 000017e5: SWAP1 000017e6: DUP2 000017e7: MSTORE 000017e8: PUSH1 0x04 000017ea: PUSH1 0x20 000017ec: MSTORE 000017ed: PUSH1 0x40 000017ef: SWAP1 000017f0: KECCAK256 000017f1: PUSH1 0x01 000017f3: ADD 000017f4: SLOAD 000017f5: PUSH1 0xff 000017f7: AND 000017f8: PUSH2 0x1854 000017fb: JUMPI 000017fc: PUSH1 0x40 000017fe: MLOAD 000017ff: PUSH3 0x461bcd 00001803: PUSH1 0xe5 00001805: SHL 00001806: DUP2 00001807: MSTORE 00001808: PUSH1 0x20 0000180a: PUSH1 0x04 0000180c: DUP3 0000180d: ADD 0000180e: MSTORE 0000180f: PUSH1 0x28 00001811: PUSH1 0x24 00001813: DUP3 00001814: ADD 00001815: MSTORE 00001816: PUSH32 0x4d7270634465706f7369743a207468697320746f6b656e206973206e6f742061 00001837: PUSH1 0x44 00001839: DUP3 0000183a: ADD 0000183b: MSTORE 0000183c: PUSH8 0x7661696c61626c65 00001845: PUSH1 0xc0 00001847: SHL 00001848: PUSH1 0x64 0000184a: DUP3 0000184b: ADD 0000184c: MSTORE 0000184d: PUSH1 0x84 0000184f: ADD 00001850: PUSH2 0x048e 00001853: JUMP 00001854: JUMPDEST 00001855: DUP3 00001856: PUSH2 0x185e 00001859: DUP6 0000185a: PUSH2 0x1b79 0000185d: JUMP 0000185e: JUMPDEST 0000185f: GT 00001860: ISZERO 00001861: PUSH2 0x18ac 00001864: JUMPI 00001865: PUSH1 0x40 00001867: MLOAD 00001868: PUSH3 0x461bcd 0000186c: PUSH1 0xe5 0000186e: SHL 0000186f: DUP2 00001870: MSTORE 00001871: PUSH1 0x20 00001873: PUSH1 0x04 00001875: DUP3 00001876: ADD 00001877: DUP2 00001878: SWAP1 00001879: MSTORE 0000187a: PUSH1 0x24 0000187c: DUP3 0000187d: ADD 0000187e: MSTORE 0000187f: PUSH32 0x4d7270634465706f7369743a20616d6f756e7420697320746f6f20736d616c6c 000018a0: PUSH1 0x44 000018a2: DUP3 000018a3: ADD 000018a4: MSTORE 000018a5: PUSH1 0x64 000018a7: ADD 000018a8: PUSH2 0x048e 000018ab: JUMP 000018ac: JUMPDEST 000018ad: PUSH2 0x18b8 000018b0: DUP5 000018b1: DUP4 000018b2: ADDRESS 000018b3: DUP7 000018b4: PUSH2 0x1bc2 000018b7: JUMP 000018b8: JUMPDEST 000018b9: PUSH1 0x40 000018bb: DUP1 000018bc: MLOAD 000018bd: PUSH1 0x01 000018bf: PUSH1 0x01 000018c1: PUSH1 0xa0 000018c3: SHL 000018c4: SUB 000018c5: DUP7 000018c6: DUP2 000018c7: AND 000018c8: DUP3 000018c9: MSTORE 000018ca: PUSH1 0x20 000018cc: DUP3 000018cd: ADD 000018ce: DUP7 000018cf: SWAP1 000018d0: MSTORE 000018d1: DUP4 000018d2: AND 000018d3: SWAP2 000018d4: PUSH32 0x54ef209e319f7d023f4f2c1d4b427c3844f7ef008d20a2104b1f20cb533a7fbf 000018f5: SWAP2 000018f6: ADD 000018f7: PUSH1 0x40 000018f9: MLOAD 000018fa: DUP1 000018fb: SWAP2 000018fc: SUB 000018fd: SWAP1 000018fe: LOG2 000018ff: POP 00001900: POP 00001901: POP 00001902: POP 00001903: JUMP 00001904: JUMPDEST 00001905: PUSH1 0x01 00001907: PUSH1 0x00 00001909: DUP1 0000190a: MLOAD 0000190b: PUSH1 0x20 0000190d: PUSH2 0x22a6 00001910: DUP4 00001911: CODECOPY 00001912: DUP2 00001913: MLOAD 00001914: SWAP2 00001915: MSTORE 00001916: SSTORE 00001917: JUMP 00001918: JUMPDEST 00001919: PUSH1 0x01 0000191b: PUSH1 0x01 0000191d: PUSH1 0xa0 0000191f: SHL 00001920: SUB 00001921: DUP2 00001922: AND 00001923: PUSH1 0x00 00001925: SWAP1 00001926: DUP2 00001927: MSTORE 00001928: PUSH1 0x04 0000192a: PUSH1 0x20 0000192c: MSTORE 0000192d: PUSH1 0x40 0000192f: DUP2 00001930: KECCAK256 00001931: PUSH1 0x01 00001933: ADD 00001934: SLOAD 00001935: PUSH1 0xff 00001937: AND 00001938: DUP1 00001939: PUSH2 0x103e 0000193c: JUMPI 0000193d: POP 0000193e: POP 0000193f: PUSH1 0x01 00001941: PUSH1 0x01 00001943: PUSH1 0xa0 00001945: SHL 00001946: SUB 00001947: AND 00001948: PUSH1 0x00 0000194a: SWAP1 0000194b: DUP2 0000194c: MSTORE 0000194d: PUSH1 0x04 0000194f: PUSH1 0x20 00001951: MSTORE 00001952: PUSH1 0x40 00001954: SWAP1 00001955: KECCAK256 00001956: SLOAD 00001957: ISZERO 00001958: ISZERO 00001959: SWAP1 0000195a: JUMP 0000195b: JUMPDEST 0000195c: PUSH1 0x40 0000195e: MLOAD 0000195f: PUSH1 0x01 00001961: PUSH1 0x01 00001963: PUSH1 0xa0 00001965: SHL 00001966: SUB 00001967: DUP4 00001968: DUP2 00001969: AND 0000196a: PUSH1 0x24 0000196c: DUP4 0000196d: ADD 0000196e: MSTORE 0000196f: PUSH1 0x44 00001971: DUP3 00001972: ADD 00001973: DUP4 00001974: SWAP1 00001975: MSTORE 00001976: PUSH2 0x0dd9 00001979: SWAP2 0000197a: DUP6 0000197b: SWAP2 0000197c: DUP3 0000197d: AND 0000197e: SWAP1 0000197f: PUSH4 0xa9059cbb 00001984: SWAP1 00001985: PUSH1 0x64 00001987: ADD 00001988: JUMPDEST 00001989: PUSH1 0x40 0000198b: MLOAD 0000198c: PUSH1 0x20 0000198e: DUP2 0000198f: DUP4 00001990: SUB 00001991: SUB 00001992: DUP2 00001993: MSTORE 00001994: SWAP1 00001995: PUSH1 0x40 00001997: MSTORE 00001998: SWAP2 00001999: POP 0000199a: PUSH1 0xe0 0000199c: SHL 0000199d: PUSH1 0x20 0000199f: DUP3 000019a0: ADD 000019a1: DUP1 000019a2: MLOAD 000019a3: PUSH1 0x01 000019a5: PUSH1 0x01 000019a7: PUSH1 0xe0 000019a9: SHL 000019aa: SUB 000019ab: DUP4 000019ac: DUP2 000019ad: DUP4 000019ae: AND 000019af: OR 000019b0: DUP4 000019b1: MSTORE 000019b2: POP 000019b3: POP 000019b4: POP 000019b5: POP 000019b6: PUSH2 0x1c01 000019b9: JUMP 000019ba: JUMPDEST 000019bb: CALLER 000019bc: PUSH2 0x19ec 000019bf: PUSH32 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300 000019e0: SLOAD 000019e1: PUSH1 0x01 000019e3: PUSH1 0x01 000019e5: PUSH1 0xa0 000019e7: SHL 000019e8: SUB 000019e9: AND 000019ea: SWAP1 000019eb: JUMP 000019ec: JUMPDEST 000019ed: PUSH1 0x01 000019ef: PUSH1 0x01 000019f1: PUSH1 0xa0 000019f3: SHL 000019f4: SUB 000019f5: AND 000019f6: EQ 000019f7: PUSH2 0x05fa 000019fa: JUMPI 000019fb: PUSH1 0x40 000019fd: MLOAD 000019fe: PUSH4 0x118cdaa7 00001a03: PUSH1 0xe0 00001a05: SHL 00001a06: DUP2 00001a07: MSTORE 00001a08: CALLER 00001a09: PUSH1 0x04 00001a0b: DUP3 00001a0c: ADD 00001a0d: MSTORE 00001a0e: PUSH1 0x24 00001a10: ADD 00001a11: PUSH2 0x048e 00001a14: JUMP 00001a15: JUMPDEST 00001a16: PUSH32 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300 00001a37: DUP1 00001a38: SLOAD 00001a39: PUSH1 0x01 00001a3b: PUSH1 0x01 00001a3d: PUSH1 0xa0 00001a3f: SHL 00001a40: SUB 00001a41: NOT 00001a42: DUP2 00001a43: AND 00001a44: PUSH1 0x01 00001a46: PUSH1 0x01 00001a48: PUSH1 0xa0 00001a4a: SHL 00001a4b: SUB 00001a4c: DUP5 00001a4d: DUP2 00001a4e: AND 00001a4f: SWAP2 00001a50: DUP3 00001a51: OR 00001a52: DUP5 00001a53: SSTORE 00001a54: PUSH1 0x40 00001a56: MLOAD 00001a57: SWAP3 00001a58: AND 00001a59: SWAP2 00001a5a: DUP3 00001a5b: SWAP1 00001a5c: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001a7d: SWAP1 00001a7e: PUSH1 0x00 00001a80: SWAP1 00001a81: LOG3 00001a82: POP 00001a83: POP 00001a84: POP 00001a85: JUMP 00001a86: JUMPDEST 00001a87: PUSH2 0x1a8e 00001a8a: PUSH2 0x17a7 00001a8d: JUMP 00001a8e: JUMPDEST 00001a8f: PUSH1 0x00 00001a91: DUP1 00001a92: MLOAD 00001a93: PUSH1 0x20 00001a95: PUSH2 0x2286 00001a98: DUP4 00001a99: CODECOPY 00001a9a: DUP2 00001a9b: MLOAD 00001a9c: SWAP2 00001a9d: MSTORE 00001a9e: DUP1 00001a9f: SLOAD 00001aa0: PUSH1 0xff 00001aa2: NOT 00001aa3: AND 00001aa4: PUSH1 0x01 00001aa6: OR 00001aa7: DUP2 00001aa8: SSTORE 00001aa9: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 00001aca: CALLER 00001acb: PUSH2 0x1757 00001ace: JUMP 00001acf: JUMPDEST 00001ad0: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 00001af1: SLOAD 00001af2: PUSH1 0x01 00001af4: PUSH1 0x40 00001af6: SHL 00001af7: SWAP1 00001af8: DIV 00001af9: PUSH1 0xff 00001afb: AND 00001afc: PUSH2 0x05fa 00001aff: JUMPI 00001b00: PUSH1 0x40 00001b02: MLOAD 00001b03: PUSH4 0x1afcd79f 00001b08: PUSH1 0xe3 00001b0a: SHL 00001b0b: DUP2 00001b0c: MSTORE 00001b0d: PUSH1 0x04 00001b0f: ADD 00001b10: PUSH1 0x40 00001b12: MLOAD 00001b13: DUP1 00001b14: SWAP2 00001b15: SUB 00001b16: SWAP1 00001b17: REVERT 00001b18: JUMPDEST 00001b19: PUSH2 0x1b20 00001b1c: PUSH2 0x1acf 00001b1f: JUMP 00001b20: JUMPDEST 00001b21: PUSH1 0x00 00001b23: DUP1 00001b24: MLOAD 00001b25: PUSH1 0x20 00001b27: PUSH2 0x2286 00001b2a: DUP4 00001b2b: CODECOPY 00001b2c: DUP2 00001b2d: MLOAD 00001b2e: SWAP2 00001b2f: MSTORE 00001b30: DUP1 00001b31: SLOAD 00001b32: PUSH1 0xff 00001b34: NOT 00001b35: AND 00001b36: SWAP1 00001b37: SSTORE 00001b38: JUMP 00001b39: JUMPDEST 00001b3a: PUSH2 0x1904 00001b3d: PUSH2 0x1acf 00001b40: JUMP 00001b41: JUMPDEST 00001b42: PUSH2 0x12cc 00001b45: PUSH2 0x1acf 00001b48: JUMP 00001b49: JUMPDEST 00001b4a: PUSH1 0x00 00001b4c: DUP1 00001b4d: MLOAD 00001b4e: PUSH1 0x20 00001b50: PUSH2 0x2286 00001b53: DUP4 00001b54: CODECOPY 00001b55: DUP2 00001b56: MLOAD 00001b57: SWAP2 00001b58: MSTORE 00001b59: SLOAD 00001b5a: PUSH1 0xff 00001b5c: AND 00001b5d: PUSH2 0x05fa 00001b60: JUMPI 00001b61: PUSH1 0x40 00001b63: MLOAD 00001b64: PUSH4 0x8dfc202b 00001b69: PUSH1 0xe0 00001b6b: SHL 00001b6c: DUP2 00001b6d: MSTORE 00001b6e: PUSH1 0x04 00001b70: ADD 00001b71: PUSH1 0x40 00001b73: MLOAD 00001b74: DUP1 00001b75: SWAP2 00001b76: SUB 00001b77: SWAP1 00001b78: REVERT 00001b79: JUMPDEST 00001b7a: PUSH1 0x01 00001b7c: PUSH1 0x01 00001b7e: PUSH1 0xa0 00001b80: SHL 00001b81: SUB 00001b82: DUP2 00001b83: AND 00001b84: PUSH1 0x00 00001b86: SWAP1 00001b87: DUP2 00001b88: MSTORE 00001b89: PUSH1 0x04 00001b8b: PUSH1 0x20 00001b8d: MSTORE 00001b8e: PUSH1 0x40 00001b90: DUP2 00001b91: KECCAK256 00001b92: PUSH1 0x01 00001b94: ADD 00001b95: SLOAD 00001b96: PUSH1 0xff 00001b98: AND 00001b99: ISZERO 00001b9a: PUSH2 0x1bb9 00001b9d: JUMPI 00001b9e: POP 00001b9f: PUSH1 0x01 00001ba1: PUSH1 0x01 00001ba3: PUSH1 0xa0 00001ba5: SHL 00001ba6: SUB 00001ba7: AND 00001ba8: PUSH1 0x00 00001baa: SWAP1 00001bab: DUP2 00001bac: MSTORE 00001bad: PUSH1 0x04 00001baf: PUSH1 0x20 00001bb1: MSTORE 00001bb2: PUSH1 0x40 00001bb4: SWAP1 00001bb5: KECCAK256 00001bb6: SLOAD 00001bb7: SWAP1 00001bb8: JUMP 00001bb9: JUMPDEST 00001bba: POP 00001bbb: PUSH1 0x00 00001bbd: NOT 00001bbe: SWAP2 00001bbf: SWAP1 00001bc0: POP 00001bc1: JUMP 00001bc2: JUMPDEST 00001bc3: PUSH1 0x40 00001bc5: MLOAD 00001bc6: PUSH1 0x01 00001bc8: PUSH1 0x01 00001bca: PUSH1 0xa0 00001bcc: SHL 00001bcd: SUB 00001bce: DUP5 00001bcf: DUP2 00001bd0: AND 00001bd1: PUSH1 0x24 00001bd3: DUP4 00001bd4: ADD 00001bd5: MSTORE 00001bd6: DUP4 00001bd7: DUP2 00001bd8: AND 00001bd9: PUSH1 0x44 00001bdb: DUP4 00001bdc: ADD 00001bdd: MSTORE 00001bde: PUSH1 0x64 00001be0: DUP3 00001be1: ADD 00001be2: DUP4 00001be3: SWAP1 00001be4: MSTORE 00001be5: PUSH2 0x1bfb 00001be8: SWAP2 00001be9: DUP7 00001bea: SWAP2 00001beb: DUP3 00001bec: AND 00001bed: SWAP1 00001bee: PUSH4 0x23b872dd 00001bf3: SWAP1 00001bf4: PUSH1 0x84 00001bf6: ADD 00001bf7: PUSH2 0x1988 00001bfa: JUMP 00001bfb: JUMPDEST 00001bfc: POP 00001bfd: POP 00001bfe: POP 00001bff: POP 00001c00: JUMP 00001c01: JUMPDEST 00001c02: PUSH1 0x00 00001c04: PUSH2 0x1c16 00001c07: PUSH1 0x01 00001c09: PUSH1 0x01 00001c0b: PUSH1 0xa0 00001c0d: SHL 00001c0e: SUB 00001c0f: DUP5 00001c10: AND 00001c11: DUP4 00001c12: PUSH2 0x1c64 00001c15: JUMP 00001c16: JUMPDEST 00001c17: SWAP1 00001c18: POP 00001c19: DUP1 00001c1a: MLOAD 00001c1b: PUSH1 0x00 00001c1d: EQ 00001c1e: ISZERO 00001c1f: DUP1 00001c20: ISZERO 00001c21: PUSH2 0x1c3b 00001c24: JUMPI 00001c25: POP 00001c26: DUP1 00001c27: DUP1 00001c28: PUSH1 0x20 00001c2a: ADD 00001c2b: SWAP1 00001c2c: MLOAD 00001c2d: DUP2 00001c2e: ADD 00001c2f: SWAP1 00001c30: PUSH2 0x1c39 00001c33: SWAP2 00001c34: SWAP1 00001c35: PUSH2 0x2219 00001c38: JUMP 00001c39: JUMPDEST 00001c3a: ISZERO 00001c3b: JUMPDEST 00001c3c: ISZERO 00001c3d: PUSH2 0x0dd9 00001c40: JUMPI 00001c41: PUSH1 0x40 00001c43: MLOAD 00001c44: PUSH4 0x5274afe7 00001c49: PUSH1 0xe0 00001c4b: SHL 00001c4c: DUP2 00001c4d: MSTORE 00001c4e: PUSH1 0x01 00001c50: PUSH1 0x01 00001c52: PUSH1 0xa0 00001c54: SHL 00001c55: SUB 00001c56: DUP5 00001c57: AND 00001c58: PUSH1 0x04 00001c5a: DUP3 00001c5b: ADD 00001c5c: MSTORE 00001c5d: PUSH1 0x24 00001c5f: ADD 00001c60: PUSH2 0x048e 00001c63: JUMP 00001c64: JUMPDEST 00001c65: PUSH1 0x60 00001c67: PUSH2 0x1c72 00001c6a: DUP4 00001c6b: DUP4 00001c6c: PUSH1 0x00 00001c6e: PUSH2 0x1c79 00001c71: JUMP 00001c72: JUMPDEST 00001c73: SWAP4 00001c74: SWAP3 00001c75: POP 00001c76: POP 00001c77: POP 00001c78: JUMP 00001c79: JUMPDEST 00001c7a: PUSH1 0x60 00001c7c: DUP2 00001c7d: SELFBALANCE 00001c7e: LT 00001c7f: ISZERO 00001c80: PUSH2 0x1c9e 00001c83: JUMPI 00001c84: PUSH1 0x40 00001c86: MLOAD 00001c87: PUSH4 0xcd786059 00001c8c: PUSH1 0xe0 00001c8e: SHL 00001c8f: DUP2 00001c90: MSTORE 00001c91: ADDRESS 00001c92: PUSH1 0x04 00001c94: DUP3 00001c95: ADD 00001c96: MSTORE 00001c97: PUSH1 0x24 00001c99: ADD 00001c9a: PUSH2 0x048e 00001c9d: JUMP 00001c9e: JUMPDEST 00001c9f: PUSH1 0x00 00001ca1: DUP1 00001ca2: DUP6 00001ca3: PUSH1 0x01 00001ca5: PUSH1 0x01 00001ca7: PUSH1 0xa0 00001ca9: SHL 00001caa: SUB 00001cab: AND 00001cac: DUP5 00001cad: DUP7 00001cae: PUSH1 0x40 00001cb0: MLOAD 00001cb1: PUSH2 0x1cba 00001cb4: SWAP2 00001cb5: SWAP1 00001cb6: PUSH2 0x2236 00001cb9: JUMP 00001cba: JUMPDEST 00001cbb: PUSH1 0x00 00001cbd: PUSH1 0x40 00001cbf: MLOAD 00001cc0: DUP1 00001cc1: DUP4 00001cc2: SUB 00001cc3: DUP2 00001cc4: DUP6 00001cc5: DUP8 00001cc6: GAS 00001cc7: CALL 00001cc8: SWAP3 00001cc9: POP 00001cca: POP 00001ccb: POP 00001ccc: RETURNDATASIZE 00001ccd: DUP1 00001cce: PUSH1 0x00 00001cd0: DUP2 00001cd1: EQ 00001cd2: PUSH2 0x1cf7 00001cd5: JUMPI 00001cd6: PUSH1 0x40 00001cd8: MLOAD 00001cd9: SWAP2 00001cda: POP 00001cdb: PUSH1 0x1f 00001cdd: NOT 00001cde: PUSH1 0x3f 00001ce0: RETURNDATASIZE 00001ce1: ADD 00001ce2: AND 00001ce3: DUP3 00001ce4: ADD 00001ce5: PUSH1 0x40 00001ce7: MSTORE 00001ce8: RETURNDATASIZE 00001ce9: DUP3 00001cea: MSTORE 00001ceb: RETURNDATASIZE 00001cec: PUSH1 0x00 00001cee: PUSH1 0x20 00001cf0: DUP5 00001cf1: ADD 00001cf2: RETURNDATACOPY 00001cf3: PUSH2 0x1cfc 00001cf6: JUMP 00001cf7: JUMPDEST 00001cf8: PUSH1 0x60 00001cfa: SWAP2 00001cfb: POP 00001cfc: JUMPDEST 00001cfd: POP 00001cfe: SWAP2 00001cff: POP 00001d00: SWAP2 00001d01: POP 00001d02: PUSH2 0x1d0c 00001d05: DUP7 00001d06: DUP4 00001d07: DUP4 00001d08: PUSH2 0x1d16 00001d0b: JUMP 00001d0c: JUMPDEST 00001d0d: SWAP7 00001d0e: SWAP6 00001d0f: POP 00001d10: POP 00001d11: POP 00001d12: POP 00001d13: POP 00001d14: POP 00001d15: JUMP 00001d16: JUMPDEST 00001d17: PUSH1 0x60 00001d19: DUP3 00001d1a: PUSH2 0x1d2b 00001d1d: JUMPI 00001d1e: PUSH2 0x1d26 00001d21: DUP3 00001d22: PUSH2 0x1d72 00001d25: JUMP 00001d26: JUMPDEST 00001d27: PUSH2 0x1c72 00001d2a: JUMP 00001d2b: JUMPDEST 00001d2c: DUP2 00001d2d: MLOAD 00001d2e: ISZERO 00001d2f: DUP1 00001d30: ISZERO 00001d31: PUSH2 0x1d42 00001d34: JUMPI 00001d35: POP 00001d36: PUSH1 0x01 00001d38: PUSH1 0x01 00001d3a: PUSH1 0xa0 00001d3c: SHL 00001d3d: SUB 00001d3e: DUP5 00001d3f: AND 00001d40: EXTCODESIZE 00001d41: ISZERO 00001d42: JUMPDEST 00001d43: ISZERO 00001d44: PUSH2 0x1d6b 00001d47: JUMPI 00001d48: PUSH1 0x40 00001d4a: MLOAD 00001d4b: PUSH4 0x9996b315 00001d50: PUSH1 0xe0 00001d52: SHL 00001d53: DUP2 00001d54: MSTORE 00001d55: PUSH1 0x01 00001d57: PUSH1 0x01 00001d59: PUSH1 0xa0 00001d5b: SHL 00001d5c: SUB 00001d5d: DUP6 00001d5e: AND 00001d5f: PUSH1 0x04 00001d61: DUP3 00001d62: ADD 00001d63: MSTORE 00001d64: PUSH1 0x24 00001d66: ADD 00001d67: PUSH2 0x048e 00001d6a: JUMP 00001d6b: JUMPDEST 00001d6c: POP 00001d6d: DUP1 00001d6e: PUSH2 0x1c72 00001d71: JUMP 00001d72: JUMPDEST 00001d73: DUP1 00001d74: MLOAD 00001d75: ISZERO 00001d76: PUSH2 0x1d82 00001d79: JUMPI 00001d7a: DUP1 00001d7b: MLOAD 00001d7c: DUP1 00001d7d: DUP3 00001d7e: PUSH1 0x20 00001d80: ADD 00001d81: REVERT 00001d82: JUMPDEST 00001d83: PUSH1 0x40 00001d85: MLOAD 00001d86: PUSH4 0x0a12f521 00001d8b: PUSH1 0xe1 00001d8d: SHL 00001d8e: DUP2 00001d8f: MSTORE 00001d90: PUSH1 0x04 00001d92: ADD 00001d93: PUSH1 0x40 00001d95: MLOAD 00001d96: DUP1 00001d97: SWAP2 00001d98: SUB 00001d99: SWAP1 00001d9a: REVERT 00001d9b: JUMPDEST 00001d9c: DUP1 00001d9d: CALLDATALOAD 00001d9e: PUSH1 0x01 00001da0: PUSH1 0x01 00001da2: PUSH1 0xa0 00001da4: SHL 00001da5: SUB 00001da6: DUP2 00001da7: AND 00001da8: DUP2 00001da9: EQ 00001daa: PUSH2 0x1db2 00001dad: JUMPI 00001dae: PUSH1 0x00 00001db0: DUP1 00001db1: REVERT 00001db2: JUMPDEST 00001db3: SWAP2 00001db4: SWAP1 00001db5: POP 00001db6: JUMP 00001db7: JUMPDEST 00001db8: PUSH1 0x00 00001dba: DUP1 00001dbb: DUP4 00001dbc: PUSH1 0x1f 00001dbe: DUP5 00001dbf: ADD 00001dc0: SLT 00001dc1: PUSH2 0x1dc9 00001dc4: JUMPI 00001dc5: PUSH1 0x00 00001dc7: DUP1 00001dc8: REVERT 00001dc9: JUMPDEST 00001dca: POP 00001dcb: DUP2 00001dcc: CALLDATALOAD 00001dcd: PUSH8 0xffffffffffffffff 00001dd6: DUP2 00001dd7: GT 00001dd8: ISZERO 00001dd9: PUSH2 0x1de1 00001ddc: JUMPI 00001ddd: PUSH1 0x00 00001ddf: DUP1 00001de0: REVERT 00001de1: JUMPDEST 00001de2: PUSH1 0x20 00001de4: DUP4 00001de5: ADD 00001de6: SWAP2 00001de7: POP 00001de8: DUP4 00001de9: PUSH1 0x20 00001deb: DUP3 00001dec: PUSH1 0x05 00001dee: SHL 00001def: DUP6 00001df0: ADD 00001df1: ADD 00001df2: GT 00001df3: ISZERO 00001df4: PUSH2 0x1dfc 00001df7: JUMPI 00001df8: PUSH1 0x00 00001dfa: DUP1 00001dfb: REVERT 00001dfc: JUMPDEST 00001dfd: SWAP3 00001dfe: POP 00001dff: SWAP3 00001e00: SWAP1 00001e01: POP 00001e02: JUMP 00001e03: JUMPDEST 00001e04: PUSH1 0x00 00001e06: DUP1 00001e07: PUSH1 0x00 00001e09: DUP1 00001e0a: PUSH1 0x00 00001e0c: DUP1 00001e0d: PUSH1 0x00 00001e0f: PUSH1 0xa0 00001e11: DUP9 00001e12: DUP11 00001e13: SUB 00001e14: SLT 00001e15: ISZERO 00001e16: PUSH2 0x1e1e 00001e19: JUMPI 00001e1a: PUSH1 0x00 00001e1c: DUP1 00001e1d: REVERT 00001e1e: JUMPDEST 00001e1f: PUSH2 0x1e27 00001e22: DUP9 00001e23: PUSH2 0x1d9b 00001e26: JUMP 00001e27: JUMPDEST 00001e28: SWAP7 00001e29: POP 00001e2a: PUSH2 0x1e35 00001e2d: PUSH1 0x20 00001e2f: DUP10 00001e30: ADD 00001e31: PUSH2 0x1d9b 00001e34: JUMP 00001e35: JUMPDEST 00001e36: SWAP6 00001e37: POP 00001e38: PUSH2 0x1e43 00001e3b: PUSH1 0x40 00001e3d: DUP10 00001e3e: ADD 00001e3f: PUSH2 0x1d9b 00001e42: JUMP 00001e43: JUMPDEST 00001e44: SWAP5 00001e45: POP 00001e46: PUSH1 0x60 00001e48: DUP9 00001e49: ADD 00001e4a: CALLDATALOAD 00001e4b: PUSH8 0xffffffffffffffff 00001e54: DUP1 00001e55: DUP3 00001e56: GT 00001e57: ISZERO 00001e58: PUSH2 0x1e60 00001e5b: JUMPI 00001e5c: PUSH1 0x00 00001e5e: DUP1 00001e5f: REVERT 00001e60: JUMPDEST 00001e61: PUSH2 0x1e6c 00001e64: DUP12 00001e65: DUP4 00001e66: DUP13 00001e67: ADD 00001e68: PUSH2 0x1db7 00001e6b: JUMP 00001e6c: JUMPDEST 00001e6d: SWAP1 00001e6e: SWAP7 00001e6f: POP 00001e70: SWAP5 00001e71: POP 00001e72: PUSH1 0x80 00001e74: DUP11 00001e75: ADD 00001e76: CALLDATALOAD 00001e77: SWAP2 00001e78: POP 00001e79: DUP1 00001e7a: DUP3 00001e7b: GT 00001e7c: ISZERO 00001e7d: PUSH2 0x1e85 00001e80: JUMPI 00001e81: PUSH1 0x00 00001e83: DUP1 00001e84: REVERT 00001e85: JUMPDEST 00001e86: POP 00001e87: PUSH2 0x1e92 00001e8a: DUP11 00001e8b: DUP3 00001e8c: DUP12 00001e8d: ADD 00001e8e: PUSH2 0x1db7 00001e91: JUMP 00001e92: JUMPDEST 00001e93: SWAP9 00001e94: SWAP12 00001e95: SWAP8 00001e96: SWAP11 00001e97: POP 00001e98: SWAP6 00001e99: SWAP9 00001e9a: POP 00001e9b: SWAP4 00001e9c: SWAP7 00001e9d: SWAP3 00001e9e: SWAP6 00001e9f: SWAP3 00001ea0: SWAP4 00001ea1: POP 00001ea2: POP 00001ea3: POP 00001ea4: JUMP 00001ea5: JUMPDEST 00001ea6: PUSH1 0x00 00001ea8: PUSH1 0x20 00001eaa: DUP3 00001eab: DUP5 00001eac: SUB 00001ead: SLT 00001eae: ISZERO 00001eaf: PUSH2 0x1eb7 00001eb2: JUMPI 00001eb3: PUSH1 0x00 00001eb5: DUP1 00001eb6: REVERT 00001eb7: JUMPDEST 00001eb8: PUSH2 0x1c72 00001ebb: DUP3 00001ebc: PUSH2 0x1d9b 00001ebf: JUMP 00001ec0: JUMPDEST 00001ec1: PUSH1 0x00 00001ec3: DUP1 00001ec4: PUSH1 0x40 00001ec6: DUP4 00001ec7: DUP6 00001ec8: SUB 00001ec9: SLT 00001eca: ISZERO 00001ecb: PUSH2 0x1ed3 00001ece: JUMPI 00001ecf: PUSH1 0x00 00001ed1: DUP1 00001ed2: REVERT 00001ed3: JUMPDEST 00001ed4: PUSH2 0x1edc 00001ed7: DUP4 00001ed8: PUSH2 0x1d9b 00001edb: JUMP 00001edc: JUMPDEST 00001edd: SWAP5 00001ede: PUSH1 0x20 00001ee0: SWAP4 00001ee1: SWAP1 00001ee2: SWAP4 00001ee3: ADD 00001ee4: CALLDATALOAD 00001ee5: SWAP4 00001ee6: POP 00001ee7: POP 00001ee8: POP 00001ee9: JUMP 00001eea: JUMPDEST 00001eeb: PUSH1 0x00 00001eed: DUP1 00001eee: PUSH1 0x00 00001ef0: DUP1 00001ef1: PUSH1 0x00 00001ef3: PUSH1 0x60 00001ef5: DUP7 00001ef6: DUP9 00001ef7: SUB 00001ef8: SLT 00001ef9: ISZERO 00001efa: PUSH2 0x1f02 00001efd: JUMPI 00001efe: PUSH1 0x00 00001f00: DUP1 00001f01: REVERT 00001f02: JUMPDEST 00001f03: DUP6 00001f04: CALLDATALOAD 00001f05: PUSH8 0xffffffffffffffff 00001f0e: DUP1 00001f0f: DUP3 00001f10: GT 00001f11: ISZERO 00001f12: PUSH2 0x1f1a 00001f15: JUMPI 00001f16: PUSH1 0x00 00001f18: DUP1 00001f19: REVERT 00001f1a: JUMPDEST 00001f1b: PUSH2 0x1f26 00001f1e: DUP10 00001f1f: DUP4 00001f20: DUP11 00001f21: ADD 00001f22: PUSH2 0x1db7 00001f25: JUMP 00001f26: JUMPDEST 00001f27: SWAP1 00001f28: SWAP8 00001f29: POP 00001f2a: SWAP6 00001f2b: POP 00001f2c: PUSH1 0x20 00001f2e: DUP9 00001f2f: ADD 00001f30: CALLDATALOAD 00001f31: SWAP2 00001f32: POP 00001f33: DUP1 00001f34: DUP3 00001f35: GT 00001f36: ISZERO 00001f37: PUSH2 0x1f3f 00001f3a: JUMPI 00001f3b: PUSH1 0x00 00001f3d: DUP1 00001f3e: REVERT 00001f3f: JUMPDEST 00001f40: POP 00001f41: PUSH2 0x1f4c 00001f44: DUP9 00001f45: DUP3 00001f46: DUP10 00001f47: ADD 00001f48: PUSH2 0x1db7 00001f4b: JUMP 00001f4c: JUMPDEST 00001f4d: SWAP1 00001f4e: SWAP5 00001f4f: POP 00001f50: SWAP3 00001f51: POP 00001f52: PUSH2 0x1f5f 00001f55: SWAP1 00001f56: POP 00001f57: PUSH1 0x40 00001f59: DUP8 00001f5a: ADD 00001f5b: PUSH2 0x1d9b 00001f5e: JUMP 00001f5f: JUMPDEST 00001f60: SWAP1 00001f61: POP 00001f62: SWAP3 00001f63: SWAP6 00001f64: POP 00001f65: SWAP3 00001f66: SWAP6 00001f67: SWAP1 00001f68: SWAP4 00001f69: POP 00001f6a: JUMP 00001f6b: JUMPDEST 00001f6c: DUP1 00001f6d: ISZERO 00001f6e: ISZERO 00001f6f: DUP2 00001f70: EQ 00001f71: PUSH2 0x12ff 00001f74: JUMPI 00001f75: PUSH1 0x00 00001f77: DUP1 00001f78: REVERT 00001f79: JUMPDEST 00001f7a: PUSH1 0x00 00001f7c: DUP1 00001f7d: PUSH1 0x00 00001f7f: PUSH1 0x60 00001f81: DUP5 00001f82: DUP7 00001f83: SUB 00001f84: SLT 00001f85: ISZERO 00001f86: PUSH2 0x1f8e 00001f89: JUMPI 00001f8a: PUSH1 0x00 00001f8c: DUP1 00001f8d: REVERT 00001f8e: JUMPDEST 00001f8f: PUSH2 0x1f97 00001f92: DUP5 00001f93: PUSH2 0x1d9b 00001f96: JUMP 00001f97: JUMPDEST 00001f98: SWAP3 00001f99: POP 00001f9a: PUSH1 0x20 00001f9c: DUP5 00001f9d: ADD 00001f9e: CALLDATALOAD 00001f9f: SWAP2 00001fa0: POP 00001fa1: PUSH1 0x40 00001fa3: DUP5 00001fa4: ADD 00001fa5: CALLDATALOAD 00001fa6: PUSH2 0x1fae 00001fa9: DUP2 00001faa: PUSH2 0x1f6b 00001fad: JUMP 00001fae: JUMPDEST 00001faf: DUP1 00001fb0: SWAP2 00001fb1: POP 00001fb2: POP 00001fb3: SWAP3 00001fb4: POP 00001fb5: SWAP3 00001fb6: POP 00001fb7: SWAP3 00001fb8: JUMP 00001fb9: JUMPDEST 00001fba: PUSH1 0x20 00001fbc: DUP1 00001fbd: DUP3 00001fbe: MSTORE 00001fbf: DUP3 00001fc0: MLOAD 00001fc1: DUP3 00001fc2: DUP3 00001fc3: ADD 00001fc4: DUP2 00001fc5: SWAP1 00001fc6: MSTORE 00001fc7: PUSH1 0x00 00001fc9: SWAP2 00001fca: SWAP1 00001fcb: PUSH1 0x40 00001fcd: SWAP1 00001fce: DUP2 00001fcf: DUP6 00001fd0: ADD 00001fd1: SWAP1 00001fd2: DUP7 00001fd3: DUP5 00001fd4: ADD 00001fd5: DUP6 00001fd6: JUMPDEST 00001fd7: DUP3 00001fd8: DUP2 00001fd9: LT 00001fda: ISZERO 00001fdb: PUSH2 0x2010 00001fde: JUMPI 00001fdf: DUP2 00001fe0: MLOAD 00001fe1: DUP1 00001fe2: MLOAD 00001fe3: PUSH1 0x01 00001fe5: PUSH1 0x01 00001fe7: PUSH1 0xa0 00001fe9: SHL 00001fea: SUB 00001feb: AND 00001fec: DUP6 00001fed: MSTORE 00001fee: DUP7 00001fef: DUP2 00001ff0: ADD 00001ff1: MLOAD 00001ff2: DUP8 00001ff3: DUP7 00001ff4: ADD 00001ff5: MSTORE 00001ff6: DUP6 00001ff7: ADD 00001ff8: MLOAD 00001ff9: ISZERO 00001ffa: ISZERO 00001ffb: DUP6 00001ffc: DUP6 00001ffd: ADD 00001ffe: MSTORE 00001fff: PUSH1 0x60 00002001: SWAP1 00002002: SWAP4 00002003: ADD 00002004: SWAP3 00002005: SWAP1 00002006: DUP6 00002007: ADD 00002008: SWAP1 00002009: PUSH1 0x01 0000200b: ADD 0000200c: PUSH2 0x1fd6 0000200f: JUMP 00002010: JUMPDEST 00002011: POP 00002012: SWAP2 00002013: SWAP8 00002014: SWAP7 00002015: POP 00002016: POP 00002017: POP 00002018: POP 00002019: POP 0000201a: POP 0000201b: POP 0000201c: JUMP 0000201d: JUMPDEST 0000201e: PUSH1 0x00 00002020: DUP1 00002021: PUSH1 0x00 00002023: PUSH1 0x60 00002025: DUP5 00002026: DUP7 00002027: SUB 00002028: SLT 00002029: ISZERO 0000202a: PUSH2 0x2032 0000202d: JUMPI 0000202e: PUSH1 0x00 00002030: DUP1 00002031: REVERT 00002032: JUMPDEST 00002033: PUSH2 0x203b 00002036: DUP5 00002037: PUSH2 0x1d9b 0000203a: JUMP 0000203b: JUMPDEST 0000203c: SWAP3 0000203d: POP 0000203e: PUSH1 0x20 00002040: DUP5 00002041: ADD 00002042: CALLDATALOAD 00002043: SWAP2 00002044: POP 00002045: PUSH2 0x2050 00002048: PUSH1 0x40 0000204a: DUP6 0000204b: ADD 0000204c: PUSH2 0x1d9b 0000204f: JUMP 00002050: JUMPDEST 00002051: SWAP1 00002052: POP 00002053: SWAP3 00002054: POP 00002055: SWAP3 00002056: POP 00002057: SWAP3 00002058: JUMP 00002059: JUMPDEST 0000205a: PUSH1 0x20 0000205c: DUP1 0000205d: DUP3 0000205e: MSTORE 0000205f: PUSH1 0x29 00002061: SWAP1 00002062: DUP3 00002063: ADD 00002064: MSTORE 00002065: PUSH32 0x4d7270634465706f7369743a206f6e6c7920636f6e73656e737573206f722067 00002086: PUSH1 0x40 00002088: DUP3 00002089: ADD 0000208a: MSTORE 0000208b: PUSH9 0x6f7665726e616e6365 00002095: PUSH1 0xb8 00002097: SHL 00002098: PUSH1 0x60 0000209a: DUP3 0000209b: ADD 0000209c: MSTORE 0000209d: PUSH1 0x80 0000209f: ADD 000020a0: SWAP1 000020a1: JUMP 000020a2: JUMPDEST 000020a3: PUSH1 0x20 000020a5: DUP1 000020a6: DUP3 000020a7: MSTORE 000020a8: PUSH1 0x24 000020aa: SWAP1 000020ab: DUP3 000020ac: ADD 000020ad: MSTORE 000020ae: PUSH32 0x4d7270634465706f7369743a207468697320746f6b656e206973206e6f74206b 000020cf: PUSH1 0x40 000020d1: DUP3 000020d2: ADD 000020d3: MSTORE 000020d4: PUSH4 0x3737bbb7 000020d9: PUSH1 0xe1 000020db: SHL 000020dc: PUSH1 0x60 000020de: DUP3 000020df: ADD 000020e0: MSTORE 000020e1: PUSH1 0x80 000020e3: ADD 000020e4: SWAP1 000020e5: JUMP 000020e6: JUMPDEST 000020e7: PUSH1 0x01 000020e9: PUSH1 0x01 000020eb: PUSH1 0xa0 000020ed: SHL 000020ee: SUB 000020ef: DUP4 000020f0: AND 000020f1: DUP2 000020f2: MSTORE 000020f3: PUSH1 0x40 000020f5: DUP2 000020f6: ADD 000020f7: PUSH1 0x05 000020f9: DUP4 000020fa: LT 000020fb: PUSH2 0x2114 000020fe: JUMPI 000020ff: PUSH4 0x4e487b71 00002104: PUSH1 0xe0 00002106: SHL 00002107: PUSH1 0x00 00002109: MSTORE 0000210a: PUSH1 0x21 0000210c: PUSH1 0x04 0000210e: MSTORE 0000210f: PUSH1 0x24 00002111: PUSH1 0x00 00002113: REVERT 00002114: JUMPDEST 00002115: DUP3 00002116: PUSH1 0x20 00002118: DUP4 00002119: ADD 0000211a: MSTORE 0000211b: SWAP4 0000211c: SWAP3 0000211d: POP 0000211e: POP 0000211f: POP 00002120: JUMP 00002121: JUMPDEST 00002122: PUSH4 0x4e487b71 00002127: PUSH1 0xe0 00002129: SHL 0000212a: PUSH1 0x00 0000212c: MSTORE 0000212d: PUSH1 0x32 0000212f: PUSH1 0x04 00002131: MSTORE 00002132: PUSH1 0x24 00002134: PUSH1 0x00 00002136: REVERT 00002137: JUMPDEST 00002138: PUSH1 0x00 0000213a: PUSH1 0x20 0000213c: DUP3 0000213d: DUP5 0000213e: SUB 0000213f: SLT 00002140: ISZERO 00002141: PUSH2 0x2149 00002144: JUMPI 00002145: PUSH1 0x00 00002147: DUP1 00002148: REVERT 00002149: JUMPDEST 0000214a: POP 0000214b: MLOAD 0000214c: SWAP2 0000214d: SWAP1 0000214e: POP 0000214f: JUMP 00002150: JUMPDEST 00002151: PUSH1 0x40 00002153: DUP1 00002154: DUP3 00002155: MSTORE 00002156: DUP2 00002157: ADD 00002158: DUP5 00002159: SWAP1 0000215a: MSTORE 0000215b: PUSH1 0x00 0000215d: DUP6 0000215e: PUSH1 0x60 00002160: DUP4 00002161: ADD 00002162: DUP3 00002163: JUMPDEST 00002164: DUP8 00002165: DUP2 00002166: LT 00002167: ISZERO 00002168: PUSH2 0x2191 0000216b: JUMPI 0000216c: PUSH1 0x01 0000216e: PUSH1 0x01 00002170: PUSH1 0xa0 00002172: SHL 00002173: SUB 00002174: PUSH2 0x217c 00002177: DUP5 00002178: PUSH2 0x1d9b 0000217b: JUMP 0000217c: JUMPDEST 0000217d: AND 0000217e: DUP3 0000217f: MSTORE 00002180: PUSH1 0x20 00002182: SWAP3 00002183: DUP4 00002184: ADD 00002185: SWAP3 00002186: SWAP1 00002187: SWAP2 00002188: ADD 00002189: SWAP1 0000218a: PUSH1 0x01 0000218c: ADD 0000218d: PUSH2 0x2163 00002190: JUMP 00002191: JUMPDEST 00002192: POP 00002193: DUP4 00002194: DUP2 00002195: SUB 00002196: PUSH1 0x20 00002198: DUP6 00002199: ADD 0000219a: MSTORE 0000219b: DUP5 0000219c: DUP2 0000219d: MSTORE 0000219e: PUSH1 0x01 000021a0: PUSH1 0x01 000021a2: PUSH1 0xfb 000021a4: SHL 000021a5: SUB 000021a6: DUP6 000021a7: GT 000021a8: ISZERO 000021a9: PUSH2 0x21b1 000021ac: JUMPI 000021ad: PUSH1 0x00 000021af: DUP1 000021b0: REVERT 000021b1: JUMPDEST 000021b2: DUP5 000021b3: PUSH1 0x05 000021b5: SHL 000021b6: SWAP2 000021b7: POP 000021b8: DUP2 000021b9: DUP7 000021ba: PUSH1 0x20 000021bc: DUP4 000021bd: ADD 000021be: CALLDATACOPY 000021bf: ADD 000021c0: PUSH1 0x20 000021c2: ADD 000021c3: SWAP7 000021c4: SWAP6 000021c5: POP 000021c6: POP 000021c7: POP 000021c8: POP 000021c9: POP 000021ca: POP 000021cb: JUMP 000021cc: JUMPDEST 000021cd: PUSH4 0x4e487b71 000021d2: PUSH1 0xe0 000021d4: SHL 000021d5: PUSH1 0x00 000021d7: MSTORE 000021d8: PUSH1 0x41 000021da: PUSH1 0x04 000021dc: MSTORE 000021dd: PUSH1 0x24 000021df: PUSH1 0x00 000021e1: REVERT 000021e2: JUMPDEST 000021e3: DUP2 000021e4: DUP2 000021e5: SUB 000021e6: DUP2 000021e7: DUP2 000021e8: GT 000021e9: ISZERO 000021ea: PUSH2 0x103e 000021ed: JUMPI 000021ee: PUSH4 0x4e487b71 000021f3: PUSH1 0xe0 000021f5: SHL 000021f6: PUSH1 0x00 000021f8: MSTORE 000021f9: PUSH1 0x11 000021fb: PUSH1 0x04 000021fd: MSTORE 000021fe: PUSH1 0x24 00002200: PUSH1 0x00 00002202: REVERT 00002203: JUMPDEST 00002204: PUSH4 0x4e487b71 00002209: PUSH1 0xe0 0000220b: SHL 0000220c: PUSH1 0x00 0000220e: MSTORE 0000220f: PUSH1 0x31 00002211: PUSH1 0x04 00002213: MSTORE 00002214: PUSH1 0x24 00002216: PUSH1 0x00 00002218: REVERT 00002219: JUMPDEST 0000221a: PUSH1 0x00 0000221c: PUSH1 0x20 0000221e: DUP3 0000221f: DUP5 00002220: SUB 00002221: SLT 00002222: ISZERO 00002223: PUSH2 0x222b 00002226: JUMPI 00002227: PUSH1 0x00 00002229: DUP1 0000222a: REVERT 0000222b: JUMPDEST 0000222c: DUP2 0000222d: MLOAD 0000222e: PUSH2 0x1c72 00002231: DUP2 00002232: PUSH2 0x1f6b 00002235: JUMP 00002236: JUMPDEST 00002237: PUSH1 0x00 00002239: DUP3 0000223a: MLOAD 0000223b: PUSH1 0x00 0000223d: JUMPDEST 0000223e: DUP2 0000223f: DUP2 00002240: LT 00002241: ISZERO 00002242: PUSH2 0x2257 00002245: JUMPI 00002246: PUSH1 0x20 00002248: DUP2 00002249: DUP7 0000224a: ADD 0000224b: DUP2 0000224c: ADD 0000224d: MLOAD 0000224e: DUP6 0000224f: DUP4 00002250: ADD 00002251: MSTORE 00002252: ADD 00002253: PUSH2 0x223d 00002256: JUMP 00002257: JUMPDEST 00002258: POP 00002259: PUSH1 0x00 0000225b: SWAP3 0000225c: ADD 0000225d: SWAP2 0000225e: DUP3 0000225f: MSTORE 00002260: POP 00002261: SWAP2 00002262: SWAP1 00002263: POP 00002264: JUMP 00002265: INVALID 00002266: UNKNOWN(0xE2) 00002267: ADDRESS 00002268: UNKNOWN(0xCC) 00002269: SMOD 0000226a: UNKNOWN(0x2D) 0000226b: LOG0 0000226c: UNKNOWN(0xA6) 0000226d: PUSH30 0x5ba53161160a973bd0b5b0d350fffd7d990c56e428c46b46cd5ed15c6e18 0000228c: PUSH31 0x77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d 000022ac: UNKNOWN(0x0D) 000022ad: UNKNOWN(0xF9) 000022ae: UNKNOWN(0x22) 000022af: UNKNOWN(0x23) 000022b0: ADD 000022b1: DUP12 000022b2: ORIGIN 000022b3: UNKNOWN(0xB4) 000022b4: UNKNOWN(0xD1) 000022b5: STATICCALL 000022b6: CHAINID 000022b7: UNKNOWN(0xE0) 000022b8: PUSH18 0x723d6817e2486d003becc55f00a264697066 000022cb: PUSH20 0x58221220cedd3c655d963eb54ad6528ebd2c0257 000022e0: UNKNOWN(0xC8) 000022e1: UNKNOWN(0xB5) 000022e2: UNKNOWN(0x4C) 000022e3: CALLDATALOAD 000022e4: SWAP12 000022e5: UNKNOWN(0xCD) 000022e6: BLOBHASH 000022e7: UNKNOWN(0xD9) 000022e8: UNKNOWN(0xD2) 000022e9: STOP 000022ea: UNKNOWN(0x0D) 000022eb: UNKNOWN(0xD0) 000022ec: UNKNOWN(0xE4) 000022ed: BALANCE 000022ee: UNKNOWN(0x23) 000022ef: UNKNOWN(0xC4) 000022f0: PUSH5 0x736f6c6343 000022f6: STOP 000022f7: ADDMOD 000022f8: OR 000022f9: STOP 000022fa: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd0965645",
"selector": "0xd0965645",
"calldata_variants": [
"0xd0965645",
"0xd09656450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3c7c2c7",
"selector": "0xd3c7c2c7",
"calldata_variants": [
"0xd3c7c2c7",
"0xd3c7c2c70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0149124",
"selector": "0xe0149124",
"calldata_variants": [
"0xe0149124",
"0xe01491240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe12f3a61",
"selector": "0xe12f3a61",
"calldata_variants": [
"0xe12f3a61",
"0xe12f3a610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf069f712",
"selector": "0xf069f712",
"calldata_variants": [
"0xf069f712",
"0xf069f7120000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8456cb59",
"selector": "0x8456cb59",
"calldata_variants": [
"0x8456cb59",
"0x8456cb590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 8882,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x4c4118d7f73ede8f27f7b2d17ea52352577100de8b08cf0a9e2b343a5fe9fa46
call_targets:
0x5e1e6dcf05fb49568aa66f40b9e3834c86008c8f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4c4118d7f73ede8f27f7b2d17ea52352577100de8b08cf0a9e2b343a5fe9fa46",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5e1e6dcf05fb49568aa66f40b9e3834c86008c8f"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd0965645",
"selector": "0xd0965645",
"calldata_variants": [
"0xd0965645",
"0xd09656450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3c7c2c7",
"selector": "0xd3c7c2c7",
"calldata_variants": [
"0xd3c7c2c7",
"0xd3c7c2c70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0149124",
"selector": "0xe0149124",
"calldata_variants": [
"0xe0149124",
"0xe01491240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe12f3a61",
"selector": "0xe12f3a61",
"calldata_variants": [
"0xe12f3a61",
"0xe12f3a610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf069f712",
"selector": "0xf069f712",
"calldata_variants": [
"0xf069f712",
"0xf069f7120000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8456cb59",
"selector": "0x8456cb59",
"calldata_variants": [
"0x8456cb59",
"0x8456cb590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7367,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 8882,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x4c4118d7f73ede8f27f7b2d17ea52352577100de8b08cf0a9e2b343a5fe9fa46
call_targets:
0x5e1e6dcf05fb49568aa66f40b9e3834c86008c8f
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4c4118d7f73ede8f27f7b2d17ea52352577100de8b08cf0a9e2b343a5fe9fa46",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5e1e6dcf05fb49568aa66f40b9e3834c86008c8f"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd0965645",
"selector": "0xd0965645",
"calldata_variants": [
"0xd0965645",
"0xd09656450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd3c7c2c7",
"selector": "0xd3c7c2c7",
"calldata_variants": [
"0xd3c7c2c7",
"0xd3c7c2c70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0149124",
"selector": "0xe0149124",
"calldata_variants": [
"0xe0149124",
"0xe01491240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe12f3a61",
"selector": "0xe12f3a61",
"calldata_variants": [
"0xe12f3a61",
"0xe12f3a610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf069f712",
"selector": "0xf069f712",
"calldata_variants": [
"0xf069f712",
"0xf069f7120000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8456cb59",
"selector": "0x8456cb59",
"calldata_variants": [
"0x8456cb59",
"0x8456cb590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7367,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 8882,
"type": "tx_origin_used"
}
]
}
|
| medium | upgradeability | codex | Proxy can be hijacked if not initialized atomically | 75 | no | — |
viewevidence_json{
"evidence": "`initialize` is external and only protected by `initializer`, so the first caller sets critical roles.",
"locations": [
"contracts/MrpcDeposit.sol:44"
],
"recommendation": "Ensure the proxy is initialized atomically at deployment (e.g., constructor data on the proxy or a deployment script that calls `initialize` immediately). Consider deployment safeguards to prevent uninitialized proxies.",
"exploit_scenario": "If the proxy is deployed without calling `initialize` in the same transaction, an attacker can call `initialize` first and set themselves as consensus/governance/treasury, then drain deposits via `collectPayment` or change token controls."
}
|
| low | upgradeability | codex | Implementation contract is left initializable | 65 | no | — |
viewevidence_json{
"evidence": "No constructor disables initializers; `initialize` is publicly callable once on any deployment of the implementation.",
"locations": [
"contracts/MrpcDeposit.sol:13",
"contracts/MrpcDeposit.sol:44"
],
"recommendation": "Add a constructor that calls `_disableInitializers()` to lock the implementation, and avoid sending assets to the implementation address.",
"exploit_scenario": "Anyone can initialize the implementation contract itself and take control of it. If tokens are mistakenly sent to the implementation address, the attacker can call `collectPayment` to withdraw them."
}
|