019d5667-1339-71d8-a320-f4112d024afe
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 |
|---|---|---|---|---|
| 42993 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 42994 | proxy.resolve | complete | 1 / 3 | 1 week ago |
| 42995 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 42996 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 42997 | capability.graph | complete | 1 / 3 | 1 week ago |
| 42998 | detector.run | complete | 1 / 3 | 1 week ago |
| 42999 | validation.fork | complete | 1 / 3 | 1 week ago |
| 43013 | report.consolidate | complete | 1 / 6 | 1 week ago |
| 43014 | tool.slither | failed | 2 / 2 | 1 week ago |
{
"status": "not_proxy"
}
Traceback (most recent call last):
File "/var/www/tripwire/worker/worker.py", line 198, in main
payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
stdout_text, stderr_text, result_json = _run_slither(
~~~~~~~~~~~~^
workspace,
^^^^^^^^^^
...<4 lines>...
target_path=target_path,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-v4qx8jav)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-v4qx8jav)
'forge' returned non-zero exit code 1
Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol: No solc version exists that matches the version requirement: ^0.8.20
Traceback (most recent call last):
File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
sys.exit(main())
~~~~^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
main_impl(all_detector_classes=detectors, all_printer_classes=printers)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
compilations = compile_all(target, **vars(args))
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
compilations.append(CryticCompile(target, **kwargs))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
self._compile(**kwargs)
~~~~~~~~~~~~~^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
self._platform.compile(self, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
hardhat_like_parsing(
~~~~~~~~~~~~~~~~~~~~^
crytic_compile, str(self._target), build_directory, str(self._project_root)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-v4qx8jav/out/build-info is not a directory.
{"no_findings":false,"summary":"Two exploitable issues were identified in the first-party bridge predicate: incorrect ERC20 deposit accounting and missing domain separation in withdrawal signatures.","findings":[{"severity":"high","category":"other","title":"Deposits credit the requested amount instead of the amount actually received","exploit_scenario":"If a mapped token charges transfer fees, rebases, or otherwise delivers less than `_amount`, a user can deposit 100 tokens while the contract only receives 90. The bridge still emits a deposit message for 100, so the remote side can mint/release 100. On withdrawal, the attacker can redeem the full 100 and drain 10 tokens from pooled collateral or make later withdrawals insolvent.","recommendation":"Track the bridge's balance before and after `safeTransferFrom` and use the actual received amount in the deposit message, or explicitly reject fee-on-transfer/rebasing tokens.","evidence":"`_initiateDeposit` transfers tokens in and then emits `DepositToken(..., _amount)` without checking the balance delta, so accounting assumes the full requested amount always arrived.","locations":["contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:155","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:161","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:165"]},{"severity":"medium","category":"auth","title":"Withdrawal signatures are replayable across predicate instances on the same chain","exploit_scenario":"Validators sign `keccak256(block.chainid, _data)`. Because the signed payload does not include `address(this)` or any bridge-specific domain, the same signatures are valid for any other `L1ERC20Predicate` instance on the same chain that shares the validator registry and token mapping. A legitimate withdrawal approved for one predicate can therefore be replayed against a second funded predicate/proxy, draining its escrow because replay protection (`orderExecuted`) is only local to each contract.","recommendation":"Domain-separate signatures with `address(this)` and, preferably, a full EIP-712 domain that includes the bridge/proxy identity and explicit message type.","evidence":"`syncWithdraw` computes `messageHash = keccak256(abi.encodePacked(block.chainid, _data))` and uses that for signature recovery. The contract address is never bound into the signed message, while replay protection is only `orderExecuted[from][orderId]` in local storage.","locations":["contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:82","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:86","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:97"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-wbg4av_k
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d56c3-2754-7ff0-8e6f-992980984076
--------
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.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc 'pwd && ls -la && rg --files' in /tmp/codex-wbg4av_k
succeeded in 0ms:
/tmp/codex-wbg4av_k
total 64
drwx------ 4 noahkuhn noahkuhn 4096 Apr 4 04:32 .
drwxrwxrwt 264 nobody nogroup 24576 Apr 4 04:32 ..
-rw-rw-r-- 1 noahkuhn noahkuhn 16455 Apr 4 04:32 AUDIT_BUNDLE.txt
-rw-rw-r-- 1 noahkuhn noahkuhn 815 Apr 4 04:32 codex-output-schema.json
drwxrwxr-x 3 noahkuhn noahkuhn 4096 Apr 4 04:32 contracts
drwxrwxr-x 4 noahkuhn noahkuhn 4096 Apr 4 04:32 @openzeppelin
codex-output-schema.json
AUDIT_BUNDLE.txt
@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol
@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol
@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol
@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol
@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol
@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol
@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol
contracts/bridge/v2/core/common/IBridgeRegistry.sol
@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
contracts/bridge/v2/libs/ValidatorSet.sol
contracts/bridge/v2/libs/Create2.sol
@openzeppelin/contracts/utils/Strings.sol
@openzeppelin/contracts/utils/math/Math.sol
@openzeppelin/contracts/token/ERC20/IERC20.sol
@openzeppelin/contracts/utils/Context.sol
@openzeppelin/contracts/utils/Address.sol
@openzeppelin/contracts/token/ERC20/ERC20.sol
@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
@openzeppelin/contracts/utils/cryptography/ECDSA.sol
contracts/bridge/v2/core/L1/predicates/IL1Predicate.sol
contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol
@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
exec
/bin/bash -lc 'wc -l AUDIT_BUNDLE.txt' in /tmp/codex-wbg4av_k
succeeded in 0ms:
436 AUDIT_BUNDLE.txt
exec
/bin/bash -lc "sed -n '1,220p' AUDIT_BUNDLE.txt" in /tmp/codex-wbg4av_k
succeeded in 0ms:
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/bridge/v2/core/L1/predicates/IL1Predicate.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
// LightLink 2023
interface IL1Predicate {
/* Events */
function l2TokenBytecodeHash() external view returns (bytes32);
function mapToken(address _l1Token) external;
}
================================================================================
FILE: contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "../../../libs/Create2.sol";
import "./IL1Predicate.sol";
import "../../common/IBridgeRegistry.sol";
// LightLink 2023
contract L1ERC20Predicate is
Initializable, //
UUPSUpgradeable,
ReentrancyGuardUpgradeable,
IL1Predicate
{
using ECDSA for bytes32;
using SafeERC20 for IERC20;
// variables
bool public isPaused;
address public bridgeRegistry;
address public l2Predicate;
bytes32 public l2TokenBytecodeHash;
mapping(address => address) public l1ToL2Gateway;
mapping(address => uint256) public counter;
mapping(address => mapping(uint256 => bool)) public orderExecuted;
mapping(address => mapping(uint256 => mapping(address => bool))) public isConfirmed;
event TokenMapped(bytes message);
event DepositToken(bytes message);
event WithdrawToken(bytes32 messageHash);
modifier requireMultisig() {
require(msg.sender == IBridgeRegistry(bridgeRegistry).getMultisig(), "Multisig required");
_;
}
modifier notPaused() {
require(!isPaused, "Paused");
_;
}
receive() external payable {
revert("Not supported");
}
function recovery(address[] memory _tokens, address _to) external requireMultisig {
for (uint256 i = 0; i < _tokens.length; i++) {
address token = _tokens[i];
uint256 _amount = IERC20(token).balanceOf(address(this));
if (_amount > 0) {
IERC20(token).safeTransfer(_to, _amount);
}
}
}
function deposit(address _l1Token, uint256 _amount) external virtual {
_initiateDeposit(_l1Token, msg.sender, msg.sender, _amount);
}
// verified
function depositTo(address _l1Token, address _to, uint256 _amount) external virtual {
_initiateDeposit(_l1Token, msg.sender, _to, _amount);
}
function syncWithdraw(
address[] memory _currentValidators,
bytes[] memory _signatures,
// transaction data
bytes memory _data
) external nonReentrant notPaused {
(address from, uint256 orderId, address l1Token, address l2Token, address to, uint256 amount) = abi.decode(_data, (address, uint256, address, address, address, uint256));
require(l2Predicate != address(0), "Not implemented");
require(amount > 0, "Not enough amount");
require(to != address(0), "Invalid address");
require(!orderExecuted[from][orderId], "Order already executed");
require(_currentValidators.length == _signatures.length, "Input mismatch");
require(l1ToL2Gateway[l1Token] == l2Token, "Invalid token gateway");
bytes32 messageHash = keccak256(abi.encodePacked(block.chainid, _data));
_checkValidatorSignatures(
from,
orderId,
_currentValidators,
_signatures,
// Get hash of the transaction batch and checkpoint
messageHash,
IBridgeRegistry(bridgeRegistry).consensusPowerThreshold()
);
orderExecuted[from][orderId] = true;
IERC20(l1Token).safeTransfer(to, amount);
emit WithdrawToken(messageHash);
}
function initialize(address _registry, address _l2Predicate) public initializer {
__ReentrancyGuard_init();
__L1ERC20Predicate_init(_registry, _l2Predicate);
}
function modifyL2TokenBytecodeHash(bytes32 _l2TokenBytecodeHash) public requireMultisig {
l2TokenBytecodeHash = _l2TokenBytecodeHash;
}
function toggleIsPaused(bool _status) public requireMultisig {
isPaused = _status;
}
function modifyL2Predicate(address _l2Predicate) public requireMultisig {
l2Predicate = _l2Predicate;
}
function mapToken(address _l1Token) public requireMultisig {
// check if token is already mapped
require(l2Predicate != address(0x0), "Invalid L2 pair");
require(l1ToL2Gateway[_l1Token] == address(0x0), "Already mapped");
string memory name;
try ERC20(_l1Token).name() returns (string memory _name) {
name = _name;
} catch {}
string memory symbol;
try ERC20(_l1Token).symbol() returns (string memory _symbol) {
symbol = _symbol;
} catch {}
uint8 decimals = ERC20(_l1Token).decimals();
// compute child token address before deployment using create2
bytes32 salt = keccak256(abi.encodePacked(_l1Token));
address l2Token = Create2.computeAddress(salt, l2TokenBytecodeHash, l2Predicate);
// add into mapped tokens
l1ToL2Gateway[_l1Token] = l2Token;
emit TokenMapped(abi.encode(msg.sender, counter[msg.sender], _l1Token, name, symbol, decimals));
counter[msg.sender]++;
}
function __L1ERC20Predicate_init(address _registry, address _l2Predicate) internal {
bridgeRegistry = _registry;
l2Predicate = _l2Predicate;
l2TokenBytecodeHash = 0xb9ae7ba14d826de669be54f7c79008181b430f21bd3ff90dac8cce1e60ae88a9;
}
function _authorizeUpgrade(address) internal override requireMultisig {}
function _initiateDeposit(address _l1Token, address _from, address _to, uint256 _amount) internal notPaused {
require(l2Predicate != address(0), "Not implemented");
require(_amount > 0, "Not enough amount");
require(_to != address(0), "Invalid address");
require(l1ToL2Gateway[_l1Token] != address(0), "Not supported");
IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
uint256 counter_ = counter[_from];
emit DepositToken(abi.encode(_from, counter_, _l1Token, l1ToL2Gateway[_l1Token], _to, _amount));
counter[_from]++;
}
function _checkValidatorSignatures(
address _from, //
uint256 _orderId,
address[] memory _currentValidators,
bytes[] memory _signatures,
bytes32 _messageHash,
uint256 _powerThreshold
) private {
uint256 cumulativePower = 0;
for (uint256 i = 0; i < _currentValidators.length; i++) {
address signer = _messageHash.toEthSignedMessageHash().recover(_signatures[i]);
require(signer == _currentValidators[i], "Validator signature does not match.");
require(IBridgeRegistry(bridgeRegistry).validValidator(signer), "Invalid validator");
require(!isConfirmed[_from][_orderId][signer], "No duplicate validator");
// prevent double-signing attacks
isConfirmed[_from][_orderId][signer] = true;
// Sum up cumulative power
cumulativePower += IBridgeRegistry(bridgeRegistry).getPower(signer);
// Break early to avoid wasting gas
if (cumulativePower > _powerThreshold) {
break;
}
}
// Check that there was enough power
require(cumulativePower >= _powerThreshold, "Submitted validator set signatures do not have enough power.");
// Success
}
exec
/bin/bash -lc "sed -n '221,440p' AUDIT_BUNDLE.txt" in /tmp/codex-wbg4av_k
succeeded in 0ms:
}
================================================================================
FILE: contracts/bridge/v2/core/common/IBridgeRegistry.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "../../libs/ValidatorSet.sol";
// LightLink 2023
interface IBridgeRegistry {
event ConsensusPowerThresholdModified(uint256 _amount);
event ValidatorsModifed(address[] _accounts, uint256[] _powers);
event ValidatorsRemoved(address[] _accounts);
event MutisigModified(address _multisig);
event SystemVerifierModified(address _systemVerifier);
/* Views */
function consensusPowerThreshold() external view returns (uint256);
function validValidator(address) external view returns (bool);
function getPower(address) external view returns (uint256);
function getValidators() external view returns (ValidatorSet.Validator[] memory);
function getMultisig() external view returns (address);
function getSystemVerifier() external view returns (address);
/* Actions */
function modifyConsensusPowerThreshold(uint256 _amount) external;
function modifyValidators(address[] memory _accounts, uint256[] memory _powers) external;
function removeValidators(address[] memory _accounts) external;
function modifySystemVerifier(address _systemVerifier) external;
}
================================================================================
FILE: contracts/bridge/v2/libs/Create2.sol
================================================================================
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Create2.sol)
pragma solidity 0.8.19;
// LightLink 2023
/**
* @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.
* `CREATE2` can be used to compute in advance the address where a smart
* contract will be deployed, which allows for interesting new mechanisms known
* as 'counterfactual interactions'.
*
* See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more
* information.
*/
library Create2 {
function createClone(bytes32 _salt, address _target) internal returns (address _result) {
bytes20 _targetBytes = bytes20(_target);
assembly {
let clone := mload(0x40)
mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(clone, 0x14), _targetBytes)
mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
_result := create2(0, clone, 0x37, _salt)
}
require(_result != address(0), "Create2: Failed on minimal deploy");
}
function createClone2(bytes32 _salt, bytes memory _bytecode) internal returns (address _result) {
assembly {
_result := create2(0, add(_bytecode, 0x20), mload(_bytecode), _salt)
if iszero(extcodesize(_result)) {
revert(0, 0)
}
}
require(_result != address(0), "Create2: Failed on deploy");
}
/**
* @dev Deploys a contract using `CREATE2`. The address where the contract
* will be deployed can be known in advance via {computeAddress}.
*
* The bytecode for a contract can be obtained from Solidity with
* `type(contractName).creationCode`.
*
* Requirements:
*
* - `bytecode` must not be empty.
* - `salt` must have not been used for `bytecode` already.
* - the factory must have a balance of at least `amount`.
* - if `amount` is non-zero, `bytecode` must have a `payable` constructor.
*/
function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {
require(address(this).balance >= amount, "Create2: insufficient balance");
require(bytecode.length != 0, "Create2: bytecode length is zero");
/// @solidity memory-safe-assembly
assembly {
addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)
}
require(addr != address(0), "Create2: Failed on deploy");
}
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the
* `bytecodeHash` or `salt` will result in a new destination address.
*/
function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {
return computeAddress(salt, bytecodeHash, address(this));
}
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at
* `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.
*/
function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {
/// @solidity memory-safe-assembly
assembly {
let ptr := mload(0x40) // Get free memory pointer
// | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |
// |-------------------|---------------------------------------------------------------------------|
// | bytecodeHash | CCCCCCCCCCCCC...CC |
// | salt | BBBBBBBBBBBBB...BB |
// | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |
// | 0xFF | FF |
// |-------------------|---------------------------------------------------------------------------|
// | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |
// | keccak(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |
mstore(add(ptr, 0x40), bytecodeHash)
mstore(add(ptr, 0x20), salt)
mstore(ptr, deployer) // Right-aligned with 12 preceding garbage bytes
let start := add(ptr, 0x0b) // The hashed data starts at the final garbage byte which we will set to 0xff
mstore8(start, 0xff)
addr := keccak256(start, 85)
}
}
}
================================================================================
FILE: contracts/bridge/v2/libs/ValidatorSet.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
// LightLink 2023
library ValidatorSet {
struct Validator {
address addr;
uint256 power;
}
struct Record {
Validator[] values;
mapping(address => uint256) indexes; // value to index
}
function add(Record storage _record, address _value, uint256 _power) internal {
if (contains(_record, _value)) return; // exist
_record.values.push(Validator(_value, _power));
_record.indexes[_value] = _record.values.length;
}
function modify(Record storage _record, address _value, uint256 _power) internal {
if (!contains(_record, _value)) {
add(_record, _value, _power);
return;
}
uint256 valueIndex = _record.indexes[_value];
_record.values[valueIndex - 1].power = _power;
}
function remove(Record storage _record, address _value) internal {
uint256 valueIndex = _record.indexes[_value];
if (valueIndex == 0) return; // removed non-exist value
uint256 toDeleteIndex = valueIndex - 1; // dealing with out of bounds
uint256 lastIndex = _record.values.length - 1;
if (lastIndex != toDeleteIndex) {
Validator memory lastvalue = _record.values[lastIndex];
_record.values[toDeleteIndex] = lastvalue;
_record.indexes[lastvalue.addr] = valueIndex; // Replace lastvalue's index to valueIndex
}
_record.values.pop();
_record.indexes[_value] = 0; // set to 0
}
function contains(Record storage _record, address _value) internal view returns (bool) {
return _record.indexes[_value] != 0;
}
function size(Record storage _record) internal view returns (uint256) {
return _record.values.length;
}
function at(Record storage _record, uint256 _index) internal view returns (Validator memory) {
return _record.values[_index];
}
function indexOf(Record storage _record, address _value) internal view returns (bool, uint256) {
if (!contains(_record, _value)) return (false, 0);
return (true, _record.indexes[_value] - 1);
}
function getPower(Record storage _record, address _value) internal view returns (uint256) {
if (!contains(_record, _value)) return 0;
return _record.values[_record.indexes[_value] - 1].power;
}
}
exec
/bin/bash -lc "nl -ba contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol | sed -n '1,240p'" in /tmp/codex-wbg4av_k
succeeded in 0ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.19;
3
4 import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
5 import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
6 import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
7 import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
8 import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
9 import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
10 import "../../../libs/Create2.sol";
11 import "./IL1Predicate.sol";
12 import "../../common/IBridgeRegistry.sol";
13
14 // LightLink 2023
15 contract L1ERC20Predicate is
16 Initializable, //
17 UUPSUpgradeable,
18 ReentrancyGuardUpgradeable,
19 IL1Predicate
20 {
21 using ECDSA for bytes32;
22 using SafeERC20 for IERC20;
23
24 // variables
25 bool public isPaused;
26 address public bridgeRegistry;
27 address public l2Predicate;
28 bytes32 public l2TokenBytecodeHash;
29 mapping(address => address) public l1ToL2Gateway;
30
31 mapping(address => uint256) public counter;
32 mapping(address => mapping(uint256 => bool)) public orderExecuted;
33 mapping(address => mapping(uint256 => mapping(address => bool))) public isConfirmed;
34
35 event TokenMapped(bytes message);
36 event DepositToken(bytes message);
37 event WithdrawToken(bytes32 messageHash);
38
39 modifier requireMultisig() {
40 require(msg.sender == IBridgeRegistry(bridgeRegistry).getMultisig(), "Multisig required");
41 _;
42 }
43
44 modifier notPaused() {
45 require(!isPaused, "Paused");
46 _;
47 }
48
49 receive() external payable {
50 revert("Not supported");
51 }
52
53 function recovery(address[] memory _tokens, address _to) external requireMultisig {
54 for (uint256 i = 0; i < _tokens.length; i++) {
55 address token = _tokens[i];
56 uint256 _amount = IERC20(token).balanceOf(address(this));
57 if (_amount > 0) {
58 IERC20(token).safeTransfer(_to, _amount);
59 }
60 }
61 }
62
63 function deposit(address _l1Token, uint256 _amount) external virtual {
64 _initiateDeposit(_l1Token, msg.sender, msg.sender, _amount);
65 }
66
67 // verified
68 function depositTo(address _l1Token, address _to, uint256 _amount) external virtual {
69 _initiateDeposit(_l1Token, msg.sender, _to, _amount);
70 }
71
72 function syncWithdraw(
73 address[] memory _currentValidators,
74 bytes[] memory _signatures,
75 // transaction data
76 bytes memory _data
77 ) external nonReentrant notPaused {
78 (address from, uint256 orderId, address l1Token, address l2Token, address to, uint256 amount) = abi.decode(_data, (address, uint256, address, address, address, uint256));
79 require(l2Predicate != address(0), "Not implemented");
80 require(amount > 0, "Not enough amount");
81 require(to != address(0), "Invalid address");
82 require(!orderExecuted[from][orderId], "Order already executed");
83 require(_currentValidators.length == _signatures.length, "Input mismatch");
84 require(l1ToL2Gateway[l1Token] == l2Token, "Invalid token gateway");
85
86 bytes32 messageHash = keccak256(abi.encodePacked(block.chainid, _data));
87 _checkValidatorSignatures(
88 from,
89 orderId,
90 _currentValidators,
91 _signatures,
92 // Get hash of the transaction batch and checkpoint
93 messageHash,
94 IBridgeRegistry(bridgeRegistry).consensusPowerThreshold()
95 );
96
97 orderExecuted[from][orderId] = true;
98
99 IERC20(l1Token).safeTransfer(to, amount);
100
101 emit WithdrawToken(messageHash);
102 }
103
104 function initialize(address _registry, address _l2Predicate) public initializer {
105 __ReentrancyGuard_init();
106 __L1ERC20Predicate_init(_registry, _l2Predicate);
107 }
108
109 function modifyL2TokenBytecodeHash(bytes32 _l2TokenBytecodeHash) public requireMultisig {
110 l2TokenBytecodeHash = _l2TokenBytecodeHash;
111 }
112
113 function toggleIsPaused(bool _status) public requireMultisig {
114 isPaused = _status;
115 }
116
117 function modifyL2Predicate(address _l2Predicate) public requireMultisig {
118 l2Predicate = _l2Predicate;
119 }
120
121 function mapToken(address _l1Token) public requireMultisig {
122 // check if token is already mapped
123 require(l2Predicate != address(0x0), "Invalid L2 pair");
124 require(l1ToL2Gateway[_l1Token] == address(0x0), "Already mapped");
125
126 string memory name;
127 try ERC20(_l1Token).name() returns (string memory _name) {
128 name = _name;
129 } catch {}
130 string memory symbol;
131 try ERC20(_l1Token).symbol() returns (string memory _symbol) {
132 symbol = _symbol;
133 } catch {}
134 uint8 decimals = ERC20(_l1Token).decimals();
135
136 // compute child token address before deployment using create2
137 bytes32 salt = keccak256(abi.encodePacked(_l1Token));
138 address l2Token = Create2.computeAddress(salt, l2TokenBytecodeHash, l2Predicate);
139
140 // add into mapped tokens
141 l1ToL2Gateway[_l1Token] = l2Token;
142
143 emit TokenMapped(abi.encode(msg.sender, counter[msg.sender], _l1Token, name, symbol, decimals));
144 counter[msg.sender]++;
145 }
146
147 function __L1ERC20Predicate_init(address _registry, address _l2Predicate) internal {
148 bridgeRegistry = _registry;
149 l2Predicate = _l2Predicate;
150 l2TokenBytecodeHash = 0xb9ae7ba14d826de669be54f7c79008181b430f21bd3ff90dac8cce1e60ae88a9;
151 }
152
153 function _authorizeUpgrade(address) internal override requireMultisig {}
154
155 function _initiateDeposit(address _l1Token, address _from, address _to, uint256 _amount) internal notPaused {
156 require(l2Predicate != address(0), "Not implemented");
157 require(_amount > 0, "Not enough amount");
158 require(_to != address(0), "Invalid address");
159 require(l1ToL2Gateway[_l1Token] != address(0), "Not supported");
160
161 IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
162
163 uint256 counter_ = counter[_from];
164
165 emit DepositToken(abi.encode(_from, counter_, _l1Token, l1ToL2Gateway[_l1Token], _to, _amount));
166 counter[_from]++;
167 }
168
169 function _checkValidatorSignatures(
170 address _from, //
171 uint256 _orderId,
172 address[] memory _currentValidators,
173 bytes[] memory _signatures,
174 bytes32 _messageHash,
175 uint256 _powerThreshold
176 ) private {
177 uint256 cumulativePower = 0;
178
179 for (uint256 i = 0; i < _currentValidators.length; i++) {
180 address signer = _messageHash.toEthSignedMessageHash().recover(_signatures[i]);
181 require(signer == _currentValidators[i], "Validator signature does not match.");
182 require(IBridgeRegistry(bridgeRegistry).validValidator(signer), "Invalid validator");
183 require(!isConfirmed[_from][_orderId][signer], "No duplicate validator");
184
185 // prevent double-signing attacks
186 isConfirmed[_from][_orderId][signer] = true;
187
188 // Sum up cumulative power
189 cumulativePower += IBridgeRegistry(bridgeRegistry).getPower(signer);
190
191 // Break early to avoid wasting gas
192 if (cumulativePower > _powerThreshold) {
193 break;
194 }
195 }
196
197 // Check that there was enough power
198 require(cumulativePower >= _powerThreshold, "Submitted validator set signatures do not have enough power.");
199 // Success
200 }
201 }
exec
/bin/bash -lc "nl -ba contracts/bridge/v2/core/common/IBridgeRegistry.sol | sed -n '1,200p'" in /tmp/codex-wbg4av_k
succeeded in 0ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.19;
3 import "../../libs/ValidatorSet.sol";
4
5 // LightLink 2023
6 interface IBridgeRegistry {
7 event ConsensusPowerThresholdModified(uint256 _amount);
8 event ValidatorsModifed(address[] _accounts, uint256[] _powers);
9 event ValidatorsRemoved(address[] _accounts);
10 event MutisigModified(address _multisig);
11 event SystemVerifierModified(address _systemVerifier);
12
13 /* Views */
14 function consensusPowerThreshold() external view returns (uint256);
15
16 function validValidator(address) external view returns (bool);
17
18 function getPower(address) external view returns (uint256);
19
20 function getValidators() external view returns (ValidatorSet.Validator[] memory);
21
22 function getMultisig() external view returns (address);
23
24 function getSystemVerifier() external view returns (address);
25
26 /* Actions */
27 function modifyConsensusPowerThreshold(uint256 _amount) external;
28
29 function modifyValidators(address[] memory _accounts, uint256[] memory _powers) external;
30
31 function removeValidators(address[] memory _accounts) external;
32
33 function modifySystemVerifier(address _systemVerifier) external;
34 }
exec
/bin/bash -lc "nl -ba contracts/bridge/v2/libs/ValidatorSet.sol | sed -n '1,220p'" in /tmp/codex-wbg4av_k
succeeded in 0ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.19;
3
4 // LightLink 2023
5 library ValidatorSet {
6 struct Validator {
7 address addr;
8 uint256 power;
9 }
10
11 struct Record {
12 Validator[] values;
13 mapping(address => uint256) indexes; // value to index
14 }
15
16 function add(Record storage _record, address _value, uint256 _power) internal {
17 if (contains(_record, _value)) return; // exist
18 _record.values.push(Validator(_value, _power));
19 _record.indexes[_value] = _record.values.length;
20 }
21
22 function modify(Record storage _record, address _value, uint256 _power) internal {
23 if (!contains(_record, _value)) {
24 add(_record, _value, _power);
25 return;
26 }
27 uint256 valueIndex = _record.indexes[_value];
28 _record.values[valueIndex - 1].power = _power;
29 }
30
31 function remove(Record storage _record, address _value) internal {
32 uint256 valueIndex = _record.indexes[_value];
33 if (valueIndex == 0) return; // removed non-exist value
34 uint256 toDeleteIndex = valueIndex - 1; // dealing with out of bounds
35 uint256 lastIndex = _record.values.length - 1;
36 if (lastIndex != toDeleteIndex) {
37 Validator memory lastvalue = _record.values[lastIndex];
38 _record.values[toDeleteIndex] = lastvalue;
39 _record.indexes[lastvalue.addr] = valueIndex; // Replace lastvalue's index to valueIndex
40 }
41 _record.values.pop();
42 _record.indexes[_value] = 0; // set to 0
43 }
44
45 function contains(Record storage _record, address _value) internal view returns (bool) {
46 return _record.indexes[_value] != 0;
47 }
48
49 function size(Record storage _record) internal view returns (uint256) {
50 return _record.values.length;
51 }
52
53 function at(Record storage _record, uint256 _index) internal view returns (Validator memory) {
54 return _record.values[_index];
55 }
56
57 function indexOf(Record storage _record, address _value) internal view returns (bool, uint256) {
58 if (!contains(_record, _value)) return (false, 0);
59 return (true, _record.indexes[_value] - 1);
60 }
61
62 function getPower(Record storage _record, address _value) internal view returns (uint256) {
63 if (!contains(_record, _value)) return 0;
64 return _record.values[_record.indexes[_value] - 1].power;
65 }
66 }
exec
/bin/bash -lc "sed -n '1,260p' @openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol" in /tmp/codex-wbg4av_k
succeeded in 0ms:
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (proxy/utils/UUPSUpgradeable.sol)
pragma solidity ^0.8.0;
import "../../interfaces/draft-IERC1822Upgradeable.sol";
import "../ERC1967/ERC1967UpgradeUpgradeable.sol";
import "./Initializable.sol";
/**
* @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an
* {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.
*
* A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is
* reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing
* `UUPSUpgradeable` with a custom implementation of upgrades.
*
* The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.
*
* _Available since v4.1._
*/
abstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {
function __UUPSUpgradeable_init() internal onlyInitializing {
}
function __UUPSUpgradeable_init_unchained() internal onlyInitializing {
}
/// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment
address private immutable __self = address(this);
/**
* @dev Check that the execution is being performed through a delegatecall call and that the execution context is
* a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case
* for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a
* function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to
* fail.
*/
modifier onlyProxy() {
require(address(this) != __self, "Function must be called through delegatecall");
require(_getImplementation() == __self, "Function must be called through active proxy");
_;
}
/**
* @dev Check that the execution is not being performed through a delegate call. This allows a function to be
* callable on the implementing contract but not through proxies.
*/
modifier notDelegated() {
require(address(this) == __self, "UUPSUpgradeable: must not be called through delegatecall");
_;
}
/**
* @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the
* implementation. It is used to validate the implementation's compatibility when performing an upgrade.
*
* IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
* function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.
*/
function proxiableUUID() external view virtual override notDelegated returns (bytes32) {
return _IMPLEMENTATION_SLOT;
}
/**
* @dev Upgrade the implementation of the proxy to `newImplementation`.
*
* Calls {_authorizeUpgrade}.
*
* Emits an {Upgraded} event.
*/
function upgradeTo(address newImplementation) external virtual onlyProxy {
_authorizeUpgrade(newImplementation);
_upgradeToAndCallUUPS(newImplementation, new bytes(0), false);
}
/**
* @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call
* encoded in `data`.
*
* Calls {_authorizeUpgrade}.
*
* Emits an {Upgraded} event.
*/
function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {
_authorizeUpgrade(newImplementation);
_upgradeToAndCallUUPS(newImplementation, data, true);
}
/**
* @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by
* {upgradeTo} and {upgradeToAndCall}.
*
* Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.
*
* ```solidity
* function _authorizeUpgrade(address) internal override onlyOwner {}
* ```
*/
function _authorizeUpgrade(address newImplementation) internal virtual;
/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
codex
{"no_findings":false,"summary":"Two exploitable issues were identified in the first-party bridge predicate: incorrect ERC20 deposit accounting and missing domain separation in withdrawal signatures.","findings":[{"severity":"high","category":"other","title":"Deposits credit the requested amount instead of the amount actually received","exploit_scenario":"If a mapped token charges transfer fees, rebases, or otherwise delivers less than `_amount`, a user can deposit 100 tokens while the contract only receives 90. The bridge still emits a deposit message for 100, so the remote side can mint/release 100. On withdrawal, the attacker can redeem the full 100 and drain 10 tokens from pooled collateral or make later withdrawals insolvent.","recommendation":"Track the bridge's balance before and after `safeTransferFrom` and use the actual received amount in the deposit message, or explicitly reject fee-on-transfer/rebasing tokens.","evidence":"`_initiateDeposit` transfers tokens in and then emits `DepositToken(..., _amount)` without checking the balance delta, so accounting assumes the full requested amount always arrived.","locations":["contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:155","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:161","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:165"]},{"severity":"medium","category":"auth","title":"Withdrawal signatures are replayable across predicate instances on the same chain","exploit_scenario":"Validators sign `keccak256(block.chainid, _data)`. Because the signed payload does not include `address(this)` or any bridge-specific domain, the same signatures are valid for any other `L1ERC20Predicate` instance on the same chain that shares the validator registry and token mapping. A legitimate withdrawal approved for one predicate can therefore be replayed against a second funded predicate/proxy, draining its escrow because replay protection (`orderExecuted`) is only local to each contract.","recommendation":"Domain-separate signatures with `address(this)` and, preferably, a full EIP-712 domain that includes the bridge/proxy identity and explicit message type.","evidence":"`syncWithdraw` computes `messageHash = keccak256(abi.encodePacked(block.chainid, _data))` and uses that for signature recovery. The contract address is never bound into the signed message, while replay protection is only `orderExecuted[from][orderId]` in local storage.","locations":["contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:82","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:86","contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:97"]}]}
tokens used
16,191
{
"codex": {
"ran_at": "2026-04-04T04:33:57.818346+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 23,
"import_count": 26,
"first_party_contracts_count": 5
},
"summary": "Two exploitable issues were identified in the first-party bridge predicate: incorrect ERC20 deposit accounting and missing domain separation in withdrawal signatures.",
"raw_final": {
"summary": "Two exploitable issues were identified in the first-party bridge predicate: incorrect ERC20 deposit accounting and missing domain separation in withdrawal signatures.",
"findings": [
{
"title": "Deposits credit the requested amount instead of the amount actually received",
"category": "other",
"evidence": "`_initiateDeposit` transfers tokens in and then emits `DepositToken(..., _amount)` without checking the balance delta, so accounting assumes the full requested amount always arrived.",
"severity": "high",
"locations": [
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:155",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:161",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:165"
],
"recommendation": "Track the bridge's balance before and after `safeTransferFrom` and use the actual received amount in the deposit message, or explicitly reject fee-on-transfer/rebasing tokens.",
"exploit_scenario": "If a mapped token charges transfer fees, rebases, or otherwise delivers less than `_amount`, a user can deposit 100 tokens while the contract only receives 90. The bridge still emits a deposit message for 100, so the remote side can mint/release 100. On withdrawal, the attacker can redeem the full 100 and drain 10 tokens from pooled collateral or make later withdrawals insolvent."
},
{
"title": "Withdrawal signatures are replayable across predicate instances on the same chain",
"category": "auth",
"evidence": "`syncWithdraw` computes `messageHash = keccak256(abi.encodePacked(block.chainid, _data))` and uses that for signature recovery. The contract address is never bound into the signed message, while replay protection is only `orderExecuted[from][orderId]` in local storage.",
"severity": "medium",
"locations": [
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:82",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:86",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:97"
],
"recommendation": "Domain-separate signatures with `address(this)` and, preferably, a full EIP-712 domain that includes the bridge/proxy identity and explicit message type.",
"exploit_scenario": "Validators sign `keccak256(block.chainid, _data)`. Because the signed payload does not include `address(this)` or any bridge-specific domain, the same signatures are valid for any other `L1ERC20Predicate` instance on the same chain that shares the validator registry and token mapping. A legitimate withdrawal approved for one predicate can therefore be replayed against a second funded predicate/proxy, draining its escrow because replay protection (`orderExecuted`) is only local to each contract."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0163 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x804efd2e 00000019: GT 0000001a: PUSH2 0x00c0 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xbb6f2e06 00000024: GT 00000025: PUSH2 0x0074 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc6c8788c 0000002f: GT 00000030: PUSH2 0x0059 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xc6c8788c 0000003a: EQ 0000003b: PUSH2 0x0438 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf213159c 00000045: EQ 00000046: PUSH2 0x0473 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf4a120f7 00000050: EQ 00000051: PUSH2 0x0493 00000054: JUMPI 00000055: PUSH1 0x00 00000057: DUP1 00000058: REVERT 00000059: JUMPDEST 0000005a: DUP1 0000005b: PUSH4 0xbb6f2e06 00000060: EQ 00000061: PUSH2 0x03eb 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0xc12327b8 0000006b: EQ 0000006c: PUSH2 0x040b 0000006f: JUMPI 00000070: PUSH1 0x00 00000072: DUP1 00000073: REVERT 00000074: JUMPDEST 00000075: DUP1 00000076: PUSH4 0xb187bd26 0000007b: GT 0000007c: PUSH2 0x00a5 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0xb187bd26 00000086: EQ 00000087: PUSH2 0x039b 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0xb6e27136 00000091: EQ 00000092: PUSH2 0x03b5 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xb78103e9 0000009c: EQ 0000009d: PUSH2 0x03d5 000000a0: JUMPI 000000a1: PUSH1 0x00 000000a3: DUP1 000000a4: REVERT 000000a5: JUMPDEST 000000a6: DUP1 000000a7: PUSH4 0x804efd2e 000000ac: EQ 000000ad: PUSH2 0x0345 000000b0: JUMPI 000000b1: DUP1 000000b2: PUSH4 0xa0d99b1c 000000b7: EQ 000000b8: PUSH2 0x0365 000000bb: JUMPI 000000bc: PUSH1 0x00 000000be: DUP1 000000bf: REVERT 000000c0: JUMPDEST 000000c1: DUP1 000000c2: PUSH4 0x401e68d4 000000c7: GT 000000c8: PUSH2 0x0117 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0x485cc955 000000d2: GT 000000d3: PUSH2 0x00fc 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0x485cc955 000000dd: EQ 000000de: PUSH2 0x02ef 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x4f1ef286 000000e8: EQ 000000e9: PUSH2 0x030f 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x52d1902d 000000f3: EQ 000000f4: PUSH2 0x0322 000000f7: JUMPI 000000f8: PUSH1 0x00 000000fa: DUP1 000000fb: REVERT 000000fc: JUMPDEST 000000fd: DUP1 000000fe: PUSH4 0x401e68d4 00000103: EQ 00000104: PUSH2 0x027e 00000107: JUMPI 00000108: DUP1 00000109: PUSH4 0x47e7ef24 0000010e: EQ 0000010f: PUSH2 0x02cf 00000112: JUMPI 00000113: PUSH1 0x00 00000115: DUP1 00000116: REVERT 00000117: JUMPDEST 00000118: DUP1 00000119: PUSH4 0x316be171 0000011e: GT 0000011f: PUSH2 0x0148 00000122: JUMPI 00000123: DUP1 00000124: PUSH4 0x316be171 00000129: EQ 0000012a: PUSH2 0x01fc 0000012d: JUMPI 0000012e: DUP1 0000012f: PUSH4 0x3659cfe6 00000134: EQ 00000135: PUSH2 0x023e 00000138: JUMPI 00000139: DUP1 0000013a: PUSH4 0x39cc1230 0000013f: EQ 00000140: PUSH2 0x025e 00000143: JUMPI 00000144: PUSH1 0x00 00000146: DUP1 00000147: REVERT 00000148: JUMPDEST 00000149: DUP1 0000014a: PUSH4 0x051d92bb 0000014f: EQ 00000150: PUSH2 0x01ba 00000153: JUMPI 00000154: DUP1 00000155: PUSH4 0x1b0c926f 0000015a: EQ 0000015b: PUSH2 0x01dc 0000015e: JUMPI 0000015f: PUSH1 0x00 00000161: DUP1 00000162: REVERT 00000163: JUMPDEST 00000164: CALLDATASIZE 00000165: PUSH2 0x01b5 00000168: JUMPI 00000169: PUSH1 0x40 0000016b: MLOAD 0000016c: PUSH3 0x461bcd 00000170: PUSH1 0xe5 00000172: SHL 00000173: DUP2 00000174: MSTORE 00000175: PUSH1 0x20 00000177: PUSH1 0x04 00000179: DUP3 0000017a: ADD 0000017b: MSTORE 0000017c: PUSH1 0x0d 0000017e: PUSH1 0x24 00000180: DUP3 00000181: ADD 00000182: MSTORE 00000183: PUSH32 0x4e6f7420737570706f7274656400000000000000000000000000000000000000 000001a4: PUSH1 0x44 000001a6: DUP3 000001a7: ADD 000001a8: MSTORE 000001a9: PUSH1 0x64 000001ab: ADD 000001ac: JUMPDEST 000001ad: PUSH1 0x40 000001af: MLOAD 000001b0: DUP1 000001b1: SWAP2 000001b2: SUB 000001b3: SWAP1 000001b4: REVERT 000001b5: JUMPDEST 000001b6: PUSH1 0x00 000001b8: DUP1 000001b9: REVERT 000001ba: JUMPDEST 000001bb: CALLVALUE 000001bc: DUP1 000001bd: ISZERO 000001be: PUSH2 0x01c6 000001c1: JUMPI 000001c2: PUSH1 0x00 000001c4: DUP1 000001c5: REVERT 000001c6: JUMPDEST 000001c7: POP 000001c8: PUSH2 0x01da 000001cb: PUSH2 0x01d5 000001ce: CALLDATASIZE 000001cf: PUSH1 0x04 000001d1: PUSH2 0x2c52 000001d4: JUMP 000001d5: JUMPDEST 000001d6: PUSH2 0x04b3 000001d9: JUMP 000001da: JUMPDEST 000001db: STOP 000001dc: JUMPDEST 000001dd: CALLVALUE 000001de: DUP1 000001df: ISZERO 000001e0: PUSH2 0x01e8 000001e3: JUMPI 000001e4: PUSH1 0x00 000001e6: DUP1 000001e7: REVERT 000001e8: JUMPDEST 000001e9: POP 000001ea: PUSH2 0x01da 000001ed: PUSH2 0x01f7 000001f0: CALLDATASIZE 000001f1: PUSH1 0x04 000001f3: PUSH2 0x2d49 000001f6: JUMP 000001f7: JUMPDEST 000001f8: PUSH2 0x08bd 000001fb: JUMP 000001fc: JUMPDEST 000001fd: CALLVALUE 000001fe: DUP1 000001ff: ISZERO 00000200: PUSH2 0x0208 00000203: JUMPI 00000204: PUSH1 0x00 00000206: DUP1 00000207: REVERT 00000208: JUMPDEST 00000209: POP 0000020a: PUSH1 0x97 0000020c: SLOAD 0000020d: PUSH2 0x0221 00000210: SWAP1 00000211: PUSH2 0x0100 00000214: SWAP1 00000215: DIV 00000216: PUSH1 0x01 00000218: PUSH1 0x01 0000021a: PUSH1 0xa0 0000021c: SHL 0000021d: SUB 0000021e: AND 0000021f: DUP2 00000220: JUMP 00000221: JUMPDEST 00000222: PUSH1 0x40 00000224: MLOAD 00000225: PUSH1 0x01 00000227: PUSH1 0x01 00000229: PUSH1 0xa0 0000022b: SHL 0000022c: SUB 0000022d: SWAP1 0000022e: SWAP2 0000022f: AND 00000230: DUP2 00000231: MSTORE 00000232: PUSH1 0x20 00000234: ADD 00000235: JUMPDEST 00000236: PUSH1 0x40 00000238: MLOAD 00000239: DUP1 0000023a: SWAP2 0000023b: SUB 0000023c: SWAP1 0000023d: RETURN 0000023e: JUMPDEST 0000023f: CALLVALUE 00000240: DUP1 00000241: ISZERO 00000242: PUSH2 0x024a 00000245: JUMPI 00000246: PUSH1 0x00 00000248: DUP1 00000249: REVERT 0000024a: JUMPDEST 0000024b: POP 0000024c: PUSH2 0x01da 0000024f: PUSH2 0x0259 00000252: CALLDATASIZE 00000253: PUSH1 0x04 00000255: PUSH2 0x2d62 00000258: JUMP 00000259: JUMPDEST 0000025a: PUSH2 0x0999 0000025d: JUMP 0000025e: JUMPDEST 0000025f: CALLVALUE 00000260: DUP1 00000261: ISZERO 00000262: PUSH2 0x026a 00000265: JUMPI 00000266: PUSH1 0x00 00000268: DUP1 00000269: REVERT 0000026a: JUMPDEST 0000026b: POP 0000026c: PUSH1 0x98 0000026e: SLOAD 0000026f: PUSH2 0x0221 00000272: SWAP1 00000273: PUSH1 0x01 00000275: PUSH1 0x01 00000277: PUSH1 0xa0 00000279: SHL 0000027a: SUB 0000027b: AND 0000027c: DUP2 0000027d: JUMP 0000027e: JUMPDEST 0000027f: CALLVALUE 00000280: DUP1 00000281: ISZERO 00000282: PUSH2 0x028a 00000285: JUMPI 00000286: PUSH1 0x00 00000288: DUP1 00000289: REVERT 0000028a: JUMPDEST 0000028b: POP 0000028c: PUSH2 0x02bf 0000028f: PUSH2 0x0299 00000292: CALLDATASIZE 00000293: PUSH1 0x04 00000295: PUSH2 0x2d7f 00000298: JUMP 00000299: JUMPDEST 0000029a: PUSH1 0x9d 0000029c: PUSH1 0x20 0000029e: SWAP1 0000029f: DUP2 000002a0: MSTORE 000002a1: PUSH1 0x00 000002a3: SWAP4 000002a4: DUP5 000002a5: MSTORE 000002a6: PUSH1 0x40 000002a8: DUP1 000002a9: DUP6 000002aa: KECCAK256 000002ab: DUP3 000002ac: MSTORE 000002ad: SWAP3 000002ae: DUP5 000002af: MSTORE 000002b0: DUP3 000002b1: DUP5 000002b2: KECCAK256 000002b3: SWAP1 000002b4: MSTORE 000002b5: DUP3 000002b6: MSTORE 000002b7: SWAP1 000002b8: KECCAK256 000002b9: SLOAD 000002ba: PUSH1 0xff 000002bc: AND 000002bd: DUP2 000002be: JUMP 000002bf: JUMPDEST 000002c0: PUSH1 0x40 000002c2: MLOAD 000002c3: SWAP1 000002c4: ISZERO 000002c5: ISZERO 000002c6: DUP2 000002c7: MSTORE 000002c8: PUSH1 0x20 000002ca: ADD 000002cb: PUSH2 0x0235 000002ce: JUMP 000002cf: JUMPDEST 000002d0: CALLVALUE 000002d1: DUP1 000002d2: ISZERO 000002d3: PUSH2 0x02db 000002d6: JUMPI 000002d7: PUSH1 0x00 000002d9: DUP1 000002da: REVERT 000002db: JUMPDEST 000002dc: POP 000002dd: PUSH2 0x01da 000002e0: PUSH2 0x02ea 000002e3: CALLDATASIZE 000002e4: PUSH1 0x04 000002e6: PUSH2 0x2dc1 000002e9: JUMP 000002ea: JUMPDEST 000002eb: PUSH2 0x0b36 000002ee: JUMP 000002ef: JUMPDEST 000002f0: CALLVALUE 000002f1: DUP1 000002f2: ISZERO 000002f3: PUSH2 0x02fb 000002f6: JUMPI 000002f7: PUSH1 0x00 000002f9: DUP1 000002fa: REVERT 000002fb: JUMPDEST 000002fc: POP 000002fd: PUSH2 0x01da 00000300: PUSH2 0x030a 00000303: CALLDATASIZE 00000304: PUSH1 0x04 00000306: PUSH2 0x2ded 00000309: JUMP 0000030a: JUMPDEST 0000030b: PUSH2 0x0b46 0000030e: JUMP 0000030f: JUMPDEST 00000310: PUSH2 0x01da 00000313: PUSH2 0x031d 00000316: CALLDATASIZE 00000317: PUSH1 0x04 00000319: PUSH2 0x2e26 0000031c: JUMP 0000031d: JUMPDEST 0000031e: PUSH2 0x0d53 00000321: JUMP 00000322: JUMPDEST 00000323: CALLVALUE 00000324: DUP1 00000325: ISZERO 00000326: PUSH2 0x032e 00000329: JUMPI 0000032a: PUSH1 0x00 0000032c: DUP1 0000032d: REVERT 0000032e: JUMPDEST 0000032f: POP 00000330: PUSH2 0x0337 00000333: PUSH2 0x0edd 00000336: JUMP 00000337: JUMPDEST 00000338: PUSH1 0x40 0000033a: MLOAD 0000033b: SWAP1 0000033c: DUP2 0000033d: MSTORE 0000033e: PUSH1 0x20 00000340: ADD 00000341: PUSH2 0x0235 00000344: JUMP 00000345: JUMPDEST 00000346: CALLVALUE 00000347: DUP1 00000348: ISZERO 00000349: PUSH2 0x0351 0000034c: JUMPI 0000034d: PUSH1 0x00 0000034f: DUP1 00000350: REVERT 00000351: JUMPDEST 00000352: POP 00000353: PUSH2 0x01da 00000356: PUSH2 0x0360 00000359: CALLDATASIZE 0000035a: PUSH1 0x04 0000035c: PUSH2 0x2e76 0000035f: JUMP 00000360: JUMPDEST 00000361: PUSH2 0x0fa2 00000364: JUMP 00000365: JUMPDEST 00000366: CALLVALUE 00000367: DUP1 00000368: ISZERO 00000369: PUSH2 0x0371 0000036c: JUMPI 0000036d: PUSH1 0x00 0000036f: DUP1 00000370: REVERT 00000371: JUMPDEST 00000372: POP 00000373: PUSH2 0x0221 00000376: PUSH2 0x0380 00000379: CALLDATASIZE 0000037a: PUSH1 0x04 0000037c: PUSH2 0x2d62 0000037f: JUMP 00000380: JUMPDEST 00000381: PUSH1 0x9a 00000383: PUSH1 0x20 00000385: MSTORE 00000386: PUSH1 0x00 00000388: SWAP1 00000389: DUP2 0000038a: MSTORE 0000038b: PUSH1 0x40 0000038d: SWAP1 0000038e: KECCAK256 0000038f: SLOAD 00000390: PUSH1 0x01 00000392: PUSH1 0x01 00000394: PUSH1 0xa0 00000396: SHL 00000397: SUB 00000398: AND 00000399: DUP2 0000039a: JUMP 0000039b: JUMPDEST 0000039c: CALLVALUE 0000039d: DUP1 0000039e: ISZERO 0000039f: PUSH2 0x03a7 000003a2: JUMPI 000003a3: PUSH1 0x00 000003a5: DUP1 000003a6: REVERT 000003a7: JUMPDEST 000003a8: POP 000003a9: PUSH1 0x97 000003ab: SLOAD 000003ac: PUSH2 0x02bf 000003af: SWAP1 000003b0: PUSH1 0xff 000003b2: AND 000003b3: DUP2 000003b4: JUMP 000003b5: JUMPDEST 000003b6: CALLVALUE 000003b7: DUP1 000003b8: ISZERO 000003b9: PUSH2 0x03c1 000003bc: JUMPI 000003bd: PUSH1 0x00 000003bf: DUP1 000003c0: REVERT 000003c1: JUMPDEST 000003c2: POP 000003c3: PUSH2 0x01da 000003c6: PUSH2 0x03d0 000003c9: CALLDATASIZE 000003ca: PUSH1 0x04 000003cc: PUSH2 0x2ecb 000003cf: JUMP 000003d0: JUMPDEST 000003d1: PUSH2 0x115c 000003d4: JUMP 000003d5: JUMPDEST 000003d6: CALLVALUE 000003d7: DUP1 000003d8: ISZERO 000003d9: PUSH2 0x03e1 000003dc: JUMPI 000003dd: PUSH1 0x00 000003df: DUP1 000003e0: REVERT 000003e1: JUMPDEST 000003e2: POP 000003e3: PUSH2 0x0337 000003e6: PUSH1 0x99 000003e8: SLOAD 000003e9: DUP2 000003ea: JUMP 000003eb: JUMPDEST 000003ec: CALLVALUE 000003ed: DUP1 000003ee: ISZERO 000003ef: PUSH2 0x03f7 000003f2: JUMPI 000003f3: PUSH1 0x00 000003f5: DUP1 000003f6: REVERT 000003f7: JUMPDEST 000003f8: POP 000003f9: PUSH2 0x01da 000003fc: PUSH2 0x0406 000003ff: CALLDATASIZE 00000400: PUSH1 0x04 00000402: PUSH2 0x2d62 00000405: JUMP 00000406: JUMPDEST 00000407: PUSH2 0x1264 0000040a: JUMP 0000040b: JUMPDEST 0000040c: CALLVALUE 0000040d: DUP1 0000040e: ISZERO 0000040f: PUSH2 0x0417 00000412: JUMPI 00000413: PUSH1 0x00 00000415: DUP1 00000416: REVERT 00000417: JUMPDEST 00000418: POP 00000419: PUSH2 0x0337 0000041c: PUSH2 0x0426 0000041f: CALLDATASIZE 00000420: PUSH1 0x04 00000422: PUSH2 0x2d62 00000425: JUMP 00000426: JUMPDEST 00000427: PUSH1 0x9b 00000429: PUSH1 0x20 0000042b: MSTORE 0000042c: PUSH1 0x00 0000042e: SWAP1 0000042f: DUP2 00000430: MSTORE 00000431: PUSH1 0x40 00000433: SWAP1 00000434: KECCAK256 00000435: SLOAD 00000436: DUP2 00000437: JUMP 00000438: JUMPDEST 00000439: CALLVALUE 0000043a: DUP1 0000043b: ISZERO 0000043c: PUSH2 0x0444 0000043f: JUMPI 00000440: PUSH1 0x00 00000442: DUP1 00000443: REVERT 00000444: JUMPDEST 00000445: POP 00000446: PUSH2 0x02bf 00000449: PUSH2 0x0453 0000044c: CALLDATASIZE 0000044d: PUSH1 0x04 0000044f: PUSH2 0x2dc1 00000452: JUMP 00000453: JUMPDEST 00000454: PUSH1 0x9c 00000456: PUSH1 0x20 00000458: SWAP1 00000459: DUP2 0000045a: MSTORE 0000045b: PUSH1 0x00 0000045d: SWAP3 0000045e: DUP4 0000045f: MSTORE 00000460: PUSH1 0x40 00000462: DUP1 00000463: DUP5 00000464: KECCAK256 00000465: SWAP1 00000466: SWAP2 00000467: MSTORE 00000468: SWAP1 00000469: DUP3 0000046a: MSTORE 0000046b: SWAP1 0000046c: KECCAK256 0000046d: SLOAD 0000046e: PUSH1 0xff 00000470: AND 00000471: DUP2 00000472: JUMP 00000473: JUMPDEST 00000474: CALLVALUE 00000475: DUP1 00000476: ISZERO 00000477: PUSH2 0x047f 0000047a: JUMPI 0000047b: PUSH1 0x00 0000047d: DUP1 0000047e: REVERT 0000047f: JUMPDEST 00000480: POP 00000481: PUSH2 0x01da 00000484: PUSH2 0x048e 00000487: CALLDATASIZE 00000488: PUSH1 0x04 0000048a: PUSH2 0x2ee8 0000048d: JUMP 0000048e: JUMPDEST 0000048f: PUSH2 0x1375 00000492: JUMP 00000493: JUMPDEST 00000494: CALLVALUE 00000495: DUP1 00000496: ISZERO 00000497: PUSH2 0x049f 0000049a: JUMPI 0000049b: PUSH1 0x00 0000049d: DUP1 0000049e: REVERT 0000049f: JUMPDEST 000004a0: POP 000004a1: PUSH2 0x01da 000004a4: PUSH2 0x04ae 000004a7: CALLDATASIZE 000004a8: PUSH1 0x04 000004aa: PUSH2 0x2d62 000004ad: JUMP 000004ae: JUMPDEST 000004af: PUSH2 0x1381 000004b2: JUMP 000004b3: JUMPDEST 000004b4: PUSH2 0x04bb 000004b7: PUSH2 0x1799 000004ba: JUMP 000004bb: JUMPDEST 000004bc: PUSH1 0x97 000004be: SLOAD 000004bf: PUSH1 0xff 000004c1: AND 000004c2: ISZERO 000004c3: PUSH2 0x050e 000004c6: JUMPI 000004c7: PUSH1 0x40 000004c9: MLOAD 000004ca: PUSH3 0x461bcd 000004ce: PUSH1 0xe5 000004d0: SHL 000004d1: DUP2 000004d2: MSTORE 000004d3: PUSH1 0x20 000004d5: PUSH1 0x04 000004d7: DUP3 000004d8: ADD 000004d9: MSTORE 000004da: PUSH1 0x06 000004dc: PUSH1 0x24 000004de: DUP3 000004df: ADD 000004e0: MSTORE 000004e1: PUSH32 0x5061757365640000000000000000000000000000000000000000000000000000 00000502: PUSH1 0x44 00000504: DUP3 00000505: ADD 00000506: MSTORE 00000507: PUSH1 0x64 00000509: ADD 0000050a: PUSH2 0x01ac 0000050d: JUMP 0000050e: JUMPDEST 0000050f: PUSH1 0x00 00000511: DUP1 00000512: PUSH1 0x00 00000514: DUP1 00000515: PUSH1 0x00 00000517: DUP1 00000518: DUP7 00000519: DUP1 0000051a: PUSH1 0x20 0000051c: ADD 0000051d: SWAP1 0000051e: MLOAD 0000051f: DUP2 00000520: ADD 00000521: SWAP1 00000522: PUSH2 0x052b 00000525: SWAP2 00000526: SWAP1 00000527: PUSH2 0x2f29 0000052a: JUMP 0000052b: JUMPDEST 0000052c: PUSH1 0x98 0000052e: SLOAD 0000052f: SWAP6 00000530: SWAP12 00000531: POP 00000532: SWAP4 00000533: SWAP10 00000534: POP 00000535: SWAP2 00000536: SWAP8 00000537: POP 00000538: SWAP6 00000539: POP 0000053a: SWAP4 0000053b: POP 0000053c: SWAP2 0000053d: POP 0000053e: PUSH1 0x01 00000540: PUSH1 0x01 00000542: PUSH1 0xa0 00000544: SHL 00000545: SUB 00000546: AND 00000547: PUSH2 0x0592 0000054a: JUMPI 0000054b: PUSH1 0x40 0000054d: MLOAD 0000054e: PUSH3 0x461bcd 00000552: PUSH1 0xe5 00000554: SHL 00000555: DUP2 00000556: MSTORE 00000557: PUSH1 0x20 00000559: PUSH1 0x04 0000055b: DUP3 0000055c: ADD 0000055d: MSTORE 0000055e: PUSH1 0x0f 00000560: PUSH1 0x24 00000562: DUP3 00000563: ADD 00000564: MSTORE 00000565: PUSH32 0x4e6f7420696d706c656d656e7465640000000000000000000000000000000000 00000586: PUSH1 0x44 00000588: DUP3 00000589: ADD 0000058a: MSTORE 0000058b: PUSH1 0x64 0000058d: ADD 0000058e: PUSH2 0x01ac 00000591: JUMP 00000592: JUMPDEST 00000593: PUSH1 0x00 00000595: DUP2 00000596: GT 00000597: PUSH2 0x05e2 0000059a: JUMPI 0000059b: PUSH1 0x40 0000059d: MLOAD 0000059e: PUSH3 0x461bcd 000005a2: PUSH1 0xe5 000005a4: SHL 000005a5: DUP2 000005a6: MSTORE 000005a7: PUSH1 0x20 000005a9: PUSH1 0x04 000005ab: DUP3 000005ac: ADD 000005ad: MSTORE 000005ae: PUSH1 0x11 000005b0: PUSH1 0x24 000005b2: DUP3 000005b3: ADD 000005b4: MSTORE 000005b5: PUSH32 0x4e6f7420656e6f75676820616d6f756e74000000000000000000000000000000 000005d6: PUSH1 0x44 000005d8: DUP3 000005d9: ADD 000005da: MSTORE 000005db: PUSH1 0x64 000005dd: ADD 000005de: PUSH2 0x01ac 000005e1: JUMP 000005e2: JUMPDEST 000005e3: PUSH1 0x01 000005e5: PUSH1 0x01 000005e7: PUSH1 0xa0 000005e9: SHL 000005ea: SUB 000005eb: DUP3 000005ec: AND 000005ed: PUSH2 0x0638 000005f0: JUMPI 000005f1: PUSH1 0x40 000005f3: MLOAD 000005f4: PUSH3 0x461bcd 000005f8: PUSH1 0xe5 000005fa: SHL 000005fb: DUP2 000005fc: MSTORE 000005fd: PUSH1 0x20 000005ff: PUSH1 0x04 00000601: DUP3 00000602: ADD 00000603: MSTORE 00000604: PUSH1 0x0f 00000606: PUSH1 0x24 00000608: DUP3 00000609: ADD 0000060a: MSTORE 0000060b: PUSH32 0x496e76616c696420616464726573730000000000000000000000000000000000 0000062c: PUSH1 0x44 0000062e: DUP3 0000062f: ADD 00000630: MSTORE 00000631: PUSH1 0x64 00000633: ADD 00000634: PUSH2 0x01ac 00000637: JUMP 00000638: JUMPDEST 00000639: PUSH1 0x01 0000063b: PUSH1 0x01 0000063d: PUSH1 0xa0 0000063f: SHL 00000640: SUB 00000641: DUP7 00000642: AND 00000643: PUSH1 0x00 00000645: SWAP1 00000646: DUP2 00000647: MSTORE 00000648: PUSH1 0x9c 0000064a: PUSH1 0x20 0000064c: SWAP1 0000064d: DUP2 0000064e: MSTORE 0000064f: PUSH1 0x40 00000651: DUP1 00000652: DUP4 00000653: KECCAK256 00000654: DUP9 00000655: DUP5 00000656: MSTORE 00000657: SWAP1 00000658: SWAP2 00000659: MSTORE 0000065a: SWAP1 0000065b: KECCAK256 0000065c: SLOAD 0000065d: PUSH1 0xff 0000065f: AND 00000660: ISZERO 00000661: PUSH2 0x06ac 00000664: JUMPI 00000665: PUSH1 0x40 00000667: MLOAD 00000668: PUSH3 0x461bcd 0000066c: PUSH1 0xe5 0000066e: SHL 0000066f: DUP2 00000670: MSTORE 00000671: PUSH1 0x20 00000673: PUSH1 0x04 00000675: DUP3 00000676: ADD 00000677: MSTORE 00000678: PUSH1 0x16 0000067a: PUSH1 0x24 0000067c: DUP3 0000067d: ADD 0000067e: MSTORE 0000067f: PUSH32 0x4f7264657220616c726561647920657865637574656400000000000000000000 000006a0: PUSH1 0x44 000006a2: DUP3 000006a3: ADD 000006a4: MSTORE 000006a5: PUSH1 0x64 000006a7: ADD 000006a8: PUSH2 0x01ac 000006ab: JUMP 000006ac: JUMPDEST 000006ad: DUP8 000006ae: MLOAD 000006af: DUP10 000006b0: MLOAD 000006b1: EQ 000006b2: PUSH2 0x06fd 000006b5: JUMPI 000006b6: PUSH1 0x40 000006b8: MLOAD 000006b9: PUSH3 0x461bcd 000006bd: PUSH1 0xe5 000006bf: SHL 000006c0: DUP2 000006c1: MSTORE 000006c2: PUSH1 0x20 000006c4: PUSH1 0x04 000006c6: DUP3 000006c7: ADD 000006c8: MSTORE 000006c9: PUSH1 0x0e 000006cb: PUSH1 0x24 000006cd: DUP3 000006ce: ADD 000006cf: MSTORE 000006d0: PUSH32 0x496e707574206d69736d61746368000000000000000000000000000000000000 000006f1: PUSH1 0x44 000006f3: DUP3 000006f4: ADD 000006f5: MSTORE 000006f6: PUSH1 0x64 000006f8: ADD 000006f9: PUSH2 0x01ac 000006fc: JUMP 000006fd: JUMPDEST 000006fe: PUSH1 0x01 00000700: PUSH1 0x01 00000702: PUSH1 0xa0 00000704: SHL 00000705: SUB 00000706: DUP5 00000707: DUP2 00000708: AND 00000709: PUSH1 0x00 0000070b: SWAP1 0000070c: DUP2 0000070d: MSTORE 0000070e: PUSH1 0x9a 00000710: PUSH1 0x20 00000712: MSTORE 00000713: PUSH1 0x40 00000715: SWAP1 00000716: KECCAK256 00000717: SLOAD 00000718: DUP2 00000719: AND 0000071a: SWAP1 0000071b: DUP5 0000071c: AND 0000071d: EQ 0000071e: PUSH2 0x0769 00000721: JUMPI 00000722: PUSH1 0x40 00000724: MLOAD 00000725: PUSH3 0x461bcd 00000729: PUSH1 0xe5 0000072b: SHL 0000072c: DUP2 0000072d: MSTORE 0000072e: PUSH1 0x20 00000730: PUSH1 0x04 00000732: DUP3 00000733: ADD 00000734: MSTORE 00000735: PUSH1 0x15 00000737: PUSH1 0x24 00000739: DUP3 0000073a: ADD 0000073b: MSTORE 0000073c: PUSH32 0x496e76616c696420746f6b656e20676174657761790000000000000000000000 0000075d: PUSH1 0x44 0000075f: DUP3 00000760: ADD 00000761: MSTORE 00000762: PUSH1 0x64 00000764: ADD 00000765: PUSH2 0x01ac 00000768: JUMP 00000769: JUMPDEST 0000076a: PUSH1 0x00 0000076c: CHAINID 0000076d: DUP9 0000076e: PUSH1 0x40 00000770: MLOAD 00000771: PUSH1 0x20 00000773: ADD 00000774: PUSH2 0x077e 00000777: SWAP3 00000778: SWAP2 00000779: SWAP1 0000077a: PUSH2 0x2fc0 0000077d: JUMP 0000077e: JUMPDEST 0000077f: PUSH1 0x40 00000781: MLOAD 00000782: PUSH1 0x20 00000784: DUP2 00000785: DUP4 00000786: SUB 00000787: SUB 00000788: DUP2 00000789: MSTORE 0000078a: SWAP1 0000078b: PUSH1 0x40 0000078d: MSTORE 0000078e: DUP1 0000078f: MLOAD 00000790: SWAP1 00000791: PUSH1 0x20 00000793: ADD 00000794: KECCAK256 00000795: SWAP1 00000796: POP 00000797: PUSH2 0x081a 0000079a: DUP8 0000079b: DUP8 0000079c: DUP13 0000079d: DUP13 0000079e: DUP6 0000079f: PUSH1 0x97 000007a1: PUSH1 0x01 000007a3: SWAP1 000007a4: SLOAD 000007a5: SWAP1 000007a6: PUSH2 0x0100 000007a9: EXP 000007aa: SWAP1 000007ab: DIV 000007ac: PUSH1 0x01 000007ae: PUSH1 0x01 000007b0: PUSH1 0xa0 000007b2: SHL 000007b3: SUB 000007b4: AND 000007b5: PUSH1 0x01 000007b7: PUSH1 0x01 000007b9: PUSH1 0xa0 000007bb: SHL 000007bc: SUB 000007bd: AND 000007be: PUSH4 0x65ee3557 000007c3: PUSH1 0x40 000007c5: MLOAD 000007c6: DUP2 000007c7: PUSH4 0xffffffff 000007cc: AND 000007cd: PUSH1 0xe0 000007cf: SHL 000007d0: DUP2 000007d1: MSTORE 000007d2: PUSH1 0x04 000007d4: ADD 000007d5: PUSH1 0x20 000007d7: PUSH1 0x40 000007d9: MLOAD 000007da: DUP1 000007db: DUP4 000007dc: SUB 000007dd: DUP2 000007de: DUP7 000007df: GAS 000007e0: STATICCALL 000007e1: ISZERO 000007e2: DUP1 000007e3: ISZERO 000007e4: PUSH2 0x07f1 000007e7: JUMPI 000007e8: RETURNDATASIZE 000007e9: PUSH1 0x00 000007eb: DUP1 000007ec: RETURNDATACOPY 000007ed: RETURNDATASIZE 000007ee: PUSH1 0x00 000007f0: REVERT 000007f1: JUMPDEST 000007f2: POP 000007f3: POP 000007f4: POP 000007f5: POP 000007f6: PUSH1 0x40 000007f8: MLOAD 000007f9: RETURNDATASIZE 000007fa: PUSH1 0x1f 000007fc: NOT 000007fd: PUSH1 0x1f 000007ff: DUP3 00000800: ADD 00000801: AND 00000802: DUP3 00000803: ADD 00000804: DUP1 00000805: PUSH1 0x40 00000807: MSTORE 00000808: POP 00000809: DUP2 0000080a: ADD 0000080b: SWAP1 0000080c: PUSH2 0x0815 0000080f: SWAP2 00000810: SWAP1 00000811: PUSH2 0x2fe6 00000814: JUMP 00000815: JUMPDEST 00000816: PUSH2 0x17f2 00000819: JUMP 0000081a: JUMPDEST 0000081b: PUSH1 0x01 0000081d: PUSH1 0x01 0000081f: PUSH1 0xa0 00000821: SHL 00000822: SUB 00000823: DUP1 00000824: DUP9 00000825: AND 00000826: PUSH1 0x00 00000828: SWAP1 00000829: DUP2 0000082a: MSTORE 0000082b: PUSH1 0x9c 0000082d: PUSH1 0x20 0000082f: SWAP1 00000830: DUP2 00000831: MSTORE 00000832: PUSH1 0x40 00000834: DUP1 00000835: DUP4 00000836: KECCAK256 00000837: DUP11 00000838: DUP5 00000839: MSTORE 0000083a: SWAP1 0000083b: SWAP2 0000083c: MSTORE 0000083d: SWAP1 0000083e: KECCAK256 0000083f: DUP1 00000840: SLOAD 00000841: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000862: AND 00000863: PUSH1 0x01 00000865: OR 00000866: SWAP1 00000867: SSTORE 00000868: PUSH2 0x0874 0000086b: SWAP1 0000086c: DUP7 0000086d: AND 0000086e: DUP5 0000086f: DUP5 00000870: PUSH2 0x1bfe 00000873: JUMP 00000874: JUMPDEST 00000875: PUSH1 0x40 00000877: MLOAD 00000878: DUP2 00000879: DUP2 0000087a: MSTORE 0000087b: PUSH32 0xdb8766dc7a4cbe0b9d514534307d6ed0bc09c930e535e9c61badb099479e13b6 0000089c: SWAP1 0000089d: PUSH1 0x20 0000089f: ADD 000008a0: PUSH1 0x40 000008a2: MLOAD 000008a3: DUP1 000008a4: SWAP2 000008a5: SUB 000008a6: SWAP1 000008a7: LOG1 000008a8: POP 000008a9: POP 000008aa: POP 000008ab: POP 000008ac: POP 000008ad: POP 000008ae: POP 000008af: PUSH2 0x08b8 000008b2: PUSH1 0x01 000008b4: PUSH1 0x65 000008b6: SSTORE 000008b7: JUMP 000008b8: JUMPDEST 000008b9: POP 000008ba: POP 000008bb: POP 000008bc: JUMP 000008bd: JUMPDEST 000008be: PUSH1 0x97 000008c0: PUSH1 0x01 000008c2: SWAP1 000008c3: SLOAD 000008c4: SWAP1 000008c5: PUSH2 0x0100 000008c8: EXP 000008c9: SWAP1 000008ca: DIV 000008cb: PUSH1 0x01 000008cd: PUSH1 0x01 000008cf: PUSH1 0xa0 000008d1: SHL 000008d2: SUB 000008d3: AND 000008d4: PUSH1 0x01 000008d6: PUSH1 0x01 000008d8: PUSH1 0xa0 000008da: SHL 000008db: SUB 000008dc: AND 000008dd: PUSH4 0x3c81df21 000008e2: PUSH1 0x40 000008e4: MLOAD 000008e5: DUP2 000008e6: PUSH4 0xffffffff 000008eb: AND 000008ec: PUSH1 0xe0 000008ee: SHL 000008ef: DUP2 000008f0: MSTORE 000008f1: PUSH1 0x04 000008f3: ADD 000008f4: PUSH1 0x20 000008f6: PUSH1 0x40 000008f8: MLOAD 000008f9: DUP1 000008fa: DUP4 000008fb: SUB 000008fc: DUP2 000008fd: DUP7 000008fe: GAS 000008ff: STATICCALL 00000900: ISZERO 00000901: DUP1 00000902: ISZERO 00000903: PUSH2 0x0910 00000906: JUMPI 00000907: RETURNDATASIZE 00000908: PUSH1 0x00 0000090a: DUP1 0000090b: RETURNDATACOPY 0000090c: RETURNDATASIZE 0000090d: PUSH1 0x00 0000090f: REVERT 00000910: JUMPDEST 00000911: POP 00000912: POP 00000913: POP 00000914: POP 00000915: PUSH1 0x40 00000917: MLOAD 00000918: RETURNDATASIZE 00000919: PUSH1 0x1f 0000091b: NOT 0000091c: PUSH1 0x1f 0000091e: DUP3 0000091f: ADD 00000920: AND 00000921: DUP3 00000922: ADD 00000923: DUP1 00000924: PUSH1 0x40 00000926: MSTORE 00000927: POP 00000928: DUP2 00000929: ADD 0000092a: SWAP1 0000092b: PUSH2 0x0934 0000092e: SWAP2 0000092f: SWAP1 00000930: PUSH2 0x2fff 00000933: JUMP 00000934: JUMPDEST 00000935: PUSH1 0x01 00000937: PUSH1 0x01 00000939: PUSH1 0xa0 0000093b: SHL 0000093c: SUB 0000093d: AND 0000093e: CALLER 0000093f: PUSH1 0x01 00000941: PUSH1 0x01 00000943: PUSH1 0xa0 00000945: SHL 00000946: SUB 00000947: AND 00000948: EQ 00000949: PUSH2 0x0994 0000094c: JUMPI 0000094d: PUSH1 0x40 0000094f: MLOAD 00000950: PUSH3 0x461bcd 00000954: PUSH1 0xe5 00000956: SHL 00000957: DUP2 00000958: MSTORE 00000959: PUSH1 0x20 0000095b: PUSH1 0x04 0000095d: DUP3 0000095e: ADD 0000095f: MSTORE 00000960: PUSH1 0x11 00000962: PUSH1 0x24 00000964: DUP3 00000965: ADD 00000966: MSTORE 00000967: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 00000988: PUSH1 0x44 0000098a: DUP3 0000098b: ADD 0000098c: MSTORE 0000098d: PUSH1 0x64 0000098f: ADD 00000990: PUSH2 0x01ac 00000993: JUMP 00000994: JUMPDEST 00000995: PUSH1 0x99 00000997: SSTORE 00000998: JUMP 00000999: JUMPDEST 0000099a: PUSH1 0x01 0000099c: PUSH1 0x01 0000099e: PUSH1 0xa0 000009a0: SHL 000009a1: SUB 000009a2: PUSH32 0x000000000000000000000000a8372d6ff00d48a25baa1af16d6a86c936708f4e 000009c3: AND 000009c4: ADDRESS 000009c5: SUB 000009c6: PUSH2 0x0a37 000009c9: JUMPI 000009ca: PUSH1 0x40 000009cc: MLOAD 000009cd: PUSH3 0x461bcd 000009d1: PUSH1 0xe5 000009d3: SHL 000009d4: DUP2 000009d5: MSTORE 000009d6: PUSH1 0x20 000009d8: PUSH1 0x04 000009da: DUP3 000009db: ADD 000009dc: MSTORE 000009dd: PUSH1 0x2c 000009df: PUSH1 0x24 000009e1: DUP3 000009e2: ADD 000009e3: MSTORE 000009e4: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000a05: PUSH1 0x44 00000a07: DUP3 00000a08: ADD 00000a09: MSTORE 00000a0a: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000 00000a2b: PUSH1 0x64 00000a2d: DUP3 00000a2e: ADD 00000a2f: MSTORE 00000a30: PUSH1 0x84 00000a32: ADD 00000a33: PUSH2 0x01ac 00000a36: JUMP 00000a37: JUMPDEST 00000a38: PUSH32 0x000000000000000000000000a8372d6ff00d48a25baa1af16d6a86c936708f4e 00000a59: PUSH1 0x01 00000a5b: PUSH1 0x01 00000a5d: PUSH1 0xa0 00000a5f: SHL 00000a60: SUB 00000a61: AND 00000a62: PUSH2 0x0a92 00000a65: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000a86: SLOAD 00000a87: PUSH1 0x01 00000a89: PUSH1 0x01 00000a8b: PUSH1 0xa0 00000a8d: SHL 00000a8e: SUB 00000a8f: AND 00000a90: SWAP1 00000a91: JUMP 00000a92: JUMPDEST 00000a93: PUSH1 0x01 00000a95: PUSH1 0x01 00000a97: PUSH1 0xa0 00000a99: SHL 00000a9a: SUB 00000a9b: AND 00000a9c: EQ 00000a9d: PUSH2 0x0b0e 00000aa0: JUMPI 00000aa1: PUSH1 0x40 00000aa3: MLOAD 00000aa4: PUSH3 0x461bcd 00000aa8: PUSH1 0xe5 00000aaa: SHL 00000aab: DUP2 00000aac: MSTORE 00000aad: PUSH1 0x20 00000aaf: PUSH1 0x04 00000ab1: DUP3 00000ab2: ADD 00000ab3: MSTORE 00000ab4: PUSH1 0x2c 00000ab6: PUSH1 0x24 00000ab8: DUP3 00000ab9: ADD 00000aba: MSTORE 00000abb: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000adc: PUSH1 0x44 00000ade: DUP3 00000adf: ADD 00000ae0: MSTORE 00000ae1: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000 00000b02: PUSH1 0x64 00000b04: DUP3 00000b05: ADD 00000b06: MSTORE 00000b07: PUSH1 0x84 00000b09: ADD 00000b0a: PUSH2 0x01ac 00000b0d: JUMP 00000b0e: JUMPDEST 00000b0f: PUSH2 0x0b17 00000b12: DUP2 00000b13: PUSH2 0x1cae 00000b16: JUMP 00000b17: JUMPDEST 00000b18: PUSH1 0x40 00000b1a: DUP1 00000b1b: MLOAD 00000b1c: PUSH1 0x00 00000b1e: DUP1 00000b1f: DUP3 00000b20: MSTORE 00000b21: PUSH1 0x20 00000b23: DUP3 00000b24: ADD 00000b25: SWAP1 00000b26: SWAP3 00000b27: MSTORE 00000b28: PUSH2 0x0b33 00000b2b: SWAP2 00000b2c: DUP4 00000b2d: SWAP2 00000b2e: SWAP1 00000b2f: PUSH2 0x1d85 00000b32: JUMP 00000b33: JUMPDEST 00000b34: POP 00000b35: JUMP 00000b36: JUMPDEST 00000b37: PUSH2 0x0b42 00000b3a: DUP3 00000b3b: CALLER 00000b3c: CALLER 00000b3d: DUP5 00000b3e: PUSH2 0x1f25 00000b41: JUMP 00000b42: JUMPDEST 00000b43: POP 00000b44: POP 00000b45: JUMP 00000b46: JUMPDEST 00000b47: PUSH1 0x00 00000b49: SLOAD 00000b4a: PUSH2 0x0100 00000b4d: SWAP1 00000b4e: DIV 00000b4f: PUSH1 0xff 00000b51: AND 00000b52: ISZERO 00000b53: DUP1 00000b54: DUP1 00000b55: ISZERO 00000b56: PUSH2 0x0b66 00000b59: JUMPI 00000b5a: POP 00000b5b: PUSH1 0x00 00000b5d: SLOAD 00000b5e: PUSH1 0x01 00000b60: PUSH1 0xff 00000b62: SWAP1 00000b63: SWAP2 00000b64: AND 00000b65: LT 00000b66: JUMPDEST 00000b67: DUP1 00000b68: PUSH2 0x0b80 00000b6b: JUMPI 00000b6c: POP 00000b6d: ADDRESS 00000b6e: EXTCODESIZE 00000b6f: ISZERO 00000b70: DUP1 00000b71: ISZERO 00000b72: PUSH2 0x0b80 00000b75: JUMPI 00000b76: POP 00000b77: PUSH1 0x00 00000b79: SLOAD 00000b7a: PUSH1 0xff 00000b7c: AND 00000b7d: PUSH1 0x01 00000b7f: EQ 00000b80: JUMPDEST 00000b81: PUSH2 0x0bf2 00000b84: JUMPI 00000b85: PUSH1 0x40 00000b87: MLOAD 00000b88: PUSH3 0x461bcd 00000b8c: PUSH1 0xe5 00000b8e: SHL 00000b8f: DUP2 00000b90: MSTORE 00000b91: PUSH1 0x20 00000b93: PUSH1 0x04 00000b95: DUP3 00000b96: ADD 00000b97: MSTORE 00000b98: PUSH1 0x2e 00000b9a: PUSH1 0x24 00000b9c: DUP3 00000b9d: ADD 00000b9e: MSTORE 00000b9f: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00000bc0: PUSH1 0x44 00000bc2: DUP3 00000bc3: ADD 00000bc4: MSTORE 00000bc5: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00000be6: PUSH1 0x64 00000be8: DUP3 00000be9: ADD 00000bea: MSTORE 00000beb: PUSH1 0x84 00000bed: ADD 00000bee: PUSH2 0x01ac 00000bf1: JUMP 00000bf2: JUMPDEST 00000bf3: PUSH1 0x00 00000bf5: DUP1 00000bf6: SLOAD 00000bf7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000c18: AND 00000c19: PUSH1 0x01 00000c1b: OR 00000c1c: SWAP1 00000c1d: SSTORE 00000c1e: DUP1 00000c1f: ISZERO 00000c20: PUSH2 0x0c50 00000c23: JUMPI 00000c24: PUSH1 0x00 00000c26: DUP1 00000c27: SLOAD 00000c28: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00000c49: AND 00000c4a: PUSH2 0x0100 00000c4d: OR 00000c4e: SWAP1 00000c4f: SSTORE 00000c50: JUMPDEST 00000c51: PUSH2 0x0c58 00000c54: PUSH2 0x21c3 00000c57: JUMP 00000c58: JUMPDEST 00000c59: PUSH2 0x0cec 00000c5c: DUP4 00000c5d: DUP4 00000c5e: PUSH1 0x97 00000c60: DUP1 00000c61: SLOAD 00000c62: PUSH1 0x01 00000c64: PUSH1 0x01 00000c66: PUSH1 0xa0 00000c68: SHL 00000c69: SUB 00000c6a: SWAP4 00000c6b: DUP5 00000c6c: AND 00000c6d: PUSH2 0x0100 00000c70: MUL 00000c71: PUSH32 0xffffffffffffffffffffff0000000000000000000000000000000000000000ff 00000c92: SWAP1 00000c93: SWAP2 00000c94: AND 00000c95: OR 00000c96: SWAP1 00000c97: SSTORE 00000c98: PUSH1 0x98 00000c9a: DUP1 00000c9b: SLOAD 00000c9c: SWAP2 00000c9d: SWAP1 00000c9e: SWAP3 00000c9f: AND 00000ca0: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000cc1: SWAP1 00000cc2: SWAP2 00000cc3: AND 00000cc4: OR 00000cc5: SWAP1 00000cc6: SSTORE 00000cc7: PUSH32 0xb9ae7ba14d826de669be54f7c79008181b430f21bd3ff90dac8cce1e60ae88a9 00000ce8: PUSH1 0x99 00000cea: SSTORE 00000ceb: JUMP 00000cec: JUMPDEST 00000ced: DUP1 00000cee: ISZERO 00000cef: PUSH2 0x08b8 00000cf2: JUMPI 00000cf3: PUSH1 0x00 00000cf5: DUP1 00000cf6: SLOAD 00000cf7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00000d18: AND 00000d19: SWAP1 00000d1a: SSTORE 00000d1b: PUSH1 0x40 00000d1d: MLOAD 00000d1e: PUSH1 0x01 00000d20: DUP2 00000d21: MSTORE 00000d22: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00000d43: SWAP1 00000d44: PUSH1 0x20 00000d46: ADD 00000d47: PUSH1 0x40 00000d49: MLOAD 00000d4a: DUP1 00000d4b: SWAP2 00000d4c: SUB 00000d4d: SWAP1 00000d4e: LOG1 00000d4f: POP 00000d50: POP 00000d51: POP 00000d52: JUMP 00000d53: JUMPDEST 00000d54: PUSH1 0x01 00000d56: PUSH1 0x01 00000d58: PUSH1 0xa0 00000d5a: SHL 00000d5b: SUB 00000d5c: PUSH32 0x000000000000000000000000a8372d6ff00d48a25baa1af16d6a86c936708f4e 00000d7d: AND 00000d7e: ADDRESS 00000d7f: SUB 00000d80: PUSH2 0x0df1 00000d83: JUMPI 00000d84: PUSH1 0x40 00000d86: MLOAD 00000d87: PUSH3 0x461bcd 00000d8b: PUSH1 0xe5 00000d8d: SHL 00000d8e: DUP2 00000d8f: MSTORE 00000d90: PUSH1 0x20 00000d92: PUSH1 0x04 00000d94: DUP3 00000d95: ADD 00000d96: MSTORE 00000d97: PUSH1 0x2c 00000d99: PUSH1 0x24 00000d9b: DUP3 00000d9c: ADD 00000d9d: MSTORE 00000d9e: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000dbf: PUSH1 0x44 00000dc1: DUP3 00000dc2: ADD 00000dc3: MSTORE 00000dc4: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000 00000de5: PUSH1 0x64 00000de7: DUP3 00000de8: ADD 00000de9: MSTORE 00000dea: PUSH1 0x84 00000dec: ADD 00000ded: PUSH2 0x01ac 00000df0: JUMP 00000df1: JUMPDEST 00000df2: PUSH32 0x000000000000000000000000a8372d6ff00d48a25baa1af16d6a86c936708f4e 00000e13: PUSH1 0x01 00000e15: PUSH1 0x01 00000e17: PUSH1 0xa0 00000e19: SHL 00000e1a: SUB 00000e1b: AND 00000e1c: PUSH2 0x0e4c 00000e1f: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000e40: SLOAD 00000e41: PUSH1 0x01 00000e43: PUSH1 0x01 00000e45: PUSH1 0xa0 00000e47: SHL 00000e48: SUB 00000e49: AND 00000e4a: SWAP1 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: PUSH1 0x01 00000e4f: PUSH1 0x01 00000e51: PUSH1 0xa0 00000e53: SHL 00000e54: SUB 00000e55: AND 00000e56: EQ 00000e57: PUSH2 0x0ec8 00000e5a: JUMPI 00000e5b: PUSH1 0x40 00000e5d: MLOAD 00000e5e: PUSH3 0x461bcd 00000e62: PUSH1 0xe5 00000e64: SHL 00000e65: DUP2 00000e66: MSTORE 00000e67: PUSH1 0x20 00000e69: PUSH1 0x04 00000e6b: DUP3 00000e6c: ADD 00000e6d: MSTORE 00000e6e: PUSH1 0x2c 00000e70: PUSH1 0x24 00000e72: DUP3 00000e73: ADD 00000e74: MSTORE 00000e75: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000e96: PUSH1 0x44 00000e98: DUP3 00000e99: ADD 00000e9a: MSTORE 00000e9b: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000 00000ebc: PUSH1 0x64 00000ebe: DUP3 00000ebf: ADD 00000ec0: MSTORE 00000ec1: PUSH1 0x84 00000ec3: ADD 00000ec4: PUSH2 0x01ac 00000ec7: JUMP 00000ec8: JUMPDEST 00000ec9: PUSH2 0x0ed1 00000ecc: DUP3 00000ecd: PUSH2 0x1cae 00000ed0: JUMP 00000ed1: JUMPDEST 00000ed2: PUSH2 0x0b42 00000ed5: DUP3 00000ed6: DUP3 00000ed7: PUSH1 0x01 00000ed9: PUSH2 0x1d85 00000edc: JUMP 00000edd: JUMPDEST 00000ede: PUSH1 0x00 00000ee0: ADDRESS 00000ee1: PUSH1 0x01 00000ee3: PUSH1 0x01 00000ee5: PUSH1 0xa0 00000ee7: SHL 00000ee8: SUB 00000ee9: PUSH32 0x000000000000000000000000a8372d6ff00d48a25baa1af16d6a86c936708f4e 00000f0a: AND 00000f0b: EQ 00000f0c: PUSH2 0x0f7d 00000f0f: JUMPI 00000f10: PUSH1 0x40 00000f12: MLOAD 00000f13: PUSH3 0x461bcd 00000f17: PUSH1 0xe5 00000f19: SHL 00000f1a: DUP2 00000f1b: MSTORE 00000f1c: PUSH1 0x20 00000f1e: PUSH1 0x04 00000f20: DUP3 00000f21: ADD 00000f22: MSTORE 00000f23: PUSH1 0x38 00000f25: PUSH1 0x24 00000f27: DUP3 00000f28: ADD 00000f29: MSTORE 00000f2a: PUSH32 0x555550535570677261646561626c653a206d757374206e6f742062652063616c 00000f4b: PUSH1 0x44 00000f4d: DUP3 00000f4e: ADD 00000f4f: MSTORE 00000f50: PUSH32 0x6c6564207468726f7567682064656c656761746563616c6c0000000000000000 00000f71: PUSH1 0x64 00000f73: DUP3 00000f74: ADD 00000f75: MSTORE 00000f76: PUSH1 0x84 00000f78: ADD 00000f79: PUSH2 0x01ac 00000f7c: JUMP 00000f7d: JUMPDEST 00000f7e: POP 00000f7f: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000fa0: SWAP1 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH1 0x97 00000fa5: PUSH1 0x01 00000fa7: SWAP1 00000fa8: SLOAD 00000fa9: SWAP1 00000faa: PUSH2 0x0100 00000fad: EXP 00000fae: SWAP1 00000faf: DIV 00000fb0: PUSH1 0x01 00000fb2: PUSH1 0x01 00000fb4: PUSH1 0xa0 00000fb6: SHL 00000fb7: SUB 00000fb8: AND 00000fb9: PUSH1 0x01 00000fbb: PUSH1 0x01 00000fbd: PUSH1 0xa0 00000fbf: SHL 00000fc0: SUB 00000fc1: AND 00000fc2: PUSH4 0x3c81df21 00000fc7: PUSH1 0x40 00000fc9: MLOAD 00000fca: DUP2 00000fcb: PUSH4 0xffffffff 00000fd0: AND 00000fd1: PUSH1 0xe0 00000fd3: SHL 00000fd4: DUP2 00000fd5: MSTORE 00000fd6: PUSH1 0x04 00000fd8: ADD 00000fd9: PUSH1 0x20 00000fdb: PUSH1 0x40 00000fdd: MLOAD 00000fde: DUP1 00000fdf: DUP4 00000fe0: SUB 00000fe1: DUP2 00000fe2: DUP7 00000fe3: GAS 00000fe4: STATICCALL 00000fe5: ISZERO 00000fe6: DUP1 00000fe7: ISZERO 00000fe8: PUSH2 0x0ff5 00000feb: JUMPI 00000fec: RETURNDATASIZE 00000fed: PUSH1 0x00 00000fef: DUP1 00000ff0: RETURNDATACOPY 00000ff1: RETURNDATASIZE 00000ff2: PUSH1 0x00 00000ff4: REVERT 00000ff5: JUMPDEST 00000ff6: POP 00000ff7: POP 00000ff8: POP 00000ff9: POP 00000ffa: PUSH1 0x40 00000ffc: MLOAD 00000ffd: RETURNDATASIZE 00000ffe: PUSH1 0x1f 00001000: NOT 00001001: PUSH1 0x1f 00001003: DUP3 00001004: ADD 00001005: AND 00001006: DUP3 00001007: ADD 00001008: DUP1 00001009: PUSH1 0x40 0000100b: MSTORE 0000100c: POP 0000100d: DUP2 0000100e: ADD 0000100f: SWAP1 00001010: PUSH2 0x1019 00001013: SWAP2 00001014: SWAP1 00001015: PUSH2 0x2fff 00001018: JUMP 00001019: JUMPDEST 0000101a: PUSH1 0x01 0000101c: PUSH1 0x01 0000101e: PUSH1 0xa0 00001020: SHL 00001021: SUB 00001022: AND 00001023: CALLER 00001024: PUSH1 0x01 00001026: PUSH1 0x01 00001028: PUSH1 0xa0 0000102a: SHL 0000102b: SUB 0000102c: AND 0000102d: EQ 0000102e: PUSH2 0x1079 00001031: JUMPI 00001032: PUSH1 0x40 00001034: MLOAD 00001035: PUSH3 0x461bcd 00001039: PUSH1 0xe5 0000103b: SHL 0000103c: DUP2 0000103d: MSTORE 0000103e: PUSH1 0x20 00001040: PUSH1 0x04 00001042: DUP3 00001043: ADD 00001044: MSTORE 00001045: PUSH1 0x11 00001047: PUSH1 0x24 00001049: DUP3 0000104a: ADD 0000104b: MSTORE 0000104c: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 0000106d: PUSH1 0x44 0000106f: DUP3 00001070: ADD 00001071: MSTORE 00001072: PUSH1 0x64 00001074: ADD 00001075: PUSH2 0x01ac 00001078: JUMP 00001079: JUMPDEST 0000107a: PUSH1 0x00 0000107c: JUMPDEST 0000107d: DUP3 0000107e: MLOAD 0000107f: DUP2 00001080: LT 00001081: ISZERO 00001082: PUSH2 0x08b8 00001085: JUMPI 00001086: PUSH1 0x00 00001088: DUP4 00001089: DUP3 0000108a: DUP2 0000108b: MLOAD 0000108c: DUP2 0000108d: LT 0000108e: PUSH2 0x1099 00001091: JUMPI 00001092: PUSH2 0x1099 00001095: PUSH2 0x301c 00001098: JUMP 00001099: JUMPDEST 0000109a: PUSH1 0x20 0000109c: SWAP1 0000109d: DUP2 0000109e: MUL 0000109f: SWAP2 000010a0: SWAP1 000010a1: SWAP2 000010a2: ADD 000010a3: ADD 000010a4: MLOAD 000010a5: PUSH1 0x40 000010a7: MLOAD 000010a8: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 000010c9: DUP2 000010ca: MSTORE 000010cb: ADDRESS 000010cc: PUSH1 0x04 000010ce: DUP3 000010cf: ADD 000010d0: MSTORE 000010d1: SWAP1 000010d2: SWAP2 000010d3: POP 000010d4: PUSH1 0x00 000010d6: SWAP1 000010d7: PUSH1 0x01 000010d9: PUSH1 0x01 000010db: PUSH1 0xa0 000010dd: SHL 000010de: SUB 000010df: DUP4 000010e0: AND 000010e1: SWAP1 000010e2: PUSH4 0x70a08231 000010e7: SWAP1 000010e8: PUSH1 0x24 000010ea: ADD 000010eb: PUSH1 0x20 000010ed: PUSH1 0x40 000010ef: MLOAD 000010f0: DUP1 000010f1: DUP4 000010f2: SUB 000010f3: DUP2 000010f4: DUP7 000010f5: GAS 000010f6: STATICCALL 000010f7: ISZERO 000010f8: DUP1 000010f9: ISZERO 000010fa: PUSH2 0x1107 000010fd: JUMPI 000010fe: RETURNDATASIZE 000010ff: PUSH1 0x00 00001101: DUP1 00001102: RETURNDATACOPY 00001103: RETURNDATASIZE 00001104: PUSH1 0x00 00001106: REVERT 00001107: JUMPDEST 00001108: POP 00001109: POP 0000110a: POP 0000110b: POP 0000110c: PUSH1 0x40 0000110e: MLOAD 0000110f: RETURNDATASIZE 00001110: PUSH1 0x1f 00001112: NOT 00001113: PUSH1 0x1f 00001115: DUP3 00001116: ADD 00001117: AND 00001118: DUP3 00001119: ADD 0000111a: DUP1 0000111b: PUSH1 0x40 0000111d: MSTORE 0000111e: POP 0000111f: DUP2 00001120: ADD 00001121: SWAP1 00001122: PUSH2 0x112b 00001125: SWAP2 00001126: SWAP1 00001127: PUSH2 0x2fe6 0000112a: JUMP 0000112b: JUMPDEST 0000112c: SWAP1 0000112d: POP 0000112e: DUP1 0000112f: ISZERO 00001130: PUSH2 0x1147 00001133: JUMPI 00001134: PUSH2 0x1147 00001137: PUSH1 0x01 00001139: PUSH1 0x01 0000113b: PUSH1 0xa0 0000113d: SHL 0000113e: SUB 0000113f: DUP4 00001140: AND 00001141: DUP6 00001142: DUP4 00001143: PUSH2 0x1bfe 00001146: JUMP 00001147: JUMPDEST 00001148: POP 00001149: POP 0000114a: DUP1 0000114b: DUP1 0000114c: PUSH2 0x1154 0000114f: SWAP1 00001150: PUSH2 0x307a 00001153: JUMP 00001154: JUMPDEST 00001155: SWAP2 00001156: POP 00001157: POP 00001158: PUSH2 0x107c 0000115b: JUMP 0000115c: JUMPDEST 0000115d: PUSH1 0x97 0000115f: PUSH1 0x01 00001161: SWAP1 00001162: SLOAD 00001163: SWAP1 00001164: PUSH2 0x0100 00001167: EXP 00001168: SWAP1 00001169: DIV 0000116a: PUSH1 0x01 0000116c: PUSH1 0x01 0000116e: PUSH1 0xa0 00001170: SHL 00001171: SUB 00001172: AND 00001173: PUSH1 0x01 00001175: PUSH1 0x01 00001177: PUSH1 0xa0 00001179: SHL 0000117a: SUB 0000117b: AND 0000117c: PUSH4 0x3c81df21 00001181: PUSH1 0x40 00001183: MLOAD 00001184: DUP2 00001185: PUSH4 0xffffffff 0000118a: AND 0000118b: PUSH1 0xe0 0000118d: SHL 0000118e: DUP2 0000118f: MSTORE 00001190: PUSH1 0x04 00001192: ADD 00001193: PUSH1 0x20 00001195: PUSH1 0x40 00001197: MLOAD 00001198: DUP1 00001199: DUP4 0000119a: SUB 0000119b: DUP2 0000119c: DUP7 0000119d: GAS 0000119e: STATICCALL 0000119f: ISZERO 000011a0: DUP1 000011a1: ISZERO 000011a2: PUSH2 0x11af 000011a5: JUMPI 000011a6: RETURNDATASIZE 000011a7: PUSH1 0x00 000011a9: DUP1 000011aa: RETURNDATACOPY 000011ab: RETURNDATASIZE 000011ac: PUSH1 0x00 000011ae: REVERT 000011af: JUMPDEST 000011b0: POP 000011b1: POP 000011b2: POP 000011b3: POP 000011b4: PUSH1 0x40 000011b6: MLOAD 000011b7: RETURNDATASIZE 000011b8: PUSH1 0x1f 000011ba: NOT 000011bb: PUSH1 0x1f 000011bd: DUP3 000011be: ADD 000011bf: AND 000011c0: DUP3 000011c1: ADD 000011c2: DUP1 000011c3: PUSH1 0x40 000011c5: MSTORE 000011c6: POP 000011c7: DUP2 000011c8: ADD 000011c9: SWAP1 000011ca: PUSH2 0x11d3 000011cd: SWAP2 000011ce: SWAP1 000011cf: PUSH2 0x2fff 000011d2: JUMP 000011d3: JUMPDEST 000011d4: PUSH1 0x01 000011d6: PUSH1 0x01 000011d8: PUSH1 0xa0 000011da: SHL 000011db: SUB 000011dc: AND 000011dd: CALLER 000011de: PUSH1 0x01 000011e0: PUSH1 0x01 000011e2: PUSH1 0xa0 000011e4: SHL 000011e5: SUB 000011e6: AND 000011e7: EQ 000011e8: PUSH2 0x1233 000011eb: JUMPI 000011ec: PUSH1 0x40 000011ee: MLOAD 000011ef: PUSH3 0x461bcd 000011f3: PUSH1 0xe5 000011f5: SHL 000011f6: DUP2 000011f7: MSTORE 000011f8: PUSH1 0x20 000011fa: PUSH1 0x04 000011fc: DUP3 000011fd: ADD 000011fe: MSTORE 000011ff: PUSH1 0x11 00001201: PUSH1 0x24 00001203: DUP3 00001204: ADD 00001205: MSTORE 00001206: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 00001227: PUSH1 0x44 00001229: DUP3 0000122a: ADD 0000122b: MSTORE 0000122c: PUSH1 0x64 0000122e: ADD 0000122f: PUSH2 0x01ac 00001232: JUMP 00001233: JUMPDEST 00001234: PUSH1 0x97 00001236: DUP1 00001237: SLOAD 00001238: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00001259: AND 0000125a: SWAP2 0000125b: ISZERO 0000125c: ISZERO 0000125d: SWAP2 0000125e: SWAP1 0000125f: SWAP2 00001260: OR 00001261: SWAP1 00001262: SSTORE 00001263: JUMP 00001264: JUMPDEST 00001265: PUSH1 0x97 00001267: PUSH1 0x01 00001269: SWAP1 0000126a: SLOAD 0000126b: SWAP1 0000126c: PUSH2 0x0100 0000126f: EXP 00001270: SWAP1 00001271: DIV 00001272: PUSH1 0x01 00001274: PUSH1 0x01 00001276: PUSH1 0xa0 00001278: SHL 00001279: SUB 0000127a: AND 0000127b: PUSH1 0x01 0000127d: PUSH1 0x01 0000127f: PUSH1 0xa0 00001281: SHL 00001282: SUB 00001283: AND 00001284: PUSH4 0x3c81df21 00001289: PUSH1 0x40 0000128b: MLOAD 0000128c: DUP2 0000128d: PUSH4 0xffffffff 00001292: AND 00001293: PUSH1 0xe0 00001295: SHL 00001296: DUP2 00001297: MSTORE 00001298: PUSH1 0x04 0000129a: ADD 0000129b: PUSH1 0x20 0000129d: PUSH1 0x40 0000129f: MLOAD 000012a0: DUP1 000012a1: DUP4 000012a2: SUB 000012a3: DUP2 000012a4: DUP7 000012a5: GAS 000012a6: STATICCALL 000012a7: ISZERO 000012a8: DUP1 000012a9: ISZERO 000012aa: PUSH2 0x12b7 000012ad: JUMPI 000012ae: RETURNDATASIZE 000012af: PUSH1 0x00 000012b1: DUP1 000012b2: RETURNDATACOPY 000012b3: RETURNDATASIZE 000012b4: PUSH1 0x00 000012b6: REVERT 000012b7: JUMPDEST 000012b8: POP 000012b9: POP 000012ba: POP 000012bb: POP 000012bc: PUSH1 0x40 000012be: MLOAD 000012bf: RETURNDATASIZE 000012c0: PUSH1 0x1f 000012c2: NOT 000012c3: PUSH1 0x1f 000012c5: DUP3 000012c6: ADD 000012c7: AND 000012c8: DUP3 000012c9: ADD 000012ca: DUP1 000012cb: PUSH1 0x40 000012cd: MSTORE 000012ce: POP 000012cf: DUP2 000012d0: ADD 000012d1: SWAP1 000012d2: PUSH2 0x12db 000012d5: SWAP2 000012d6: SWAP1 000012d7: PUSH2 0x2fff 000012da: JUMP 000012db: JUMPDEST 000012dc: PUSH1 0x01 000012de: PUSH1 0x01 000012e0: PUSH1 0xa0 000012e2: SHL 000012e3: SUB 000012e4: AND 000012e5: CALLER 000012e6: PUSH1 0x01 000012e8: PUSH1 0x01 000012ea: PUSH1 0xa0 000012ec: SHL 000012ed: SUB 000012ee: AND 000012ef: EQ 000012f0: PUSH2 0x133b 000012f3: JUMPI 000012f4: PUSH1 0x40 000012f6: MLOAD 000012f7: PUSH3 0x461bcd 000012fb: PUSH1 0xe5 000012fd: SHL 000012fe: DUP2 000012ff: MSTORE 00001300: PUSH1 0x20 00001302: PUSH1 0x04 00001304: DUP3 00001305: ADD 00001306: MSTORE 00001307: PUSH1 0x11 00001309: PUSH1 0x24 0000130b: DUP3 0000130c: ADD 0000130d: MSTORE 0000130e: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 0000132f: PUSH1 0x44 00001331: DUP3 00001332: ADD 00001333: MSTORE 00001334: PUSH1 0x64 00001336: ADD 00001337: PUSH2 0x01ac 0000133a: JUMP 0000133b: JUMPDEST 0000133c: PUSH1 0x98 0000133e: DUP1 0000133f: SLOAD 00001340: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001361: AND 00001362: PUSH1 0x01 00001364: PUSH1 0x01 00001366: PUSH1 0xa0 00001368: SHL 00001369: SUB 0000136a: SWAP3 0000136b: SWAP1 0000136c: SWAP3 0000136d: AND 0000136e: SWAP2 0000136f: SWAP1 00001370: SWAP2 00001371: OR 00001372: SWAP1 00001373: SSTORE 00001374: JUMP 00001375: JUMPDEST 00001376: PUSH2 0x08b8 00001379: DUP4 0000137a: CALLER 0000137b: DUP5 0000137c: DUP5 0000137d: PUSH2 0x1f25 00001380: JUMP 00001381: JUMPDEST 00001382: PUSH1 0x97 00001384: PUSH1 0x01 00001386: SWAP1 00001387: SLOAD 00001388: SWAP1 00001389: PUSH2 0x0100 0000138c: EXP 0000138d: SWAP1 0000138e: DIV 0000138f: PUSH1 0x01 00001391: PUSH1 0x01 00001393: PUSH1 0xa0 00001395: SHL 00001396: SUB 00001397: AND 00001398: PUSH1 0x01 0000139a: PUSH1 0x01 0000139c: PUSH1 0xa0 0000139e: SHL 0000139f: SUB 000013a0: AND 000013a1: PUSH4 0x3c81df21 000013a6: PUSH1 0x40 000013a8: MLOAD 000013a9: DUP2 000013aa: PUSH4 0xffffffff 000013af: AND 000013b0: PUSH1 0xe0 000013b2: SHL 000013b3: DUP2 000013b4: MSTORE 000013b5: PUSH1 0x04 000013b7: ADD 000013b8: PUSH1 0x20 000013ba: PUSH1 0x40 000013bc: MLOAD 000013bd: DUP1 000013be: DUP4 000013bf: SUB 000013c0: DUP2 000013c1: DUP7 000013c2: GAS 000013c3: STATICCALL 000013c4: ISZERO 000013c5: DUP1 000013c6: ISZERO 000013c7: PUSH2 0x13d4 000013ca: JUMPI 000013cb: RETURNDATASIZE 000013cc: PUSH1 0x00 000013ce: DUP1 000013cf: RETURNDATACOPY 000013d0: RETURNDATASIZE 000013d1: PUSH1 0x00 000013d3: REVERT 000013d4: JUMPDEST 000013d5: POP 000013d6: POP 000013d7: POP 000013d8: POP 000013d9: PUSH1 0x40 000013db: MLOAD 000013dc: RETURNDATASIZE 000013dd: PUSH1 0x1f 000013df: NOT 000013e0: PUSH1 0x1f 000013e2: DUP3 000013e3: ADD 000013e4: AND 000013e5: DUP3 000013e6: ADD 000013e7: DUP1 000013e8: PUSH1 0x40 000013ea: MSTORE 000013eb: POP 000013ec: DUP2 000013ed: ADD 000013ee: SWAP1 000013ef: PUSH2 0x13f8 000013f2: SWAP2 000013f3: SWAP1 000013f4: PUSH2 0x2fff 000013f7: JUMP 000013f8: JUMPDEST 000013f9: PUSH1 0x01 000013fb: PUSH1 0x01 000013fd: PUSH1 0xa0 000013ff: SHL 00001400: SUB 00001401: AND 00001402: CALLER 00001403: PUSH1 0x01 00001405: PUSH1 0x01 00001407: PUSH1 0xa0 00001409: SHL 0000140a: SUB 0000140b: AND 0000140c: EQ 0000140d: PUSH2 0x1458 00001410: JUMPI 00001411: PUSH1 0x40 00001413: MLOAD 00001414: PUSH3 0x461bcd 00001418: PUSH1 0xe5 0000141a: SHL 0000141b: DUP2 0000141c: MSTORE 0000141d: PUSH1 0x20 0000141f: PUSH1 0x04 00001421: DUP3 00001422: ADD 00001423: MSTORE 00001424: PUSH1 0x11 00001426: PUSH1 0x24 00001428: DUP3 00001429: ADD 0000142a: MSTORE 0000142b: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 0000144c: PUSH1 0x44 0000144e: DUP3 0000144f: ADD 00001450: MSTORE 00001451: PUSH1 0x64 00001453: ADD 00001454: PUSH2 0x01ac 00001457: JUMP 00001458: JUMPDEST 00001459: PUSH1 0x98 0000145b: SLOAD 0000145c: PUSH1 0x01 0000145e: PUSH1 0x01 00001460: PUSH1 0xa0 00001462: SHL 00001463: SUB 00001464: AND 00001465: PUSH2 0x14b0 00001468: JUMPI 00001469: PUSH1 0x40 0000146b: MLOAD 0000146c: PUSH3 0x461bcd 00001470: PUSH1 0xe5 00001472: SHL 00001473: DUP2 00001474: MSTORE 00001475: PUSH1 0x20 00001477: PUSH1 0x04 00001479: DUP3 0000147a: ADD 0000147b: MSTORE 0000147c: PUSH1 0x0f 0000147e: PUSH1 0x24 00001480: DUP3 00001481: ADD 00001482: MSTORE 00001483: PUSH32 0x496e76616c6964204c3220706169720000000000000000000000000000000000 000014a4: PUSH1 0x44 000014a6: DUP3 000014a7: ADD 000014a8: MSTORE 000014a9: PUSH1 0x64 000014ab: ADD 000014ac: PUSH2 0x01ac 000014af: JUMP 000014b0: JUMPDEST 000014b1: PUSH1 0x01 000014b3: PUSH1 0x01 000014b5: PUSH1 0xa0 000014b7: SHL 000014b8: SUB 000014b9: DUP2 000014ba: DUP2 000014bb: AND 000014bc: PUSH1 0x00 000014be: SWAP1 000014bf: DUP2 000014c0: MSTORE 000014c1: PUSH1 0x9a 000014c3: PUSH1 0x20 000014c5: MSTORE 000014c6: PUSH1 0x40 000014c8: SWAP1 000014c9: KECCAK256 000014ca: SLOAD 000014cb: AND 000014cc: ISZERO 000014cd: PUSH2 0x1518 000014d0: JUMPI 000014d1: PUSH1 0x40 000014d3: MLOAD 000014d4: PUSH3 0x461bcd 000014d8: PUSH1 0xe5 000014da: SHL 000014db: DUP2 000014dc: MSTORE 000014dd: PUSH1 0x20 000014df: PUSH1 0x04 000014e1: DUP3 000014e2: ADD 000014e3: MSTORE 000014e4: PUSH1 0x0e 000014e6: PUSH1 0x24 000014e8: DUP3 000014e9: ADD 000014ea: MSTORE 000014eb: PUSH32 0x416c7265616479206d6170706564000000000000000000000000000000000000 0000150c: PUSH1 0x44 0000150e: DUP3 0000150f: ADD 00001510: MSTORE 00001511: PUSH1 0x64 00001513: ADD 00001514: PUSH2 0x01ac 00001517: JUMP 00001518: JUMPDEST 00001519: PUSH1 0x60 0000151b: DUP2 0000151c: PUSH1 0x01 0000151e: PUSH1 0x01 00001520: PUSH1 0xa0 00001522: SHL 00001523: SUB 00001524: AND 00001525: PUSH4 0x06fdde03 0000152a: PUSH1 0x40 0000152c: MLOAD 0000152d: DUP2 0000152e: PUSH4 0xffffffff 00001533: AND 00001534: PUSH1 0xe0 00001536: SHL 00001537: DUP2 00001538: MSTORE 00001539: PUSH1 0x04 0000153b: ADD 0000153c: PUSH1 0x00 0000153e: PUSH1 0x40 00001540: MLOAD 00001541: DUP1 00001542: DUP4 00001543: SUB 00001544: DUP2 00001545: DUP7 00001546: GAS 00001547: STATICCALL 00001548: SWAP3 00001549: POP 0000154a: POP 0000154b: POP 0000154c: DUP1 0000154d: ISZERO 0000154e: PUSH2 0x1579 00001551: JUMPI 00001552: POP 00001553: PUSH1 0x40 00001555: MLOAD 00001556: RETURNDATASIZE 00001557: PUSH1 0x00 00001559: DUP3 0000155a: RETURNDATACOPY 0000155b: PUSH1 0x1f 0000155d: RETURNDATASIZE 0000155e: SWAP1 0000155f: DUP2 00001560: ADD 00001561: PUSH1 0x1f 00001563: NOT 00001564: AND 00001565: DUP3 00001566: ADD 00001567: PUSH1 0x40 00001569: MSTORE 0000156a: PUSH2 0x1576 0000156d: SWAP2 0000156e: SWAP1 0000156f: DUP2 00001570: ADD 00001571: SWAP1 00001572: PUSH2 0x30b2 00001575: JUMP 00001576: JUMPDEST 00001577: PUSH1 0x01 00001579: JUMPDEST 0000157a: ISZERO 0000157b: PUSH2 0x1581 0000157e: JUMPI 0000157f: SWAP1 00001580: POP 00001581: JUMPDEST 00001582: PUSH1 0x60 00001584: DUP3 00001585: PUSH1 0x01 00001587: PUSH1 0x01 00001589: PUSH1 0xa0 0000158b: SHL 0000158c: SUB 0000158d: AND 0000158e: PUSH4 0x95d89b41 00001593: PUSH1 0x40 00001595: MLOAD 00001596: DUP2 00001597: PUSH4 0xffffffff 0000159c: AND 0000159d: PUSH1 0xe0 0000159f: SHL 000015a0: DUP2 000015a1: MSTORE 000015a2: PUSH1 0x04 000015a4: ADD 000015a5: PUSH1 0x00 000015a7: PUSH1 0x40 000015a9: MLOAD 000015aa: DUP1 000015ab: DUP4 000015ac: SUB 000015ad: DUP2 000015ae: DUP7 000015af: GAS 000015b0: STATICCALL 000015b1: SWAP3 000015b2: POP 000015b3: POP 000015b4: POP 000015b5: DUP1 000015b6: ISZERO 000015b7: PUSH2 0x15e2 000015ba: JUMPI 000015bb: POP 000015bc: PUSH1 0x40 000015be: MLOAD 000015bf: RETURNDATASIZE 000015c0: PUSH1 0x00 000015c2: DUP3 000015c3: RETURNDATACOPY 000015c4: PUSH1 0x1f 000015c6: RETURNDATASIZE 000015c7: SWAP1 000015c8: DUP2 000015c9: ADD 000015ca: PUSH1 0x1f 000015cc: NOT 000015cd: AND 000015ce: DUP3 000015cf: ADD 000015d0: PUSH1 0x40 000015d2: MSTORE 000015d3: PUSH2 0x15df 000015d6: SWAP2 000015d7: SWAP1 000015d8: DUP2 000015d9: ADD 000015da: SWAP1 000015db: PUSH2 0x30b2 000015de: JUMP 000015df: JUMPDEST 000015e0: PUSH1 0x01 000015e2: JUMPDEST 000015e3: ISZERO 000015e4: PUSH2 0x15ea 000015e7: JUMPI 000015e8: SWAP1 000015e9: POP 000015ea: JUMPDEST 000015eb: PUSH1 0x00 000015ed: DUP4 000015ee: PUSH1 0x01 000015f0: PUSH1 0x01 000015f2: PUSH1 0xa0 000015f4: SHL 000015f5: SUB 000015f6: AND 000015f7: PUSH4 0x313ce567 000015fc: PUSH1 0x40 000015fe: MLOAD 000015ff: DUP2 00001600: PUSH4 0xffffffff 00001605: AND 00001606: PUSH1 0xe0 00001608: SHL 00001609: DUP2 0000160a: MSTORE 0000160b: PUSH1 0x04 0000160d: ADD 0000160e: PUSH1 0x20 00001610: PUSH1 0x40 00001612: MLOAD 00001613: DUP1 00001614: DUP4 00001615: SUB 00001616: DUP2 00001617: DUP7 00001618: GAS 00001619: STATICCALL 0000161a: ISZERO 0000161b: DUP1 0000161c: ISZERO 0000161d: PUSH2 0x162a 00001620: JUMPI 00001621: RETURNDATASIZE 00001622: PUSH1 0x00 00001624: DUP1 00001625: RETURNDATACOPY 00001626: RETURNDATASIZE 00001627: PUSH1 0x00 00001629: REVERT 0000162a: JUMPDEST 0000162b: POP 0000162c: POP 0000162d: POP 0000162e: POP 0000162f: PUSH1 0x40 00001631: MLOAD 00001632: RETURNDATASIZE 00001633: PUSH1 0x1f 00001635: NOT 00001636: PUSH1 0x1f 00001638: DUP3 00001639: ADD 0000163a: AND 0000163b: DUP3 0000163c: ADD 0000163d: DUP1 0000163e: PUSH1 0x40 00001640: MSTORE 00001641: POP 00001642: DUP2 00001643: ADD 00001644: SWAP1 00001645: PUSH2 0x164e 00001648: SWAP2 00001649: SWAP1 0000164a: PUSH2 0x3120 0000164d: JUMP 0000164e: JUMPDEST 0000164f: PUSH1 0x40 00001651: MLOAD 00001652: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 00001673: PUSH1 0x60 00001675: DUP8 00001676: SWAP1 00001677: SHL 00001678: AND 00001679: PUSH1 0x20 0000167b: DUP3 0000167c: ADD 0000167d: MSTORE 0000167e: SWAP1 0000167f: SWAP2 00001680: POP 00001681: PUSH1 0x00 00001683: SWAP1 00001684: PUSH1 0x34 00001686: ADD 00001687: PUSH1 0x40 00001689: DUP1 0000168a: MLOAD 0000168b: PUSH1 0x1f 0000168d: NOT 0000168e: DUP2 0000168f: DUP5 00001690: SUB 00001691: ADD 00001692: DUP2 00001693: MSTORE 00001694: SWAP2 00001695: SWAP1 00001696: MSTORE 00001697: DUP1 00001698: MLOAD 00001699: PUSH1 0x20 0000169b: SWAP1 0000169c: SWAP2 0000169d: ADD 0000169e: KECCAK256 0000169f: PUSH1 0x99 000016a1: SLOAD 000016a2: PUSH1 0x98 000016a4: SLOAD 000016a5: SWAP2 000016a6: SWAP3 000016a7: POP 000016a8: PUSH1 0x00 000016aa: SWAP2 000016ab: PUSH2 0x16be 000016ae: SWAP2 000016af: DUP5 000016b0: SWAP2 000016b1: PUSH1 0x01 000016b3: PUSH1 0x01 000016b5: PUSH1 0xa0 000016b7: SHL 000016b8: SUB 000016b9: AND 000016ba: PUSH2 0x224a 000016bd: JUMP 000016be: JUMPDEST 000016bf: PUSH1 0x01 000016c1: PUSH1 0x01 000016c3: PUSH1 0xa0 000016c5: SHL 000016c6: SUB 000016c7: DUP8 000016c8: DUP2 000016c9: AND 000016ca: PUSH1 0x00 000016cc: SWAP1 000016cd: DUP2 000016ce: MSTORE 000016cf: PUSH1 0x9a 000016d1: PUSH1 0x20 000016d3: SWAP1 000016d4: DUP2 000016d5: MSTORE 000016d6: PUSH1 0x40 000016d8: DUP1 000016d9: DUP4 000016da: KECCAK256 000016db: DUP1 000016dc: SLOAD 000016dd: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000016fe: AND 000016ff: SWAP5 00001700: DUP7 00001701: AND 00001702: SWAP5 00001703: SWAP1 00001704: SWAP5 00001705: OR 00001706: SWAP1 00001707: SWAP4 00001708: SSTORE 00001709: CALLER 0000170a: DUP1 0000170b: DUP4 0000170c: MSTORE 0000170d: PUSH1 0x9b 0000170f: DUP3 00001710: MSTORE 00001711: SWAP2 00001712: DUP4 00001713: SWAP1 00001714: KECCAK256 00001715: SLOAD 00001716: SWAP3 00001717: MLOAD 00001718: SWAP4 00001719: SWAP5 0000171a: POP 0000171b: PUSH32 0x1f6a77d013b627d23667409a96b7a68bff41621fe44b53ffc26b3b8da24fdb2f 0000173c: SWAP4 0000173d: PUSH2 0x174f 00001740: SWAP4 00001741: SWAP2 00001742: DUP12 00001743: SWAP2 00001744: DUP12 00001745: SWAP2 00001746: DUP12 00001747: SWAP2 00001748: DUP12 00001749: SWAP2 0000174a: ADD 0000174b: PUSH2 0x316f 0000174e: JUMP 0000174f: JUMPDEST 00001750: PUSH1 0x40 00001752: DUP1 00001753: MLOAD 00001754: PUSH1 0x1f 00001756: NOT 00001757: DUP2 00001758: DUP5 00001759: SUB 0000175a: ADD 0000175b: DUP2 0000175c: MSTORE 0000175d: SWAP1 0000175e: DUP3 0000175f: SWAP1 00001760: MSTORE 00001761: PUSH2 0x1769 00001764: SWAP2 00001765: PUSH2 0x31ca 00001768: JUMP 00001769: JUMPDEST 0000176a: PUSH1 0x40 0000176c: MLOAD 0000176d: DUP1 0000176e: SWAP2 0000176f: SUB 00001770: SWAP1 00001771: LOG1 00001772: CALLER 00001773: PUSH1 0x00 00001775: SWAP1 00001776: DUP2 00001777: MSTORE 00001778: PUSH1 0x9b 0000177a: PUSH1 0x20 0000177c: MSTORE 0000177d: PUSH1 0x40 0000177f: DUP2 00001780: KECCAK256 00001781: DUP1 00001782: SLOAD 00001783: SWAP2 00001784: PUSH2 0x178c 00001787: DUP4 00001788: PUSH2 0x307a 0000178b: JUMP 0000178c: JUMPDEST 0000178d: SWAP2 0000178e: SWAP1 0000178f: POP 00001790: SSTORE 00001791: POP 00001792: POP 00001793: POP 00001794: POP 00001795: POP 00001796: POP 00001797: POP 00001798: JUMP 00001799: JUMPDEST 0000179a: PUSH1 0x02 0000179c: PUSH1 0x65 0000179e: SLOAD 0000179f: SUB 000017a0: PUSH2 0x17eb 000017a3: JUMPI 000017a4: PUSH1 0x40 000017a6: MLOAD 000017a7: PUSH3 0x461bcd 000017ab: PUSH1 0xe5 000017ad: SHL 000017ae: DUP2 000017af: MSTORE 000017b0: PUSH1 0x20 000017b2: PUSH1 0x04 000017b4: DUP3 000017b5: ADD 000017b6: MSTORE 000017b7: PUSH1 0x1f 000017b9: PUSH1 0x24 000017bb: DUP3 000017bc: ADD 000017bd: MSTORE 000017be: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000017df: PUSH1 0x44 000017e1: DUP3 000017e2: ADD 000017e3: MSTORE 000017e4: PUSH1 0x64 000017e6: ADD 000017e7: PUSH2 0x01ac 000017ea: JUMP 000017eb: JUMPDEST 000017ec: PUSH1 0x02 000017ee: PUSH1 0x65 000017f0: SSTORE 000017f1: JUMP 000017f2: JUMPDEST 000017f3: PUSH1 0x00 000017f5: DUP1 000017f6: JUMPDEST 000017f7: DUP6 000017f8: MLOAD 000017f9: DUP2 000017fa: LT 000017fb: ISZERO 000017fc: PUSH2 0x1b7e 000017ff: JUMPI 00001800: PUSH1 0x00 00001802: PUSH2 0x187b 00001805: DUP7 00001806: DUP4 00001807: DUP2 00001808: MLOAD 00001809: DUP2 0000180a: LT 0000180b: PUSH2 0x1816 0000180e: JUMPI 0000180f: PUSH2 0x1816 00001812: PUSH2 0x301c 00001815: JUMP 00001816: JUMPDEST 00001817: PUSH1 0x20 00001819: MUL 0000181a: PUSH1 0x20 0000181c: ADD 0000181d: ADD 0000181e: MLOAD 0000181f: PUSH2 0x1875 00001822: DUP8 00001823: PUSH1 0x40 00001825: MLOAD 00001826: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00001847: PUSH1 0x20 00001849: DUP3 0000184a: ADD 0000184b: MSTORE 0000184c: PUSH1 0x3c 0000184e: DUP2 0000184f: ADD 00001850: DUP3 00001851: SWAP1 00001852: MSTORE 00001853: PUSH1 0x00 00001855: SWAP1 00001856: PUSH1 0x5c 00001858: ADD 00001859: PUSH1 0x40 0000185b: MLOAD 0000185c: PUSH1 0x20 0000185e: DUP2 0000185f: DUP4 00001860: SUB 00001861: SUB 00001862: DUP2 00001863: MSTORE 00001864: SWAP1 00001865: PUSH1 0x40 00001867: MSTORE 00001868: DUP1 00001869: MLOAD 0000186a: SWAP1 0000186b: PUSH1 0x20 0000186d: ADD 0000186e: KECCAK256 0000186f: SWAP1 00001870: POP 00001871: SWAP2 00001872: SWAP1 00001873: POP 00001874: JUMP 00001875: JUMPDEST 00001876: SWAP1 00001877: PUSH2 0x2274 0000187a: JUMP 0000187b: JUMPDEST 0000187c: SWAP1 0000187d: POP 0000187e: DUP7 0000187f: DUP3 00001880: DUP2 00001881: MLOAD 00001882: DUP2 00001883: LT 00001884: PUSH2 0x188f 00001887: JUMPI 00001888: PUSH2 0x188f 0000188b: PUSH2 0x301c 0000188e: JUMP 0000188f: JUMPDEST 00001890: PUSH1 0x20 00001892: MUL 00001893: PUSH1 0x20 00001895: ADD 00001896: ADD 00001897: MLOAD 00001898: PUSH1 0x01 0000189a: PUSH1 0x01 0000189c: PUSH1 0xa0 0000189e: SHL 0000189f: SUB 000018a0: AND 000018a1: DUP2 000018a2: PUSH1 0x01 000018a4: PUSH1 0x01 000018a6: PUSH1 0xa0 000018a8: SHL 000018a9: SUB 000018aa: AND 000018ab: EQ 000018ac: PUSH2 0x191d 000018af: JUMPI 000018b0: PUSH1 0x40 000018b2: MLOAD 000018b3: PUSH3 0x461bcd 000018b7: PUSH1 0xe5 000018b9: SHL 000018ba: DUP2 000018bb: MSTORE 000018bc: PUSH1 0x20 000018be: PUSH1 0x04 000018c0: DUP3 000018c1: ADD 000018c2: MSTORE 000018c3: PUSH1 0x23 000018c5: PUSH1 0x24 000018c7: DUP3 000018c8: ADD 000018c9: MSTORE 000018ca: PUSH32 0x56616c696461746f72207369676e617475726520646f6573206e6f74206d6174 000018eb: PUSH1 0x44 000018ed: DUP3 000018ee: ADD 000018ef: MSTORE 000018f0: PUSH32 0x63682e0000000000000000000000000000000000000000000000000000000000 00001911: PUSH1 0x64 00001913: DUP3 00001914: ADD 00001915: MSTORE 00001916: PUSH1 0x84 00001918: ADD 00001919: PUSH2 0x01ac 0000191c: JUMP 0000191d: JUMPDEST 0000191e: PUSH1 0x97 00001920: SLOAD 00001921: PUSH1 0x40 00001923: MLOAD 00001924: PUSH32 0x2a2e5e4200000000000000000000000000000000000000000000000000000000 00001945: DUP2 00001946: MSTORE 00001947: PUSH1 0x01 00001949: PUSH1 0x01 0000194b: PUSH1 0xa0 0000194d: SHL 0000194e: SUB 0000194f: DUP4 00001950: DUP2 00001951: AND 00001952: PUSH1 0x04 00001954: DUP4 00001955: ADD 00001956: MSTORE 00001957: PUSH2 0x0100 0000195a: SWAP1 0000195b: SWAP3 0000195c: DIV 0000195d: SWAP1 0000195e: SWAP2 0000195f: AND 00001960: SWAP1 00001961: PUSH4 0x2a2e5e42 00001966: SWAP1 00001967: PUSH1 0x24 00001969: ADD 0000196a: PUSH1 0x20 0000196c: PUSH1 0x40 0000196e: MLOAD 0000196f: DUP1 00001970: DUP4 00001971: SUB 00001972: DUP2 00001973: DUP7 00001974: GAS 00001975: STATICCALL 00001976: ISZERO 00001977: DUP1 00001978: ISZERO 00001979: PUSH2 0x1986 0000197c: JUMPI 0000197d: RETURNDATASIZE 0000197e: PUSH1 0x00 00001980: DUP1 00001981: RETURNDATACOPY 00001982: RETURNDATASIZE 00001983: PUSH1 0x00 00001985: REVERT 00001986: JUMPDEST 00001987: POP 00001988: POP 00001989: POP 0000198a: POP 0000198b: PUSH1 0x40 0000198d: MLOAD 0000198e: RETURNDATASIZE 0000198f: PUSH1 0x1f 00001991: NOT 00001992: PUSH1 0x1f 00001994: DUP3 00001995: ADD 00001996: AND 00001997: DUP3 00001998: ADD 00001999: DUP1 0000199a: PUSH1 0x40 0000199c: MSTORE 0000199d: POP 0000199e: DUP2 0000199f: ADD 000019a0: SWAP1 000019a1: PUSH2 0x19aa 000019a4: SWAP2 000019a5: SWAP1 000019a6: PUSH2 0x31dd 000019a9: JUMP 000019aa: JUMPDEST 000019ab: PUSH2 0x19f6 000019ae: JUMPI 000019af: PUSH1 0x40 000019b1: MLOAD 000019b2: PUSH3 0x461bcd 000019b6: PUSH1 0xe5 000019b8: SHL 000019b9: DUP2 000019ba: MSTORE 000019bb: PUSH1 0x20 000019bd: PUSH1 0x04 000019bf: DUP3 000019c0: ADD 000019c1: MSTORE 000019c2: PUSH1 0x11 000019c4: PUSH1 0x24 000019c6: DUP3 000019c7: ADD 000019c8: MSTORE 000019c9: PUSH32 0x496e76616c69642076616c696461746f72000000000000000000000000000000 000019ea: PUSH1 0x44 000019ec: DUP3 000019ed: ADD 000019ee: MSTORE 000019ef: PUSH1 0x64 000019f1: ADD 000019f2: PUSH2 0x01ac 000019f5: JUMP 000019f6: JUMPDEST 000019f7: PUSH1 0x01 000019f9: PUSH1 0x01 000019fb: PUSH1 0xa0 000019fd: SHL 000019fe: SUB 000019ff: DUP1 00001a00: DUP11 00001a01: AND 00001a02: PUSH1 0x00 00001a04: SWAP1 00001a05: DUP2 00001a06: MSTORE 00001a07: PUSH1 0x9d 00001a09: PUSH1 0x20 00001a0b: SWAP1 00001a0c: DUP2 00001a0d: MSTORE 00001a0e: PUSH1 0x40 00001a10: DUP1 00001a11: DUP4 00001a12: KECCAK256 00001a13: DUP13 00001a14: DUP5 00001a15: MSTORE 00001a16: DUP3 00001a17: MSTORE 00001a18: DUP1 00001a19: DUP4 00001a1a: KECCAK256 00001a1b: SWAP4 00001a1c: DUP6 00001a1d: AND 00001a1e: DUP4 00001a1f: MSTORE 00001a20: SWAP3 00001a21: SWAP1 00001a22: MSTORE 00001a23: KECCAK256 00001a24: SLOAD 00001a25: PUSH1 0xff 00001a27: AND 00001a28: ISZERO 00001a29: PUSH2 0x1a74 00001a2c: JUMPI 00001a2d: PUSH1 0x40 00001a2f: MLOAD 00001a30: PUSH3 0x461bcd 00001a34: PUSH1 0xe5 00001a36: SHL 00001a37: DUP2 00001a38: MSTORE 00001a39: PUSH1 0x20 00001a3b: PUSH1 0x04 00001a3d: DUP3 00001a3e: ADD 00001a3f: MSTORE 00001a40: PUSH1 0x16 00001a42: PUSH1 0x24 00001a44: DUP3 00001a45: ADD 00001a46: MSTORE 00001a47: PUSH32 0x4e6f206475706c69636174652076616c696461746f7200000000000000000000 00001a68: PUSH1 0x44 00001a6a: DUP3 00001a6b: ADD 00001a6c: MSTORE 00001a6d: PUSH1 0x64 00001a6f: ADD 00001a70: PUSH2 0x01ac 00001a73: JUMP 00001a74: JUMPDEST 00001a75: PUSH1 0x01 00001a77: PUSH1 0x01 00001a79: PUSH1 0xa0 00001a7b: SHL 00001a7c: SUB 00001a7d: DUP10 00001a7e: DUP2 00001a7f: AND 00001a80: PUSH1 0x00 00001a82: SWAP1 00001a83: DUP2 00001a84: MSTORE 00001a85: PUSH1 0x9d 00001a87: PUSH1 0x20 00001a89: SWAP1 00001a8a: DUP2 00001a8b: MSTORE 00001a8c: PUSH1 0x40 00001a8e: DUP1 00001a8f: DUP4 00001a90: KECCAK256 00001a91: DUP13 00001a92: DUP5 00001a93: MSTORE 00001a94: DUP3 00001a95: MSTORE 00001a96: DUP1 00001a97: DUP4 00001a98: KECCAK256 00001a99: DUP6 00001a9a: DUP6 00001a9b: AND 00001a9c: DUP1 00001a9d: DUP6 00001a9e: MSTORE 00001a9f: SWAP3 00001aa0: MSTORE 00001aa1: SWAP2 00001aa2: DUP3 00001aa3: SWAP1 00001aa4: KECCAK256 00001aa5: DUP1 00001aa6: SLOAD 00001aa7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00001ac8: AND 00001ac9: PUSH1 0x01 00001acb: OR 00001acc: SWAP1 00001acd: SSTORE 00001ace: PUSH1 0x97 00001ad0: SLOAD 00001ad1: SWAP2 00001ad2: MLOAD 00001ad3: PUSH32 0x5dd9147c00000000000000000000000000000000000000000000000000000000 00001af4: DUP2 00001af5: MSTORE 00001af6: PUSH1 0x04 00001af8: DUP2 00001af9: ADD 00001afa: SWAP2 00001afb: SWAP1 00001afc: SWAP2 00001afd: MSTORE 00001afe: PUSH2 0x0100 00001b01: SWAP1 00001b02: SWAP2 00001b03: DIV 00001b04: SWAP1 00001b05: SWAP2 00001b06: AND 00001b07: SWAP1 00001b08: PUSH4 0x5dd9147c 00001b0d: SWAP1 00001b0e: PUSH1 0x24 00001b10: ADD 00001b11: PUSH1 0x20 00001b13: PUSH1 0x40 00001b15: MLOAD 00001b16: DUP1 00001b17: DUP4 00001b18: SUB 00001b19: DUP2 00001b1a: DUP7 00001b1b: GAS 00001b1c: STATICCALL 00001b1d: ISZERO 00001b1e: DUP1 00001b1f: ISZERO 00001b20: PUSH2 0x1b2d 00001b23: JUMPI 00001b24: RETURNDATASIZE 00001b25: PUSH1 0x00 00001b27: DUP1 00001b28: RETURNDATACOPY 00001b29: RETURNDATASIZE 00001b2a: PUSH1 0x00 00001b2c: REVERT 00001b2d: JUMPDEST 00001b2e: POP 00001b2f: POP 00001b30: POP 00001b31: POP 00001b32: PUSH1 0x40 00001b34: MLOAD 00001b35: RETURNDATASIZE 00001b36: PUSH1 0x1f 00001b38: NOT 00001b39: PUSH1 0x1f 00001b3b: DUP3 00001b3c: ADD 00001b3d: AND 00001b3e: DUP3 00001b3f: ADD 00001b40: DUP1 00001b41: PUSH1 0x40 00001b43: MSTORE 00001b44: POP 00001b45: DUP2 00001b46: ADD 00001b47: SWAP1 00001b48: PUSH2 0x1b51 00001b4b: SWAP2 00001b4c: SWAP1 00001b4d: PUSH2 0x2fe6 00001b50: JUMP 00001b51: JUMPDEST 00001b52: PUSH2 0x1b5b 00001b55: SWAP1 00001b56: DUP5 00001b57: PUSH2 0x31fa 00001b5a: JUMP 00001b5b: JUMPDEST 00001b5c: SWAP3 00001b5d: POP 00001b5e: DUP4 00001b5f: DUP4 00001b60: GT 00001b61: ISZERO 00001b62: PUSH2 0x1b6b 00001b65: JUMPI 00001b66: POP 00001b67: PUSH2 0x1b7e 00001b6a: JUMP 00001b6b: JUMPDEST 00001b6c: POP 00001b6d: DUP1 00001b6e: PUSH2 0x1b76 00001b71: DUP2 00001b72: PUSH2 0x307a 00001b75: JUMP 00001b76: JUMPDEST 00001b77: SWAP2 00001b78: POP 00001b79: POP 00001b7a: PUSH2 0x17f6 00001b7d: JUMP 00001b7e: JUMPDEST 00001b7f: POP 00001b80: DUP2 00001b81: DUP2 00001b82: LT 00001b83: ISZERO 00001b84: PUSH2 0x1bf5 00001b87: JUMPI 00001b88: PUSH1 0x40 00001b8a: MLOAD 00001b8b: PUSH3 0x461bcd 00001b8f: PUSH1 0xe5 00001b91: SHL 00001b92: DUP2 00001b93: MSTORE 00001b94: PUSH1 0x20 00001b96: PUSH1 0x04 00001b98: DUP3 00001b99: ADD 00001b9a: MSTORE 00001b9b: PUSH1 0x3c 00001b9d: PUSH1 0x24 00001b9f: DUP3 00001ba0: ADD 00001ba1: MSTORE 00001ba2: PUSH32 0x5375626d69747465642076616c696461746f7220736574207369676e61747572 00001bc3: PUSH1 0x44 00001bc5: DUP3 00001bc6: ADD 00001bc7: MSTORE 00001bc8: PUSH32 0x657320646f206e6f74206861766520656e6f75676820706f7765722e00000000 00001be9: PUSH1 0x64 00001beb: DUP3 00001bec: ADD 00001bed: MSTORE 00001bee: PUSH1 0x84 00001bf0: ADD 00001bf1: PUSH2 0x01ac 00001bf4: JUMP 00001bf5: JUMPDEST 00001bf6: POP 00001bf7: POP 00001bf8: POP 00001bf9: POP 00001bfa: POP 00001bfb: POP 00001bfc: POP 00001bfd: JUMP 00001bfe: JUMPDEST 00001bff: PUSH1 0x40 00001c01: MLOAD 00001c02: PUSH1 0x01 00001c04: PUSH1 0x01 00001c06: PUSH1 0xa0 00001c08: SHL 00001c09: SUB 00001c0a: DUP4 00001c0b: AND 00001c0c: PUSH1 0x24 00001c0e: DUP3 00001c0f: ADD 00001c10: MSTORE 00001c11: PUSH1 0x44 00001c13: DUP2 00001c14: ADD 00001c15: DUP3 00001c16: SWAP1 00001c17: MSTORE 00001c18: PUSH2 0x08b8 00001c1b: SWAP1 00001c1c: DUP5 00001c1d: SWAP1 00001c1e: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001c3f: SWAP1 00001c40: PUSH1 0x64 00001c42: ADD 00001c43: JUMPDEST 00001c44: PUSH1 0x40 00001c46: DUP1 00001c47: MLOAD 00001c48: PUSH1 0x1f 00001c4a: NOT 00001c4b: DUP2 00001c4c: DUP5 00001c4d: SUB 00001c4e: ADD 00001c4f: DUP2 00001c50: MSTORE 00001c51: SWAP2 00001c52: SWAP1 00001c53: MSTORE 00001c54: PUSH1 0x20 00001c56: DUP2 00001c57: ADD 00001c58: DUP1 00001c59: MLOAD 00001c5a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001c77: AND 00001c78: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00001c99: SWAP1 00001c9a: SWAP4 00001c9b: AND 00001c9c: SWAP3 00001c9d: SWAP1 00001c9e: SWAP3 00001c9f: OR 00001ca0: SWAP1 00001ca1: SWAP2 00001ca2: MSTORE 00001ca3: PUSH2 0x229a 00001ca6: JUMP 00001ca7: JUMPDEST 00001ca8: PUSH1 0x01 00001caa: PUSH1 0x65 00001cac: SSTORE 00001cad: JUMP 00001cae: JUMPDEST 00001caf: PUSH1 0x97 00001cb1: PUSH1 0x01 00001cb3: SWAP1 00001cb4: SLOAD 00001cb5: SWAP1 00001cb6: PUSH2 0x0100 00001cb9: EXP 00001cba: SWAP1 00001cbb: DIV 00001cbc: PUSH1 0x01 00001cbe: PUSH1 0x01 00001cc0: PUSH1 0xa0 00001cc2: SHL 00001cc3: SUB 00001cc4: AND 00001cc5: PUSH1 0x01 00001cc7: PUSH1 0x01 00001cc9: PUSH1 0xa0 00001ccb: SHL 00001ccc: SUB 00001ccd: AND 00001cce: PUSH4 0x3c81df21 00001cd3: PUSH1 0x40 00001cd5: MLOAD 00001cd6: DUP2 00001cd7: PUSH4 0xffffffff 00001cdc: AND 00001cdd: PUSH1 0xe0 00001cdf: SHL 00001ce0: DUP2 00001ce1: MSTORE 00001ce2: PUSH1 0x04 00001ce4: ADD 00001ce5: PUSH1 0x20 00001ce7: PUSH1 0x40 00001ce9: MLOAD 00001cea: DUP1 00001ceb: DUP4 00001cec: SUB 00001ced: DUP2 00001cee: DUP7 00001cef: GAS 00001cf0: STATICCALL 00001cf1: ISZERO 00001cf2: DUP1 00001cf3: ISZERO 00001cf4: PUSH2 0x1d01 00001cf7: JUMPI 00001cf8: RETURNDATASIZE 00001cf9: PUSH1 0x00 00001cfb: DUP1 00001cfc: RETURNDATACOPY 00001cfd: RETURNDATASIZE 00001cfe: PUSH1 0x00 00001d00: REVERT 00001d01: JUMPDEST 00001d02: POP 00001d03: POP 00001d04: POP 00001d05: POP 00001d06: PUSH1 0x40 00001d08: MLOAD 00001d09: RETURNDATASIZE 00001d0a: PUSH1 0x1f 00001d0c: NOT 00001d0d: PUSH1 0x1f 00001d0f: DUP3 00001d10: ADD 00001d11: AND 00001d12: DUP3 00001d13: ADD 00001d14: DUP1 00001d15: PUSH1 0x40 00001d17: MSTORE 00001d18: POP 00001d19: DUP2 00001d1a: ADD 00001d1b: SWAP1 00001d1c: PUSH2 0x1d25 00001d1f: SWAP2 00001d20: SWAP1 00001d21: PUSH2 0x2fff 00001d24: JUMP 00001d25: JUMPDEST 00001d26: PUSH1 0x01 00001d28: PUSH1 0x01 00001d2a: PUSH1 0xa0 00001d2c: SHL 00001d2d: SUB 00001d2e: AND 00001d2f: CALLER 00001d30: PUSH1 0x01 00001d32: PUSH1 0x01 00001d34: PUSH1 0xa0 00001d36: SHL 00001d37: SUB 00001d38: AND 00001d39: EQ 00001d3a: PUSH2 0x0b33 00001d3d: JUMPI 00001d3e: PUSH1 0x40 00001d40: MLOAD 00001d41: PUSH3 0x461bcd 00001d45: PUSH1 0xe5 00001d47: SHL 00001d48: DUP2 00001d49: MSTORE 00001d4a: PUSH1 0x20 00001d4c: PUSH1 0x04 00001d4e: DUP3 00001d4f: ADD 00001d50: MSTORE 00001d51: PUSH1 0x11 00001d53: PUSH1 0x24 00001d55: DUP3 00001d56: ADD 00001d57: MSTORE 00001d58: PUSH32 0x4d756c7469736967207265717569726564000000000000000000000000000000 00001d79: PUSH1 0x44 00001d7b: DUP3 00001d7c: ADD 00001d7d: MSTORE 00001d7e: PUSH1 0x64 00001d80: ADD 00001d81: PUSH2 0x01ac 00001d84: JUMP 00001d85: JUMPDEST 00001d86: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143 00001da7: SLOAD 00001da8: PUSH1 0xff 00001daa: AND 00001dab: ISZERO 00001dac: PUSH2 0x1db8 00001daf: JUMPI 00001db0: PUSH2 0x08b8 00001db3: DUP4 00001db4: PUSH2 0x237f 00001db7: JUMP 00001db8: JUMPDEST 00001db9: DUP3 00001dba: PUSH1 0x01 00001dbc: PUSH1 0x01 00001dbe: PUSH1 0xa0 00001dc0: SHL 00001dc1: SUB 00001dc2: AND 00001dc3: PUSH4 0x52d1902d 00001dc8: PUSH1 0x40 00001dca: MLOAD 00001dcb: DUP2 00001dcc: PUSH4 0xffffffff 00001dd1: AND 00001dd2: PUSH1 0xe0 00001dd4: SHL 00001dd5: DUP2 00001dd6: MSTORE 00001dd7: PUSH1 0x04 00001dd9: ADD 00001dda: PUSH1 0x20 00001ddc: PUSH1 0x40 00001dde: MLOAD 00001ddf: DUP1 00001de0: DUP4 00001de1: SUB 00001de2: DUP2 00001de3: DUP7 00001de4: GAS 00001de5: STATICCALL 00001de6: SWAP3 00001de7: POP 00001de8: POP 00001de9: POP 00001dea: DUP1 00001deb: ISZERO 00001dec: PUSH2 0x1e12 00001def: JUMPI 00001df0: POP 00001df1: PUSH1 0x40 00001df3: DUP1 00001df4: MLOAD 00001df5: PUSH1 0x1f 00001df7: RETURNDATASIZE 00001df8: SWAP1 00001df9: DUP2 00001dfa: ADD 00001dfb: PUSH1 0x1f 00001dfd: NOT 00001dfe: AND 00001dff: DUP3 00001e00: ADD 00001e01: SWAP1 00001e02: SWAP3 00001e03: MSTORE 00001e04: PUSH2 0x1e0f 00001e07: SWAP2 00001e08: DUP2 00001e09: ADD 00001e0a: SWAP1 00001e0b: PUSH2 0x2fe6 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: PUSH1 0x01 00001e12: JUMPDEST 00001e13: PUSH2 0x1e84 00001e16: JUMPI 00001e17: PUSH1 0x40 00001e19: MLOAD 00001e1a: PUSH3 0x461bcd 00001e1e: PUSH1 0xe5 00001e20: SHL 00001e21: DUP2 00001e22: MSTORE 00001e23: PUSH1 0x20 00001e25: PUSH1 0x04 00001e27: DUP3 00001e28: ADD 00001e29: MSTORE 00001e2a: PUSH1 0x2e 00001e2c: PUSH1 0x24 00001e2e: DUP3 00001e2f: ADD 00001e30: MSTORE 00001e31: PUSH32 0x45524331393637557067726164653a206e657720696d706c656d656e74617469 00001e52: PUSH1 0x44 00001e54: DUP3 00001e55: ADD 00001e56: MSTORE 00001e57: PUSH32 0x6f6e206973206e6f742055555053000000000000000000000000000000000000 00001e78: PUSH1 0x64 00001e7a: DUP3 00001e7b: ADD 00001e7c: MSTORE 00001e7d: PUSH1 0x84 00001e7f: ADD 00001e80: PUSH2 0x01ac 00001e83: JUMP 00001e84: JUMPDEST 00001e85: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00001ea6: DUP2 00001ea7: EQ 00001ea8: PUSH2 0x1f19 00001eab: JUMPI 00001eac: PUSH1 0x40 00001eae: MLOAD 00001eaf: PUSH3 0x461bcd 00001eb3: PUSH1 0xe5 00001eb5: SHL 00001eb6: DUP2 00001eb7: MSTORE 00001eb8: PUSH1 0x20 00001eba: PUSH1 0x04 00001ebc: DUP3 00001ebd: ADD 00001ebe: MSTORE 00001ebf: PUSH1 0x29 00001ec1: PUSH1 0x24 00001ec3: DUP3 00001ec4: ADD 00001ec5: MSTORE 00001ec6: PUSH32 0x45524331393637557067726164653a20756e737570706f727465642070726f78 00001ee7: PUSH1 0x44 00001ee9: DUP3 00001eea: ADD 00001eeb: MSTORE 00001eec: PUSH32 0x6961626c65555549440000000000000000000000000000000000000000000000 00001f0d: PUSH1 0x64 00001f0f: DUP3 00001f10: ADD 00001f11: MSTORE 00001f12: PUSH1 0x84 00001f14: ADD 00001f15: PUSH2 0x01ac 00001f18: JUMP 00001f19: JUMPDEST 00001f1a: POP 00001f1b: PUSH2 0x08b8 00001f1e: DUP4 00001f1f: DUP4 00001f20: DUP4 00001f21: PUSH2 0x2455 00001f24: JUMP 00001f25: JUMPDEST 00001f26: PUSH1 0x97 00001f28: SLOAD 00001f29: PUSH1 0xff 00001f2b: AND 00001f2c: ISZERO 00001f2d: PUSH2 0x1f78 00001f30: JUMPI 00001f31: PUSH1 0x40 00001f33: MLOAD 00001f34: PUSH3 0x461bcd 00001f38: PUSH1 0xe5 00001f3a: SHL 00001f3b: DUP2 00001f3c: MSTORE 00001f3d: PUSH1 0x20 00001f3f: PUSH1 0x04 00001f41: DUP3 00001f42: ADD 00001f43: MSTORE 00001f44: PUSH1 0x06 00001f46: PUSH1 0x24 00001f48: DUP3 00001f49: ADD 00001f4a: MSTORE 00001f4b: PUSH32 0x5061757365640000000000000000000000000000000000000000000000000000 00001f6c: PUSH1 0x44 00001f6e: DUP3 00001f6f: ADD 00001f70: MSTORE 00001f71: PUSH1 0x64 00001f73: ADD 00001f74: PUSH2 0x01ac 00001f77: JUMP 00001f78: JUMPDEST 00001f79: PUSH1 0x98 00001f7b: SLOAD 00001f7c: PUSH1 0x01 00001f7e: PUSH1 0x01 00001f80: PUSH1 0xa0 00001f82: SHL 00001f83: SUB 00001f84: AND 00001f85: PUSH2 0x1fd0 00001f88: JUMPI 00001f89: PUSH1 0x40 00001f8b: MLOAD 00001f8c: PUSH3 0x461bcd 00001f90: PUSH1 0xe5 00001f92: SHL 00001f93: DUP2 00001f94: MSTORE 00001f95: PUSH1 0x20 00001f97: PUSH1 0x04 00001f99: DUP3 00001f9a: ADD 00001f9b: MSTORE 00001f9c: PUSH1 0x0f 00001f9e: PUSH1 0x24 00001fa0: DUP3 00001fa1: ADD 00001fa2: MSTORE 00001fa3: PUSH32 0x4e6f7420696d706c656d656e7465640000000000000000000000000000000000 00001fc4: PUSH1 0x44 00001fc6: DUP3 00001fc7: ADD 00001fc8: MSTORE 00001fc9: PUSH1 0x64 00001fcb: ADD 00001fcc: PUSH2 0x01ac 00001fcf: JUMP 00001fd0: JUMPDEST 00001fd1: PUSH1 0x00 00001fd3: DUP2 00001fd4: GT 00001fd5: PUSH2 0x2020 00001fd8: JUMPI 00001fd9: PUSH1 0x40 00001fdb: MLOAD 00001fdc: PUSH3 0x461bcd 00001fe0: PUSH1 0xe5 00001fe2: SHL 00001fe3: DUP2 00001fe4: MSTORE 00001fe5: PUSH1 0x20 00001fe7: PUSH1 0x04 00001fe9: DUP3 00001fea: ADD 00001feb: MSTORE 00001fec: PUSH1 0x11 00001fee: PUSH1 0x24 00001ff0: DUP3 00001ff1: ADD 00001ff2: MSTORE 00001ff3: PUSH32 0x4e6f7420656e6f75676820616d6f756e74000000000000000000000000000000 00002014: PUSH1 0x44 00002016: DUP3 00002017: ADD 00002018: MSTORE 00002019: PUSH1 0x64 0000201b: ADD 0000201c: PUSH2 0x01ac 0000201f: JUMP 00002020: JUMPDEST 00002021: PUSH1 0x01 00002023: PUSH1 0x01 00002025: PUSH1 0xa0 00002027: SHL 00002028: SUB 00002029: DUP3 0000202a: AND 0000202b: PUSH2 0x2076 0000202e: JUMPI 0000202f: PUSH1 0x40 00002031: MLOAD 00002032: PUSH3 0x461bcd 00002036: PUSH1 0xe5 00002038: SHL 00002039: DUP2 0000203a: MSTORE 0000203b: PUSH1 0x20 0000203d: PUSH1 0x04 0000203f: DUP3 00002040: ADD 00002041: MSTORE 00002042: PUSH1 0x0f 00002044: PUSH1 0x24 00002046: DUP3 00002047: ADD 00002048: MSTORE 00002049: PUSH32 0x496e76616c696420616464726573730000000000000000000000000000000000 0000206a: PUSH1 0x44 0000206c: DUP3 0000206d: ADD 0000206e: MSTORE 0000206f: PUSH1 0x64 00002071: ADD 00002072: PUSH2 0x01ac 00002075: JUMP 00002076: JUMPDEST 00002077: PUSH1 0x01 00002079: PUSH1 0x01 0000207b: PUSH1 0xa0 0000207d: SHL 0000207e: SUB 0000207f: DUP5 00002080: DUP2 00002081: AND 00002082: PUSH1 0x00 00002084: SWAP1 00002085: DUP2 00002086: MSTORE 00002087: PUSH1 0x9a 00002089: PUSH1 0x20 0000208b: MSTORE 0000208c: PUSH1 0x40 0000208e: SWAP1 0000208f: KECCAK256 00002090: SLOAD 00002091: AND 00002092: PUSH2 0x20dd 00002095: JUMPI 00002096: PUSH1 0x40 00002098: MLOAD 00002099: PUSH3 0x461bcd 0000209d: PUSH1 0xe5 0000209f: SHL 000020a0: DUP2 000020a1: MSTORE 000020a2: PUSH1 0x20 000020a4: PUSH1 0x04 000020a6: DUP3 000020a7: ADD 000020a8: MSTORE 000020a9: PUSH1 0x0d 000020ab: PUSH1 0x24 000020ad: DUP3 000020ae: ADD 000020af: MSTORE 000020b0: PUSH32 0x4e6f7420737570706f7274656400000000000000000000000000000000000000 000020d1: PUSH1 0x44 000020d3: DUP3 000020d4: ADD 000020d5: MSTORE 000020d6: PUSH1 0x64 000020d8: ADD 000020d9: PUSH2 0x01ac 000020dc: JUMP 000020dd: JUMPDEST 000020de: PUSH2 0x20f2 000020e1: PUSH1 0x01 000020e3: PUSH1 0x01 000020e5: PUSH1 0xa0 000020e7: SHL 000020e8: SUB 000020e9: DUP6 000020ea: AND 000020eb: DUP5 000020ec: ADDRESS 000020ed: DUP5 000020ee: PUSH2 0x2480 000020f1: JUMP 000020f2: JUMPDEST 000020f3: PUSH1 0x01 000020f5: PUSH1 0x01 000020f7: PUSH1 0xa0 000020f9: SHL 000020fa: SUB 000020fb: DUP4 000020fc: DUP2 000020fd: AND 000020fe: PUSH1 0x00 00002100: DUP2 00002101: DUP2 00002102: MSTORE 00002103: PUSH1 0x9b 00002105: PUSH1 0x20 00002107: SWAP1 00002108: DUP2 00002109: MSTORE 0000210a: PUSH1 0x40 0000210c: DUP1 0000210d: DUP4 0000210e: KECCAK256 0000210f: SLOAD 00002110: DUP10 00002111: DUP7 00002112: AND 00002113: DUP1 00002114: DUP6 00002115: MSTORE 00002116: PUSH1 0x9a 00002118: DUP5 00002119: MSTORE 0000211a: SWAP4 0000211b: DUP3 0000211c: SWAP1 0000211d: KECCAK256 0000211e: SLOAD 0000211f: DUP3 00002120: MLOAD 00002121: SWAP4 00002122: DUP5 00002123: ADD 00002124: SWAP6 00002125: SWAP1 00002126: SWAP6 00002127: MSTORE 00002128: SWAP1 00002129: DUP3 0000212a: ADD 0000212b: DUP2 0000212c: SWAP1 0000212d: MSTORE 0000212e: PUSH1 0x60 00002130: DUP3 00002131: ADD 00002132: SWAP3 00002133: SWAP1 00002134: SWAP3 00002135: MSTORE 00002136: SWAP2 00002137: DUP4 00002138: AND 00002139: PUSH1 0x80 0000213b: DUP4 0000213c: ADD 0000213d: MSTORE 0000213e: SWAP2 0000213f: DUP5 00002140: AND 00002141: PUSH1 0xa0 00002143: DUP3 00002144: ADD 00002145: MSTORE 00002146: PUSH1 0xc0 00002148: DUP2 00002149: ADD 0000214a: DUP4 0000214b: SWAP1 0000214c: MSTORE 0000214d: PUSH32 0x435881434a980001db54827793d55b4f3b751d216ed457d0f2a143220ae06d25 0000216e: SWAP1 0000216f: PUSH1 0xe0 00002171: ADD 00002172: PUSH1 0x40 00002174: DUP1 00002175: MLOAD 00002176: PUSH1 0x1f 00002178: NOT 00002179: DUP2 0000217a: DUP5 0000217b: SUB 0000217c: ADD 0000217d: DUP2 0000217e: MSTORE 0000217f: SWAP1 00002180: DUP3 00002181: SWAP1 00002182: MSTORE 00002183: PUSH2 0x218b 00002186: SWAP2 00002187: PUSH2 0x31ca 0000218a: JUMP 0000218b: JUMPDEST 0000218c: PUSH1 0x40 0000218e: MLOAD 0000218f: DUP1 00002190: SWAP2 00002191: SUB 00002192: SWAP1 00002193: LOG1 00002194: PUSH1 0x01 00002196: PUSH1 0x01 00002198: PUSH1 0xa0 0000219a: SHL 0000219b: SUB 0000219c: DUP5 0000219d: AND 0000219e: PUSH1 0x00 000021a0: SWAP1 000021a1: DUP2 000021a2: MSTORE 000021a3: PUSH1 0x9b 000021a5: PUSH1 0x20 000021a7: MSTORE 000021a8: PUSH1 0x40 000021aa: DUP2 000021ab: KECCAK256 000021ac: DUP1 000021ad: SLOAD 000021ae: SWAP2 000021af: PUSH2 0x21b7 000021b2: DUP4 000021b3: PUSH2 0x307a 000021b6: JUMP 000021b7: JUMPDEST 000021b8: SWAP2 000021b9: SWAP1 000021ba: POP 000021bb: SSTORE 000021bc: POP 000021bd: POP 000021be: POP 000021bf: POP 000021c0: POP 000021c1: POP 000021c2: JUMP 000021c3: JUMPDEST 000021c4: PUSH1 0x00 000021c6: SLOAD 000021c7: PUSH2 0x0100 000021ca: SWAP1 000021cb: DIV 000021cc: PUSH1 0xff 000021ce: AND 000021cf: PUSH2 0x2240 000021d2: JUMPI 000021d3: PUSH1 0x40 000021d5: MLOAD 000021d6: PUSH3 0x461bcd 000021da: PUSH1 0xe5 000021dc: SHL 000021dd: DUP2 000021de: MSTORE 000021df: PUSH1 0x20 000021e1: PUSH1 0x04 000021e3: DUP3 000021e4: ADD 000021e5: MSTORE 000021e6: PUSH1 0x2b 000021e8: PUSH1 0x24 000021ea: DUP3 000021eb: ADD 000021ec: MSTORE 000021ed: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 0000220e: PUSH1 0x44 00002210: DUP3 00002211: ADD 00002212: MSTORE 00002213: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 00002234: PUSH1 0x64 00002236: DUP3 00002237: ADD 00002238: MSTORE 00002239: PUSH1 0x84 0000223b: ADD 0000223c: PUSH2 0x01ac 0000223f: JUMP 00002240: JUMPDEST 00002241: PUSH2 0x2248 00002244: PUSH2 0x24d1 00002247: JUMP 00002248: JUMPDEST 00002249: JUMP 0000224a: JUMPDEST 0000224b: PUSH1 0x00 0000224d: PUSH1 0x40 0000224f: MLOAD 00002250: DUP4 00002251: PUSH1 0x40 00002253: DUP3 00002254: ADD 00002255: MSTORE 00002256: DUP5 00002257: PUSH1 0x20 00002259: DUP3 0000225a: ADD 0000225b: MSTORE 0000225c: DUP3 0000225d: DUP2 0000225e: MSTORE 0000225f: PUSH1 0x0b 00002261: DUP2 00002262: ADD 00002263: SWAP1 00002264: POP 00002265: PUSH1 0xff 00002267: DUP2 00002268: MSTORE8 00002269: PUSH1 0x55 0000226b: SWAP1 0000226c: KECCAK256 0000226d: SWAP5 0000226e: SWAP4 0000226f: POP 00002270: POP 00002271: POP 00002272: POP 00002273: JUMP 00002274: JUMPDEST 00002275: PUSH1 0x00 00002277: DUP1 00002278: PUSH1 0x00 0000227a: PUSH2 0x2283 0000227d: DUP6 0000227e: DUP6 0000227f: PUSH2 0x254e 00002282: JUMP 00002283: JUMPDEST 00002284: SWAP2 00002285: POP 00002286: SWAP2 00002287: POP 00002288: PUSH2 0x2290 0000228b: DUP2 0000228c: PUSH2 0x2593 0000228f: JUMP 00002290: JUMPDEST 00002291: POP 00002292: SWAP1 00002293: POP 00002294: JUMPDEST 00002295: SWAP3 00002296: SWAP2 00002297: POP 00002298: POP 00002299: JUMP 0000229a: JUMPDEST 0000229b: PUSH1 0x00 0000229d: PUSH2 0x22ef 000022a0: DUP3 000022a1: PUSH1 0x40 000022a3: MLOAD 000022a4: DUP1 000022a5: PUSH1 0x40 000022a7: ADD 000022a8: PUSH1 0x40 000022aa: MSTORE 000022ab: DUP1 000022ac: PUSH1 0x20 000022ae: DUP2 000022af: MSTORE 000022b0: PUSH1 0x20 000022b2: ADD 000022b3: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 000022d4: DUP2 000022d5: MSTORE 000022d6: POP 000022d7: DUP6 000022d8: PUSH1 0x01 000022da: PUSH1 0x01 000022dc: PUSH1 0xa0 000022de: SHL 000022df: SUB 000022e0: AND 000022e1: PUSH2 0x26f8 000022e4: SWAP1 000022e5: SWAP3 000022e6: SWAP2 000022e7: SWAP1 000022e8: PUSH4 0xffffffff 000022ed: AND 000022ee: JUMP 000022ef: JUMPDEST 000022f0: DUP1 000022f1: MLOAD 000022f2: SWAP1 000022f3: SWAP2 000022f4: POP 000022f5: ISZERO 000022f6: PUSH2 0x08b8 000022f9: JUMPI 000022fa: DUP1 000022fb: DUP1 000022fc: PUSH1 0x20 000022fe: ADD 000022ff: SWAP1 00002300: MLOAD 00002301: DUP2 00002302: ADD 00002303: SWAP1 00002304: PUSH2 0x230d 00002307: SWAP2 00002308: SWAP1 00002309: PUSH2 0x31dd 0000230c: JUMP 0000230d: JUMPDEST 0000230e: PUSH2 0x08b8 00002311: JUMPI 00002312: PUSH1 0x40 00002314: MLOAD 00002315: PUSH3 0x461bcd 00002319: PUSH1 0xe5 0000231b: SHL 0000231c: DUP2 0000231d: MSTORE 0000231e: PUSH1 0x20 00002320: PUSH1 0x04 00002322: DUP3 00002323: ADD 00002324: MSTORE 00002325: PUSH1 0x2a 00002327: PUSH1 0x24 00002329: DUP3 0000232a: ADD 0000232b: MSTORE 0000232c: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 0000234d: PUSH1 0x44 0000234f: DUP3 00002350: ADD 00002351: MSTORE 00002352: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00002373: PUSH1 0x64 00002375: DUP3 00002376: ADD 00002377: MSTORE 00002378: PUSH1 0x84 0000237a: ADD 0000237b: PUSH2 0x01ac 0000237e: JUMP 0000237f: JUMPDEST 00002380: PUSH1 0x01 00002382: PUSH1 0x01 00002384: PUSH1 0xa0 00002386: SHL 00002387: SUB 00002388: DUP2 00002389: AND 0000238a: EXTCODESIZE 0000238b: PUSH2 0x23fc 0000238e: JUMPI 0000238f: PUSH1 0x40 00002391: MLOAD 00002392: PUSH3 0x461bcd 00002396: PUSH1 0xe5 00002398: SHL 00002399: DUP2 0000239a: MSTORE 0000239b: PUSH1 0x20 0000239d: PUSH1 0x04 0000239f: DUP3 000023a0: ADD 000023a1: MSTORE 000023a2: PUSH1 0x2d 000023a4: PUSH1 0x24 000023a6: DUP3 000023a7: ADD 000023a8: MSTORE 000023a9: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e 000023ca: PUSH1 0x44 000023cc: DUP3 000023cd: ADD 000023ce: MSTORE 000023cf: PUSH32 0x6f74206120636f6e747261637400000000000000000000000000000000000000 000023f0: PUSH1 0x64 000023f2: DUP3 000023f3: ADD 000023f4: MSTORE 000023f5: PUSH1 0x84 000023f7: ADD 000023f8: PUSH2 0x01ac 000023fb: JUMP 000023fc: JUMPDEST 000023fd: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0000241e: DUP1 0000241f: SLOAD 00002420: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00002441: AND 00002442: PUSH1 0x01 00002444: PUSH1 0x01 00002446: PUSH1 0xa0 00002448: SHL 00002449: SUB 0000244a: SWAP3 0000244b: SWAP1 0000244c: SWAP3 0000244d: AND 0000244e: SWAP2 0000244f: SWAP1 00002450: SWAP2 00002451: OR 00002452: SWAP1 00002453: SSTORE 00002454: JUMP 00002455: JUMPDEST 00002456: PUSH2 0x245e 00002459: DUP4 0000245a: PUSH2 0x2711 0000245d: JUMP 0000245e: JUMPDEST 0000245f: PUSH1 0x00 00002461: DUP3 00002462: MLOAD 00002463: GT 00002464: DUP1 00002465: PUSH2 0x246b 00002468: JUMPI 00002469: POP 0000246a: DUP1 0000246b: JUMPDEST 0000246c: ISZERO 0000246d: PUSH2 0x08b8 00002470: JUMPI 00002471: PUSH2 0x247a 00002474: DUP4 00002475: DUP4 00002476: PUSH2 0x2751 00002479: JUMP 0000247a: JUMPDEST 0000247b: POP 0000247c: POP 0000247d: POP 0000247e: POP 0000247f: JUMP 00002480: JUMPDEST 00002481: PUSH1 0x40 00002483: MLOAD 00002484: PUSH1 0x01 00002486: PUSH1 0x01 00002488: PUSH1 0xa0 0000248a: SHL 0000248b: SUB 0000248c: DUP1 0000248d: DUP6 0000248e: AND 0000248f: PUSH1 0x24 00002491: DUP4 00002492: ADD 00002493: MSTORE 00002494: DUP4 00002495: AND 00002496: PUSH1 0x44 00002498: DUP3 00002499: ADD 0000249a: MSTORE 0000249b: PUSH1 0x64 0000249d: DUP2 0000249e: ADD 0000249f: DUP3 000024a0: SWAP1 000024a1: MSTORE 000024a2: PUSH2 0x247a 000024a5: SWAP1 000024a6: DUP6 000024a7: SWAP1 000024a8: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 000024c9: SWAP1 000024ca: PUSH1 0x84 000024cc: ADD 000024cd: PUSH2 0x1c43 000024d0: JUMP 000024d1: JUMPDEST 000024d2: PUSH1 0x00 000024d4: SLOAD 000024d5: PUSH2 0x0100 000024d8: SWAP1 000024d9: DIV 000024da: PUSH1 0xff 000024dc: AND 000024dd: PUSH2 0x1ca7 000024e0: JUMPI 000024e1: PUSH1 0x40 000024e3: MLOAD 000024e4: PUSH3 0x461bcd 000024e8: PUSH1 0xe5 000024ea: SHL 000024eb: DUP2 000024ec: MSTORE 000024ed: PUSH1 0x20 000024ef: PUSH1 0x04 000024f1: DUP3 000024f2: ADD 000024f3: MSTORE 000024f4: PUSH1 0x2b 000024f6: PUSH1 0x24 000024f8: DUP3 000024f9: ADD 000024fa: MSTORE 000024fb: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 0000251c: PUSH1 0x44 0000251e: DUP3 0000251f: ADD 00002520: MSTORE 00002521: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 00002542: PUSH1 0x64 00002544: DUP3 00002545: ADD 00002546: MSTORE 00002547: PUSH1 0x84 00002549: ADD 0000254a: PUSH2 0x01ac 0000254d: JUMP 0000254e: JUMPDEST 0000254f: PUSH1 0x00 00002551: DUP1 00002552: DUP3 00002553: MLOAD 00002554: PUSH1 0x41 00002556: SUB 00002557: PUSH2 0x2584 0000255a: JUMPI 0000255b: PUSH1 0x20 0000255d: DUP4 0000255e: ADD 0000255f: MLOAD 00002560: PUSH1 0x40 00002562: DUP5 00002563: ADD 00002564: MLOAD 00002565: PUSH1 0x60 00002567: DUP6 00002568: ADD 00002569: MLOAD 0000256a: PUSH1 0x00 0000256c: BYTE 0000256d: PUSH2 0x2578 00002570: DUP8 00002571: DUP3 00002572: DUP6 00002573: DUP6 00002574: PUSH2 0x285c 00002577: JUMP 00002578: JUMPDEST 00002579: SWAP5 0000257a: POP 0000257b: SWAP5 0000257c: POP 0000257d: POP 0000257e: POP 0000257f: POP 00002580: PUSH2 0x258c 00002583: JUMP 00002584: JUMPDEST 00002585: POP 00002586: PUSH1 0x00 00002588: SWAP1 00002589: POP 0000258a: PUSH1 0x02 0000258c: JUMPDEST 0000258d: SWAP3 0000258e: POP 0000258f: SWAP3 00002590: SWAP1 00002591: POP 00002592: JUMP 00002593: JUMPDEST 00002594: PUSH1 0x00 00002596: DUP2 00002597: PUSH1 0x04 00002599: DUP2 0000259a: GT 0000259b: ISZERO 0000259c: PUSH2 0x25a7 0000259f: JUMPI 000025a0: PUSH2 0x25a7 000025a3: PUSH2 0x320d 000025a6: JUMP 000025a7: JUMPDEST 000025a8: SUB 000025a9: PUSH2 0x25af 000025ac: JUMPI 000025ad: POP 000025ae: JUMP 000025af: JUMPDEST 000025b0: PUSH1 0x01 000025b2: DUP2 000025b3: PUSH1 0x04 000025b5: DUP2 000025b6: GT 000025b7: ISZERO 000025b8: PUSH2 0x25c3 000025bb: JUMPI 000025bc: PUSH2 0x25c3 000025bf: PUSH2 0x320d 000025c2: JUMP 000025c3: JUMPDEST 000025c4: SUB 000025c5: PUSH2 0x2610 000025c8: JUMPI 000025c9: PUSH1 0x40 000025cb: MLOAD 000025cc: PUSH3 0x461bcd 000025d0: PUSH1 0xe5 000025d2: SHL 000025d3: DUP2 000025d4: MSTORE 000025d5: PUSH1 0x20 000025d7: PUSH1 0x04 000025d9: DUP3 000025da: ADD 000025db: MSTORE 000025dc: PUSH1 0x18 000025de: PUSH1 0x24 000025e0: DUP3 000025e1: ADD 000025e2: MSTORE 000025e3: PUSH32 0x45434453413a20696e76616c6964207369676e61747572650000000000000000 00002604: PUSH1 0x44 00002606: DUP3 00002607: ADD 00002608: MSTORE 00002609: PUSH1 0x64 0000260b: ADD 0000260c: PUSH2 0x01ac 0000260f: JUMP 00002610: JUMPDEST 00002611: PUSH1 0x02 00002613: DUP2 00002614: PUSH1 0x04 00002616: DUP2 00002617: GT 00002618: ISZERO 00002619: PUSH2 0x2624 0000261c: JUMPI 0000261d: PUSH2 0x2624 00002620: PUSH2 0x320d 00002623: JUMP 00002624: JUMPDEST 00002625: SUB 00002626: PUSH2 0x2671 00002629: JUMPI 0000262a: PUSH1 0x40 0000262c: MLOAD 0000262d: PUSH3 0x461bcd 00002631: PUSH1 0xe5 00002633: SHL 00002634: DUP2 00002635: MSTORE 00002636: PUSH1 0x20 00002638: PUSH1 0x04 0000263a: DUP3 0000263b: ADD 0000263c: MSTORE 0000263d: PUSH1 0x1f 0000263f: PUSH1 0x24 00002641: DUP3 00002642: ADD 00002643: MSTORE 00002644: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265206c656e67746800 00002665: PUSH1 0x44 00002667: DUP3 00002668: ADD 00002669: MSTORE 0000266a: PUSH1 0x64 0000266c: ADD 0000266d: PUSH2 0x01ac 00002670: JUMP 00002671: JUMPDEST 00002672: PUSH1 0x03 00002674: DUP2 00002675: PUSH1 0x04 00002677: DUP2 00002678: GT 00002679: ISZERO 0000267a: PUSH2 0x2685 0000267d: JUMPI 0000267e: PUSH2 0x2685 00002681: PUSH2 0x320d 00002684: JUMP 00002685: JUMPDEST 00002686: SUB 00002687: PUSH2 0x0b33 0000268a: JUMPI 0000268b: PUSH1 0x40 0000268d: MLOAD 0000268e: PUSH3 0x461bcd 00002692: PUSH1 0xe5 00002694: SHL 00002695: DUP2 00002696: MSTORE 00002697: PUSH1 0x20 00002699: PUSH1 0x04 0000269b: DUP3 0000269c: ADD 0000269d: MSTORE 0000269e: PUSH1 0x22 000026a0: PUSH1 0x24 000026a2: DUP3 000026a3: ADD 000026a4: MSTORE 000026a5: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265202773272076616c 000026c6: PUSH1 0x44 000026c8: DUP3 000026c9: ADD 000026ca: MSTORE 000026cb: PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 000026ec: PUSH1 0x64 000026ee: DUP3 000026ef: ADD 000026f0: MSTORE 000026f1: PUSH1 0x84 000026f3: ADD 000026f4: PUSH2 0x01ac 000026f7: JUMP 000026f8: JUMPDEST 000026f9: PUSH1 0x60 000026fb: PUSH2 0x2707 000026fe: DUP5 000026ff: DUP5 00002700: PUSH1 0x00 00002702: DUP6 00002703: PUSH2 0x2920 00002706: JUMP 00002707: JUMPDEST 00002708: SWAP1 00002709: POP 0000270a: JUMPDEST 0000270b: SWAP4 0000270c: SWAP3 0000270d: POP 0000270e: POP 0000270f: POP 00002710: JUMP 00002711: JUMPDEST 00002712: PUSH2 0x271a 00002715: DUP2 00002716: PUSH2 0x237f 00002719: JUMP 0000271a: JUMPDEST 0000271b: PUSH1 0x40 0000271d: MLOAD 0000271e: PUSH1 0x01 00002720: PUSH1 0x01 00002722: PUSH1 0xa0 00002724: SHL 00002725: SUB 00002726: DUP3 00002727: AND 00002728: SWAP1 00002729: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 0000274a: SWAP1 0000274b: PUSH1 0x00 0000274d: SWAP1 0000274e: LOG2 0000274f: POP 00002750: JUMP 00002751: JUMPDEST 00002752: PUSH1 0x60 00002754: PUSH1 0x01 00002756: PUSH1 0x01 00002758: PUSH1 0xa0 0000275a: SHL 0000275b: SUB 0000275c: DUP4 0000275d: AND 0000275e: EXTCODESIZE 0000275f: PUSH2 0x27d0 00002762: JUMPI 00002763: PUSH1 0x40 00002765: MLOAD 00002766: PUSH3 0x461bcd 0000276a: PUSH1 0xe5 0000276c: SHL 0000276d: DUP2 0000276e: MSTORE 0000276f: PUSH1 0x20 00002771: PUSH1 0x04 00002773: DUP3 00002774: ADD 00002775: MSTORE 00002776: PUSH1 0x26 00002778: PUSH1 0x24 0000277a: DUP3 0000277b: ADD 0000277c: MSTORE 0000277d: PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f 0000279e: PUSH1 0x44 000027a0: DUP3 000027a1: ADD 000027a2: MSTORE 000027a3: PUSH32 0x6e74726163740000000000000000000000000000000000000000000000000000 000027c4: PUSH1 0x64 000027c6: DUP3 000027c7: ADD 000027c8: MSTORE 000027c9: PUSH1 0x84 000027cb: ADD 000027cc: PUSH2 0x01ac 000027cf: JUMP 000027d0: JUMPDEST 000027d1: PUSH1 0x00 000027d3: DUP1 000027d4: DUP5 000027d5: PUSH1 0x01 000027d7: PUSH1 0x01 000027d9: PUSH1 0xa0 000027db: SHL 000027dc: SUB 000027dd: AND 000027de: DUP5 000027df: PUSH1 0x40 000027e1: MLOAD 000027e2: PUSH2 0x27eb 000027e5: SWAP2 000027e6: SWAP1 000027e7: PUSH2 0x323c 000027ea: JUMP 000027eb: JUMPDEST 000027ec: PUSH1 0x00 000027ee: PUSH1 0x40 000027f0: MLOAD 000027f1: DUP1 000027f2: DUP4 000027f3: SUB 000027f4: DUP2 000027f5: DUP6 000027f6: GAS 000027f7: DELEGATECALL 000027f8: SWAP2 000027f9: POP 000027fa: POP 000027fb: RETURNDATASIZE 000027fc: DUP1 000027fd: PUSH1 0x00 000027ff: DUP2 00002800: EQ 00002801: PUSH2 0x2826 00002804: JUMPI 00002805: PUSH1 0x40 00002807: MLOAD 00002808: SWAP2 00002809: POP 0000280a: PUSH1 0x1f 0000280c: NOT 0000280d: PUSH1 0x3f 0000280f: RETURNDATASIZE 00002810: ADD 00002811: AND 00002812: DUP3 00002813: ADD 00002814: PUSH1 0x40 00002816: MSTORE 00002817: RETURNDATASIZE 00002818: DUP3 00002819: MSTORE 0000281a: RETURNDATASIZE 0000281b: PUSH1 0x00 0000281d: PUSH1 0x20 0000281f: DUP5 00002820: ADD 00002821: RETURNDATACOPY 00002822: PUSH2 0x282b 00002825: JUMP 00002826: JUMPDEST 00002827: PUSH1 0x60 00002829: SWAP2 0000282a: POP 0000282b: JUMPDEST 0000282c: POP 0000282d: SWAP2 0000282e: POP 0000282f: SWAP2 00002830: POP 00002831: PUSH2 0x2853 00002834: DUP3 00002835: DUP3 00002836: PUSH1 0x40 00002838: MLOAD 00002839: DUP1 0000283a: PUSH1 0x60 0000283c: ADD 0000283d: PUSH1 0x40 0000283f: MSTORE 00002840: DUP1 00002841: PUSH1 0x27 00002843: DUP2 00002844: MSTORE 00002845: PUSH1 0x20 00002847: ADD 00002848: PUSH2 0x3259 0000284b: PUSH1 0x27 0000284d: SWAP2 0000284e: CODECOPY 0000284f: PUSH2 0x2a14 00002852: JUMP 00002853: JUMPDEST 00002854: SWAP6 00002855: SWAP5 00002856: POP 00002857: POP 00002858: POP 00002859: POP 0000285a: POP 0000285b: JUMP 0000285c: JUMPDEST 0000285d: PUSH1 0x00 0000285f: DUP1 00002860: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 00002881: DUP4 00002882: GT 00002883: ISZERO 00002884: PUSH2 0x2893 00002887: JUMPI 00002888: POP 00002889: PUSH1 0x00 0000288b: SWAP1 0000288c: POP 0000288d: PUSH1 0x03 0000288f: PUSH2 0x2917 00002892: JUMP 00002893: JUMPDEST 00002894: PUSH1 0x40 00002896: DUP1 00002897: MLOAD 00002898: PUSH1 0x00 0000289a: DUP1 0000289b: DUP3 0000289c: MSTORE 0000289d: PUSH1 0x20 0000289f: DUP3 000028a0: ADD 000028a1: DUP1 000028a2: DUP5 000028a3: MSTORE 000028a4: DUP10 000028a5: SWAP1 000028a6: MSTORE 000028a7: PUSH1 0xff 000028a9: DUP9 000028aa: AND 000028ab: SWAP3 000028ac: DUP3 000028ad: ADD 000028ae: SWAP3 000028af: SWAP1 000028b0: SWAP3 000028b1: MSTORE 000028b2: PUSH1 0x60 000028b4: DUP2 000028b5: ADD 000028b6: DUP7 000028b7: SWAP1 000028b8: MSTORE 000028b9: PUSH1 0x80 000028bb: DUP2 000028bc: ADD 000028bd: DUP6 000028be: SWAP1 000028bf: MSTORE 000028c0: PUSH1 0x01 000028c2: SWAP1 000028c3: PUSH1 0xa0 000028c5: ADD 000028c6: PUSH1 0x20 000028c8: PUSH1 0x40 000028ca: MLOAD 000028cb: PUSH1 0x20 000028cd: DUP2 000028ce: SUB 000028cf: SWAP1 000028d0: DUP1 000028d1: DUP5 000028d2: SUB 000028d3: SWAP1 000028d4: DUP6 000028d5: GAS 000028d6: STATICCALL 000028d7: ISZERO 000028d8: DUP1 000028d9: ISZERO 000028da: PUSH2 0x28e7 000028dd: JUMPI 000028de: RETURNDATASIZE 000028df: PUSH1 0x00 000028e1: DUP1 000028e2: RETURNDATACOPY 000028e3: RETURNDATASIZE 000028e4: PUSH1 0x00 000028e6: REVERT 000028e7: JUMPDEST 000028e8: POP 000028e9: POP 000028ea: PUSH1 0x40 000028ec: MLOAD 000028ed: PUSH1 0x1f 000028ef: NOT 000028f0: ADD 000028f1: MLOAD 000028f2: SWAP2 000028f3: POP 000028f4: POP 000028f5: PUSH1 0x01 000028f7: PUSH1 0x01 000028f9: PUSH1 0xa0 000028fb: SHL 000028fc: SUB 000028fd: DUP2 000028fe: AND 000028ff: PUSH2 0x2910 00002902: JUMPI 00002903: PUSH1 0x00 00002905: PUSH1 0x01 00002907: SWAP3 00002908: POP 00002909: SWAP3 0000290a: POP 0000290b: POP 0000290c: PUSH2 0x2917 0000290f: JUMP 00002910: JUMPDEST 00002911: SWAP2 00002912: POP 00002913: PUSH1 0x00 00002915: SWAP1 00002916: POP 00002917: JUMPDEST 00002918: SWAP5 00002919: POP 0000291a: SWAP5 0000291b: SWAP3 0000291c: POP 0000291d: POP 0000291e: POP 0000291f: JUMP 00002920: JUMPDEST 00002921: PUSH1 0x60 00002923: DUP3 00002924: SELFBALANCE 00002925: LT 00002926: ISZERO 00002927: PUSH2 0x2998 0000292a: JUMPI 0000292b: PUSH1 0x40 0000292d: MLOAD 0000292e: PUSH3 0x461bcd 00002932: PUSH1 0xe5 00002934: SHL 00002935: DUP2 00002936: MSTORE 00002937: PUSH1 0x20 00002939: PUSH1 0x04 0000293b: DUP3 0000293c: ADD 0000293d: MSTORE 0000293e: PUSH1 0x26 00002940: PUSH1 0x24 00002942: DUP3 00002943: ADD 00002944: MSTORE 00002945: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00002966: PUSH1 0x44 00002968: DUP3 00002969: ADD 0000296a: MSTORE 0000296b: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 0000298c: PUSH1 0x64 0000298e: DUP3 0000298f: ADD 00002990: MSTORE 00002991: PUSH1 0x84 00002993: ADD 00002994: PUSH2 0x01ac 00002997: JUMP 00002998: JUMPDEST 00002999: PUSH1 0x00 0000299b: DUP1 0000299c: DUP7 0000299d: PUSH1 0x01 0000299f: PUSH1 0x01 000029a1: PUSH1 0xa0 000029a3: SHL 000029a4: SUB 000029a5: AND 000029a6: DUP6 000029a7: DUP8 000029a8: PUSH1 0x40 000029aa: MLOAD 000029ab: PUSH2 0x29b4 000029ae: SWAP2 000029af: SWAP1 000029b0: PUSH2 0x323c 000029b3: JUMP 000029b4: JUMPDEST 000029b5: PUSH1 0x00 000029b7: PUSH1 0x40 000029b9: MLOAD 000029ba: DUP1 000029bb: DUP4 000029bc: SUB 000029bd: DUP2 000029be: DUP6 000029bf: DUP8 000029c0: GAS 000029c1: CALL 000029c2: SWAP3 000029c3: POP 000029c4: POP 000029c5: POP 000029c6: RETURNDATASIZE 000029c7: DUP1 000029c8: PUSH1 0x00 000029ca: DUP2 000029cb: EQ 000029cc: PUSH2 0x29f1 000029cf: JUMPI 000029d0: PUSH1 0x40 000029d2: MLOAD 000029d3: SWAP2 000029d4: POP 000029d5: PUSH1 0x1f 000029d7: NOT 000029d8: PUSH1 0x3f 000029da: RETURNDATASIZE 000029db: ADD 000029dc: AND 000029dd: DUP3 000029de: ADD 000029df: PUSH1 0x40 000029e1: MSTORE 000029e2: RETURNDATASIZE 000029e3: DUP3 000029e4: MSTORE 000029e5: RETURNDATASIZE 000029e6: PUSH1 0x00 000029e8: PUSH1 0x20 000029ea: DUP5 000029eb: ADD 000029ec: RETURNDATACOPY 000029ed: PUSH2 0x29f6 000029f0: JUMP 000029f1: JUMPDEST 000029f2: PUSH1 0x60 000029f4: SWAP2 000029f5: POP 000029f6: JUMPDEST 000029f7: POP 000029f8: SWAP2 000029f9: POP 000029fa: SWAP2 000029fb: POP 000029fc: PUSH2 0x2a07 000029ff: DUP8 00002a00: DUP4 00002a01: DUP4 00002a02: DUP8 00002a03: PUSH2 0x2a2d 00002a06: JUMP 00002a07: JUMPDEST 00002a08: SWAP3 00002a09: POP 00002a0a: POP 00002a0b: POP 00002a0c: JUMPDEST 00002a0d: SWAP5 00002a0e: SWAP4 00002a0f: POP 00002a10: POP 00002a11: POP 00002a12: POP 00002a13: JUMP 00002a14: JUMPDEST 00002a15: PUSH1 0x60 00002a17: DUP4 00002a18: ISZERO 00002a19: PUSH2 0x2a23 00002a1c: JUMPI 00002a1d: POP 00002a1e: DUP2 00002a1f: PUSH2 0x270a 00002a22: JUMP 00002a23: JUMPDEST 00002a24: PUSH2 0x270a 00002a27: DUP4 00002a28: DUP4 00002a29: PUSH2 0x2aa2 00002a2c: JUMP 00002a2d: JUMPDEST 00002a2e: PUSH1 0x60 00002a30: DUP4 00002a31: ISZERO 00002a32: PUSH2 0x2a9c 00002a35: JUMPI 00002a36: DUP3 00002a37: MLOAD 00002a38: PUSH1 0x00 00002a3a: SUB 00002a3b: PUSH2 0x2a95 00002a3e: JUMPI 00002a3f: PUSH1 0x01 00002a41: PUSH1 0x01 00002a43: PUSH1 0xa0 00002a45: SHL 00002a46: SUB 00002a47: DUP6 00002a48: AND 00002a49: EXTCODESIZE 00002a4a: PUSH2 0x2a95 00002a4d: JUMPI 00002a4e: PUSH1 0x40 00002a50: MLOAD 00002a51: PUSH3 0x461bcd 00002a55: PUSH1 0xe5 00002a57: SHL 00002a58: DUP2 00002a59: MSTORE 00002a5a: PUSH1 0x20 00002a5c: PUSH1 0x04 00002a5e: DUP3 00002a5f: ADD 00002a60: MSTORE 00002a61: PUSH1 0x1d 00002a63: PUSH1 0x24 00002a65: DUP3 00002a66: ADD 00002a67: MSTORE 00002a68: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002a89: PUSH1 0x44 00002a8b: DUP3 00002a8c: ADD 00002a8d: MSTORE 00002a8e: PUSH1 0x64 00002a90: ADD 00002a91: PUSH2 0x01ac 00002a94: JUMP 00002a95: JUMPDEST 00002a96: POP 00002a97: DUP2 00002a98: PUSH2 0x2a0c 00002a9b: JUMP 00002a9c: JUMPDEST 00002a9d: PUSH2 0x2a0c 00002aa0: DUP4 00002aa1: DUP4 00002aa2: JUMPDEST 00002aa3: DUP2 00002aa4: MLOAD 00002aa5: ISZERO 00002aa6: PUSH2 0x2ab2 00002aa9: JUMPI 00002aaa: DUP2 00002aab: MLOAD 00002aac: DUP1 00002aad: DUP4 00002aae: PUSH1 0x20 00002ab0: ADD 00002ab1: REVERT 00002ab2: JUMPDEST 00002ab3: DUP1 00002ab4: PUSH1 0x40 00002ab6: MLOAD 00002ab7: PUSH3 0x461bcd 00002abb: PUSH1 0xe5 00002abd: SHL 00002abe: DUP2 00002abf: MSTORE 00002ac0: PUSH1 0x04 00002ac2: ADD 00002ac3: PUSH2 0x01ac 00002ac6: SWAP2 00002ac7: SWAP1 00002ac8: PUSH2 0x31ca 00002acb: JUMP 00002acc: JUMPDEST 00002acd: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002aee: PUSH1 0x00 00002af0: MSTORE 00002af1: PUSH1 0x41 00002af3: PUSH1 0x04 00002af5: MSTORE 00002af6: PUSH1 0x24 00002af8: PUSH1 0x00 00002afa: REVERT 00002afb: JUMPDEST 00002afc: PUSH1 0x40 00002afe: MLOAD 00002aff: PUSH1 0x1f 00002b01: DUP3 00002b02: ADD 00002b03: PUSH1 0x1f 00002b05: NOT 00002b06: AND 00002b07: DUP2 00002b08: ADD 00002b09: PUSH8 0xffffffffffffffff 00002b12: DUP2 00002b13: GT 00002b14: DUP3 00002b15: DUP3 00002b16: LT 00002b17: OR 00002b18: ISZERO 00002b19: PUSH2 0x2b24 00002b1c: JUMPI 00002b1d: PUSH2 0x2b24 00002b20: PUSH2 0x2acc 00002b23: JUMP 00002b24: JUMPDEST 00002b25: PUSH1 0x40 00002b27: MSTORE 00002b28: SWAP2 00002b29: SWAP1 00002b2a: POP 00002b2b: JUMP 00002b2c: JUMPDEST 00002b2d: PUSH1 0x00 00002b2f: PUSH8 0xffffffffffffffff 00002b38: DUP3 00002b39: GT 00002b3a: ISZERO 00002b3b: PUSH2 0x2b46 00002b3e: JUMPI 00002b3f: PUSH2 0x2b46 00002b42: PUSH2 0x2acc 00002b45: JUMP 00002b46: JUMPDEST 00002b47: POP 00002b48: PUSH1 0x05 00002b4a: SHL 00002b4b: PUSH1 0x20 00002b4d: ADD 00002b4e: SWAP1 00002b4f: JUMP 00002b50: JUMPDEST 00002b51: PUSH1 0x01 00002b53: PUSH1 0x01 00002b55: PUSH1 0xa0 00002b57: SHL 00002b58: SUB 00002b59: DUP2 00002b5a: AND 00002b5b: DUP2 00002b5c: EQ 00002b5d: PUSH2 0x0b33 00002b60: JUMPI 00002b61: PUSH1 0x00 00002b63: DUP1 00002b64: REVERT 00002b65: JUMPDEST 00002b66: PUSH1 0x00 00002b68: DUP3 00002b69: PUSH1 0x1f 00002b6b: DUP4 00002b6c: ADD 00002b6d: SLT 00002b6e: PUSH2 0x2b76 00002b71: JUMPI 00002b72: PUSH1 0x00 00002b74: DUP1 00002b75: REVERT 00002b76: JUMPDEST 00002b77: DUP2 00002b78: CALLDATALOAD 00002b79: PUSH1 0x20 00002b7b: PUSH2 0x2b8b 00002b7e: PUSH2 0x2b86 00002b81: DUP4 00002b82: PUSH2 0x2b2c 00002b85: JUMP 00002b86: JUMPDEST 00002b87: PUSH2 0x2afb 00002b8a: JUMP 00002b8b: JUMPDEST 00002b8c: DUP3 00002b8d: DUP2 00002b8e: MSTORE 00002b8f: PUSH1 0x05 00002b91: SWAP3 00002b92: SWAP1 00002b93: SWAP3 00002b94: SHL 00002b95: DUP5 00002b96: ADD 00002b97: DUP2 00002b98: ADD 00002b99: SWAP2 00002b9a: DUP2 00002b9b: DUP2 00002b9c: ADD 00002b9d: SWAP1 00002b9e: DUP7 00002b9f: DUP5 00002ba0: GT 00002ba1: ISZERO 00002ba2: PUSH2 0x2baa 00002ba5: JUMPI 00002ba6: PUSH1 0x00 00002ba8: DUP1 00002ba9: REVERT 00002baa: JUMPDEST 00002bab: DUP3 00002bac: DUP7 00002bad: ADD 00002bae: JUMPDEST 00002baf: DUP5 00002bb0: DUP2 00002bb1: LT 00002bb2: ISZERO 00002bb3: PUSH2 0x2bce 00002bb6: JUMPI 00002bb7: DUP1 00002bb8: CALLDATALOAD 00002bb9: PUSH2 0x2bc1 00002bbc: DUP2 00002bbd: PUSH2 0x2b50 00002bc0: JUMP 00002bc1: JUMPDEST 00002bc2: DUP4 00002bc3: MSTORE 00002bc4: SWAP2 00002bc5: DUP4 00002bc6: ADD 00002bc7: SWAP2 00002bc8: DUP4 00002bc9: ADD 00002bca: PUSH2 0x2bae 00002bcd: JUMP 00002bce: JUMPDEST 00002bcf: POP 00002bd0: SWAP7 00002bd1: SWAP6 00002bd2: POP 00002bd3: POP 00002bd4: POP 00002bd5: POP 00002bd6: POP 00002bd7: POP 00002bd8: JUMP 00002bd9: JUMPDEST 00002bda: PUSH1 0x00 00002bdc: PUSH8 0xffffffffffffffff 00002be5: DUP3 00002be6: GT 00002be7: ISZERO 00002be8: PUSH2 0x2bf3 00002beb: JUMPI 00002bec: PUSH2 0x2bf3 00002bef: PUSH2 0x2acc 00002bf2: JUMP 00002bf3: JUMPDEST 00002bf4: POP 00002bf5: PUSH1 0x1f 00002bf7: ADD 00002bf8: PUSH1 0x1f 00002bfa: NOT 00002bfb: AND 00002bfc: PUSH1 0x20 00002bfe: ADD 00002bff: SWAP1 00002c00: JUMP 00002c01: JUMPDEST 00002c02: PUSH1 0x00 00002c04: DUP3 00002c05: PUSH1 0x1f 00002c07: DUP4 00002c08: ADD 00002c09: SLT 00002c0a: PUSH2 0x2c12 00002c0d: JUMPI 00002c0e: PUSH1 0x00 00002c10: DUP1 00002c11: REVERT 00002c12: JUMPDEST 00002c13: DUP2 00002c14: CALLDATALOAD 00002c15: PUSH2 0x2c20 00002c18: PUSH2 0x2b86 00002c1b: DUP3 00002c1c: PUSH2 0x2bd9 00002c1f: JUMP 00002c20: JUMPDEST 00002c21: DUP2 00002c22: DUP2 00002c23: MSTORE 00002c24: DUP5 00002c25: PUSH1 0x20 00002c27: DUP4 00002c28: DUP7 00002c29: ADD 00002c2a: ADD 00002c2b: GT 00002c2c: ISZERO 00002c2d: PUSH2 0x2c35 00002c30: JUMPI 00002c31: PUSH1 0x00 00002c33: DUP1 00002c34: REVERT 00002c35: JUMPDEST 00002c36: DUP2 00002c37: PUSH1 0x20 00002c39: DUP6 00002c3a: ADD 00002c3b: PUSH1 0x20 00002c3d: DUP4 00002c3e: ADD 00002c3f: CALLDATACOPY 00002c40: PUSH1 0x00 00002c42: SWAP2 00002c43: DUP2 00002c44: ADD 00002c45: PUSH1 0x20 00002c47: ADD 00002c48: SWAP2 00002c49: SWAP1 00002c4a: SWAP2 00002c4b: MSTORE 00002c4c: SWAP4 00002c4d: SWAP3 00002c4e: POP 00002c4f: POP 00002c50: POP 00002c51: JUMP 00002c52: JUMPDEST 00002c53: PUSH1 0x00 00002c55: DUP1 00002c56: PUSH1 0x00 00002c58: PUSH1 0x60 00002c5a: DUP5 00002c5b: DUP7 00002c5c: SUB 00002c5d: SLT 00002c5e: ISZERO 00002c5f: PUSH2 0x2c67 00002c62: JUMPI 00002c63: PUSH1 0x00 00002c65: DUP1 00002c66: REVERT 00002c67: JUMPDEST 00002c68: DUP4 00002c69: CALLDATALOAD 00002c6a: PUSH8 0xffffffffffffffff 00002c73: DUP1 00002c74: DUP3 00002c75: GT 00002c76: ISZERO 00002c77: PUSH2 0x2c7f 00002c7a: JUMPI 00002c7b: PUSH1 0x00 00002c7d: DUP1 00002c7e: REVERT 00002c7f: JUMPDEST 00002c80: PUSH2 0x2c8b 00002c83: DUP8 00002c84: DUP4 00002c85: DUP9 00002c86: ADD 00002c87: PUSH2 0x2b65 00002c8a: JUMP 00002c8b: JUMPDEST 00002c8c: SWAP5 00002c8d: POP 00002c8e: PUSH1 0x20 00002c90: SWAP2 00002c91: POP 00002c92: DUP2 00002c93: DUP7 00002c94: ADD 00002c95: CALLDATALOAD 00002c96: DUP2 00002c97: DUP2 00002c98: GT 00002c99: ISZERO 00002c9a: PUSH2 0x2ca2 00002c9d: JUMPI 00002c9e: PUSH1 0x00 00002ca0: DUP1 00002ca1: REVERT 00002ca2: JUMPDEST 00002ca3: DUP7 00002ca4: ADD 00002ca5: PUSH1 0x1f 00002ca7: DUP2 00002ca8: ADD 00002ca9: DUP9 00002caa: SGT 00002cab: PUSH2 0x2cb3 00002cae: JUMPI 00002caf: PUSH1 0x00 00002cb1: DUP1 00002cb2: REVERT 00002cb3: JUMPDEST 00002cb4: DUP1 00002cb5: CALLDATALOAD 00002cb6: PUSH2 0x2cc1 00002cb9: PUSH2 0x2b86 00002cbc: DUP3 00002cbd: PUSH2 0x2b2c 00002cc0: JUMP 00002cc1: JUMPDEST 00002cc2: DUP2 00002cc3: DUP2 00002cc4: MSTORE 00002cc5: PUSH1 0x05 00002cc7: SWAP2 00002cc8: SWAP1 00002cc9: SWAP2 00002cca: SHL 00002ccb: DUP3 00002ccc: ADD 00002ccd: DUP5 00002cce: ADD 00002ccf: SWAP1 00002cd0: DUP5 00002cd1: DUP2 00002cd2: ADD 00002cd3: SWAP1 00002cd4: DUP11 00002cd5: DUP4 00002cd6: GT 00002cd7: ISZERO 00002cd8: PUSH2 0x2ce0 00002cdb: JUMPI 00002cdc: PUSH1 0x00 00002cde: DUP1 00002cdf: REVERT 00002ce0: JUMPDEST 00002ce1: DUP6 00002ce2: DUP5 00002ce3: ADD 00002ce4: JUMPDEST 00002ce5: DUP4 00002ce6: DUP2 00002ce7: LT 00002ce8: ISZERO 00002ce9: PUSH2 0x2d18 00002cec: JUMPI 00002ced: DUP1 00002cee: CALLDATALOAD 00002cef: DUP7 00002cf0: DUP2 00002cf1: GT 00002cf2: ISZERO 00002cf3: PUSH2 0x2cfc 00002cf6: JUMPI 00002cf7: PUSH1 0x00 00002cf9: DUP1 00002cfa: DUP2 00002cfb: REVERT 00002cfc: JUMPDEST 00002cfd: PUSH2 0x2d0a 00002d00: DUP14 00002d01: DUP10 00002d02: DUP4 00002d03: DUP10 00002d04: ADD 00002d05: ADD 00002d06: PUSH2 0x2c01 00002d09: JUMP 00002d0a: JUMPDEST 00002d0b: DUP5 00002d0c: MSTORE 00002d0d: POP 00002d0e: SWAP2 00002d0f: DUP7 00002d10: ADD 00002d11: SWAP2 00002d12: DUP7 00002d13: ADD 00002d14: PUSH2 0x2ce4 00002d17: JUMP 00002d18: JUMPDEST 00002d19: POP 00002d1a: SWAP7 00002d1b: POP 00002d1c: POP 00002d1d: POP 00002d1e: POP 00002d1f: PUSH1 0x40 00002d21: DUP7 00002d22: ADD 00002d23: CALLDATALOAD 00002d24: SWAP2 00002d25: POP 00002d26: DUP1 00002d27: DUP3 00002d28: GT 00002d29: ISZERO 00002d2a: PUSH2 0x2d32 00002d2d: JUMPI 00002d2e: PUSH1 0x00 00002d30: DUP1 00002d31: REVERT 00002d32: JUMPDEST 00002d33: POP 00002d34: PUSH2 0x2d3f 00002d37: DUP7 00002d38: DUP3 00002d39: DUP8 00002d3a: ADD 00002d3b: PUSH2 0x2c01 00002d3e: JUMP 00002d3f: JUMPDEST 00002d40: SWAP2 00002d41: POP 00002d42: POP 00002d43: SWAP3 00002d44: POP 00002d45: SWAP3 00002d46: POP 00002d47: SWAP3 00002d48: JUMP 00002d49: JUMPDEST 00002d4a: PUSH1 0x00 00002d4c: PUSH1 0x20 00002d4e: DUP3 00002d4f: DUP5 00002d50: SUB 00002d51: SLT 00002d52: ISZERO 00002d53: PUSH2 0x2d5b 00002d56: JUMPI 00002d57: PUSH1 0x00 00002d59: DUP1 00002d5a: REVERT 00002d5b: JUMPDEST 00002d5c: POP 00002d5d: CALLDATALOAD 00002d5e: SWAP2 00002d5f: SWAP1 00002d60: POP 00002d61: JUMP 00002d62: JUMPDEST 00002d63: PUSH1 0x00 00002d65: PUSH1 0x20 00002d67: DUP3 00002d68: DUP5 00002d69: SUB 00002d6a: SLT 00002d6b: ISZERO 00002d6c: PUSH2 0x2d74 00002d6f: JUMPI 00002d70: PUSH1 0x00 00002d72: DUP1 00002d73: REVERT 00002d74: JUMPDEST 00002d75: DUP2 00002d76: CALLDATALOAD 00002d77: PUSH2 0x270a 00002d7a: DUP2 00002d7b: PUSH2 0x2b50 00002d7e: JUMP 00002d7f: JUMPDEST 00002d80: PUSH1 0x00 00002d82: DUP1 00002d83: PUSH1 0x00 00002d85: PUSH1 0x60 00002d87: DUP5 00002d88: DUP7 00002d89: SUB 00002d8a: SLT 00002d8b: ISZERO 00002d8c: PUSH2 0x2d94 00002d8f: JUMPI 00002d90: PUSH1 0x00 00002d92: DUP1 00002d93: REVERT 00002d94: JUMPDEST 00002d95: DUP4 00002d96: CALLDATALOAD 00002d97: PUSH2 0x2d9f 00002d9a: DUP2 00002d9b: PUSH2 0x2b50 00002d9e: JUMP 00002d9f: JUMPDEST 00002da0: SWAP3 00002da1: POP 00002da2: PUSH1 0x20 00002da4: DUP5 00002da5: ADD 00002da6: CALLDATALOAD 00002da7: SWAP2 00002da8: POP 00002da9: PUSH1 0x40 00002dab: DUP5 00002dac: ADD 00002dad: CALLDATALOAD 00002dae: PUSH2 0x2db6 00002db1: DUP2 00002db2: PUSH2 0x2b50 00002db5: JUMP 00002db6: JUMPDEST 00002db7: DUP1 00002db8: SWAP2 00002db9: POP 00002dba: POP 00002dbb: SWAP3 00002dbc: POP 00002dbd: SWAP3 00002dbe: POP 00002dbf: SWAP3 00002dc0: JUMP 00002dc1: JUMPDEST 00002dc2: PUSH1 0x00 00002dc4: DUP1 00002dc5: PUSH1 0x40 00002dc7: DUP4 00002dc8: DUP6 00002dc9: SUB 00002dca: SLT 00002dcb: ISZERO 00002dcc: PUSH2 0x2dd4 00002dcf: JUMPI 00002dd0: PUSH1 0x00 00002dd2: DUP1 00002dd3: REVERT 00002dd4: JUMPDEST 00002dd5: DUP3 00002dd6: CALLDATALOAD 00002dd7: PUSH2 0x2ddf 00002dda: DUP2 00002ddb: PUSH2 0x2b50 00002dde: JUMP 00002ddf: JUMPDEST 00002de0: SWAP5 00002de1: PUSH1 0x20 00002de3: SWAP4 00002de4: SWAP1 00002de5: SWAP4 00002de6: ADD 00002de7: CALLDATALOAD 00002de8: SWAP4 00002de9: POP 00002dea: POP 00002deb: POP 00002dec: JUMP 00002ded: JUMPDEST 00002dee: PUSH1 0x00 00002df0: DUP1 00002df1: PUSH1 0x40 00002df3: DUP4 00002df4: DUP6 00002df5: SUB 00002df6: SLT 00002df7: ISZERO 00002df8: PUSH2 0x2e00 00002dfb: JUMPI 00002dfc: PUSH1 0x00 00002dfe: DUP1 00002dff: REVERT 00002e00: JUMPDEST 00002e01: DUP3 00002e02: CALLDATALOAD 00002e03: PUSH2 0x2e0b 00002e06: DUP2 00002e07: PUSH2 0x2b50 00002e0a: JUMP 00002e0b: JUMPDEST 00002e0c: SWAP2 00002e0d: POP 00002e0e: PUSH1 0x20 00002e10: DUP4 00002e11: ADD 00002e12: CALLDATALOAD 00002e13: PUSH2 0x2e1b 00002e16: DUP2 00002e17: PUSH2 0x2b50 00002e1a: JUMP 00002e1b: JUMPDEST 00002e1c: DUP1 00002e1d: SWAP2 00002e1e: POP 00002e1f: POP 00002e20: SWAP3 00002e21: POP 00002e22: SWAP3 00002e23: SWAP1 00002e24: POP 00002e25: JUMP 00002e26: JUMPDEST 00002e27: PUSH1 0x00 00002e29: DUP1 00002e2a: PUSH1 0x40 00002e2c: DUP4 00002e2d: DUP6 00002e2e: SUB 00002e2f: SLT 00002e30: ISZERO 00002e31: PUSH2 0x2e39 00002e34: JUMPI 00002e35: PUSH1 0x00 00002e37: DUP1 00002e38: REVERT 00002e39: JUMPDEST 00002e3a: DUP3 00002e3b: CALLDATALOAD 00002e3c: PUSH2 0x2e44 00002e3f: DUP2 00002e40: PUSH2 0x2b50 00002e43: JUMP 00002e44: JUMPDEST 00002e45: SWAP2 00002e46: POP 00002e47: PUSH1 0x20 00002e49: DUP4 00002e4a: ADD 00002e4b: CALLDATALOAD 00002e4c: PUSH8 0xffffffffffffffff 00002e55: DUP2 00002e56: GT 00002e57: ISZERO 00002e58: PUSH2 0x2e60 00002e5b: JUMPI 00002e5c: PUSH1 0x00 00002e5e: DUP1 00002e5f: REVERT 00002e60: JUMPDEST 00002e61: PUSH2 0x2e6c 00002e64: DUP6 00002e65: DUP3 00002e66: DUP7 00002e67: ADD 00002e68: PUSH2 0x2c01 00002e6b: JUMP 00002e6c: JUMPDEST 00002e6d: SWAP2 00002e6e: POP 00002e6f: POP 00002e70: SWAP3 00002e71: POP 00002e72: SWAP3 00002e73: SWAP1 00002e74: POP 00002e75: JUMP 00002e76: JUMPDEST 00002e77: PUSH1 0x00 00002e79: DUP1 00002e7a: PUSH1 0x40 00002e7c: DUP4 00002e7d: DUP6 00002e7e: SUB 00002e7f: SLT 00002e80: ISZERO 00002e81: PUSH2 0x2e89 00002e84: JUMPI 00002e85: PUSH1 0x00 00002e87: DUP1 00002e88: REVERT 00002e89: JUMPDEST 00002e8a: DUP3 00002e8b: CALLDATALOAD 00002e8c: PUSH8 0xffffffffffffffff 00002e95: DUP2 00002e96: GT 00002e97: ISZERO 00002e98: PUSH2 0x2ea0 00002e9b: JUMPI 00002e9c: PUSH1 0x00 00002e9e: DUP1 00002e9f: REVERT 00002ea0: JUMPDEST 00002ea1: PUSH2 0x2eac 00002ea4: DUP6 00002ea5: DUP3 00002ea6: DUP7 00002ea7: ADD 00002ea8: PUSH2 0x2b65 00002eab: JUMP 00002eac: JUMPDEST 00002ead: SWAP3 00002eae: POP 00002eaf: POP 00002eb0: PUSH1 0x20 00002eb2: DUP4 00002eb3: ADD 00002eb4: CALLDATALOAD 00002eb5: PUSH2 0x2e1b 00002eb8: DUP2 00002eb9: PUSH2 0x2b50 00002ebc: JUMP 00002ebd: JUMPDEST 00002ebe: DUP1 00002ebf: ISZERO 00002ec0: ISZERO 00002ec1: DUP2 00002ec2: EQ 00002ec3: PUSH2 0x0b33 00002ec6: JUMPI 00002ec7: PUSH1 0x00 00002ec9: DUP1 00002eca: REVERT 00002ecb: JUMPDEST 00002ecc: PUSH1 0x00 00002ece: PUSH1 0x20 00002ed0: DUP3 00002ed1: DUP5 00002ed2: SUB 00002ed3: SLT 00002ed4: ISZERO 00002ed5: PUSH2 0x2edd 00002ed8: JUMPI 00002ed9: PUSH1 0x00 00002edb: DUP1 00002edc: REVERT 00002edd: JUMPDEST 00002ede: DUP2 00002edf: CALLDATALOAD 00002ee0: PUSH2 0x270a 00002ee3: DUP2 00002ee4: PUSH2 0x2ebd 00002ee7: JUMP 00002ee8: JUMPDEST 00002ee9: PUSH1 0x00 00002eeb: DUP1 00002eec: PUSH1 0x00 00002eee: PUSH1 0x60 00002ef0: DUP5 00002ef1: DUP7 00002ef2: SUB 00002ef3: SLT 00002ef4: ISZERO 00002ef5: PUSH2 0x2efd 00002ef8: JUMPI 00002ef9: PUSH1 0x00 00002efb: DUP1 00002efc: REVERT 00002efd: JUMPDEST 00002efe: DUP4 00002eff: CALLDATALOAD 00002f00: PUSH2 0x2f08 00002f03: DUP2 00002f04: PUSH2 0x2b50 00002f07: JUMP 00002f08: JUMPDEST 00002f09: SWAP3 00002f0a: POP 00002f0b: PUSH1 0x20 00002f0d: DUP5 00002f0e: ADD 00002f0f: CALLDATALOAD 00002f10: PUSH2 0x2f18 00002f13: DUP2 00002f14: PUSH2 0x2b50 00002f17: JUMP 00002f18: JUMPDEST 00002f19: SWAP3 00002f1a: SWAP6 00002f1b: SWAP3 00002f1c: SWAP5 00002f1d: POP 00002f1e: POP 00002f1f: POP 00002f20: PUSH1 0x40 00002f22: SWAP2 00002f23: SWAP1 00002f24: SWAP2 00002f25: ADD 00002f26: CALLDATALOAD 00002f27: SWAP1 00002f28: JUMP 00002f29: JUMPDEST 00002f2a: PUSH1 0x00 00002f2c: DUP1 00002f2d: PUSH1 0x00 00002f2f: DUP1 00002f30: PUSH1 0x00 00002f32: DUP1 00002f33: PUSH1 0xc0 00002f35: DUP8 00002f36: DUP10 00002f37: SUB 00002f38: SLT 00002f39: ISZERO 00002f3a: PUSH2 0x2f42 00002f3d: JUMPI 00002f3e: PUSH1 0x00 00002f40: DUP1 00002f41: REVERT 00002f42: JUMPDEST 00002f43: DUP7 00002f44: MLOAD 00002f45: PUSH2 0x2f4d 00002f48: DUP2 00002f49: PUSH2 0x2b50 00002f4c: JUMP 00002f4d: JUMPDEST 00002f4e: PUSH1 0x20 00002f50: DUP9 00002f51: ADD 00002f52: MLOAD 00002f53: PUSH1 0x40 00002f55: DUP10 00002f56: ADD 00002f57: MLOAD 00002f58: SWAP2 00002f59: SWAP8 00002f5a: POP 00002f5b: SWAP6 00002f5c: POP 00002f5d: PUSH2 0x2f65 00002f60: DUP2 00002f61: PUSH2 0x2b50 00002f64: JUMP 00002f65: JUMPDEST 00002f66: PUSH1 0x60 00002f68: DUP9 00002f69: ADD 00002f6a: MLOAD 00002f6b: SWAP1 00002f6c: SWAP5 00002f6d: POP 00002f6e: PUSH2 0x2f76 00002f71: DUP2 00002f72: PUSH2 0x2b50 00002f75: JUMP 00002f76: JUMPDEST 00002f77: PUSH1 0x80 00002f79: DUP9 00002f7a: ADD 00002f7b: MLOAD 00002f7c: SWAP1 00002f7d: SWAP4 00002f7e: POP 00002f7f: PUSH2 0x2f87 00002f82: DUP2 00002f83: PUSH2 0x2b50 00002f86: JUMP 00002f87: JUMPDEST 00002f88: DUP1 00002f89: SWAP3 00002f8a: POP 00002f8b: POP 00002f8c: PUSH1 0xa0 00002f8e: DUP8 00002f8f: ADD 00002f90: MLOAD 00002f91: SWAP1 00002f92: POP 00002f93: SWAP3 00002f94: SWAP6 00002f95: POP 00002f96: SWAP3 00002f97: SWAP6 00002f98: POP 00002f99: SWAP3 00002f9a: SWAP6 00002f9b: JUMP 00002f9c: JUMPDEST 00002f9d: PUSH1 0x00 00002f9f: JUMPDEST 00002fa0: DUP4 00002fa1: DUP2 00002fa2: LT 00002fa3: ISZERO 00002fa4: PUSH2 0x2fb7 00002fa7: JUMPI 00002fa8: DUP2 00002fa9: DUP2 00002faa: ADD 00002fab: MLOAD 00002fac: DUP4 00002fad: DUP3 00002fae: ADD 00002faf: MSTORE 00002fb0: PUSH1 0x20 00002fb2: ADD 00002fb3: PUSH2 0x2f9f 00002fb6: JUMP 00002fb7: JUMPDEST 00002fb8: POP 00002fb9: POP 00002fba: PUSH1 0x00 00002fbc: SWAP2 00002fbd: ADD 00002fbe: MSTORE 00002fbf: JUMP 00002fc0: JUMPDEST 00002fc1: DUP3 00002fc2: DUP2 00002fc3: MSTORE 00002fc4: PUSH1 0x00 00002fc6: DUP3 00002fc7: MLOAD 00002fc8: PUSH2 0x2fd8 00002fcb: DUP2 00002fcc: PUSH1 0x20 00002fce: DUP6 00002fcf: ADD 00002fd0: PUSH1 0x20 00002fd2: DUP8 00002fd3: ADD 00002fd4: PUSH2 0x2f9c 00002fd7: JUMP 00002fd8: JUMPDEST 00002fd9: SWAP2 00002fda: SWAP1 00002fdb: SWAP2 00002fdc: ADD 00002fdd: PUSH1 0x20 00002fdf: ADD 00002fe0: SWAP4 00002fe1: SWAP3 00002fe2: POP 00002fe3: POP 00002fe4: POP 00002fe5: JUMP 00002fe6: JUMPDEST 00002fe7: PUSH1 0x00 00002fe9: PUSH1 0x20 00002feb: DUP3 00002fec: DUP5 00002fed: SUB 00002fee: SLT 00002fef: ISZERO 00002ff0: PUSH2 0x2ff8 00002ff3: JUMPI 00002ff4: PUSH1 0x00 00002ff6: DUP1 00002ff7: REVERT 00002ff8: JUMPDEST 00002ff9: POP 00002ffa: MLOAD 00002ffb: SWAP2 00002ffc: SWAP1 00002ffd: POP 00002ffe: JUMP 00002fff: JUMPDEST 00003000: PUSH1 0x00 00003002: PUSH1 0x20 00003004: DUP3 00003005: DUP5 00003006: SUB 00003007: SLT 00003008: ISZERO 00003009: PUSH2 0x3011 0000300c: JUMPI 0000300d: PUSH1 0x00 0000300f: DUP1 00003010: REVERT 00003011: JUMPDEST 00003012: DUP2 00003013: MLOAD 00003014: PUSH2 0x270a 00003017: DUP2 00003018: PUSH2 0x2b50 0000301b: JUMP 0000301c: JUMPDEST 0000301d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000303e: PUSH1 0x00 00003040: MSTORE 00003041: PUSH1 0x32 00003043: PUSH1 0x04 00003045: MSTORE 00003046: PUSH1 0x24 00003048: PUSH1 0x00 0000304a: REVERT 0000304b: JUMPDEST 0000304c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000306d: PUSH1 0x00 0000306f: MSTORE 00003070: PUSH1 0x11 00003072: PUSH1 0x04 00003074: MSTORE 00003075: PUSH1 0x24 00003077: PUSH1 0x00 00003079: REVERT 0000307a: JUMPDEST 0000307b: PUSH1 0x00 0000307d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000309e: DUP3 0000309f: SUB 000030a0: PUSH2 0x30ab 000030a3: JUMPI 000030a4: PUSH2 0x30ab 000030a7: PUSH2 0x304b 000030aa: JUMP 000030ab: JUMPDEST 000030ac: POP 000030ad: PUSH1 0x01 000030af: ADD 000030b0: SWAP1 000030b1: JUMP 000030b2: JUMPDEST 000030b3: PUSH1 0x00 000030b5: PUSH1 0x20 000030b7: DUP3 000030b8: DUP5 000030b9: SUB 000030ba: SLT 000030bb: ISZERO 000030bc: PUSH2 0x30c4 000030bf: JUMPI 000030c0: PUSH1 0x00 000030c2: DUP1 000030c3: REVERT 000030c4: JUMPDEST 000030c5: DUP2 000030c6: MLOAD 000030c7: PUSH8 0xffffffffffffffff 000030d0: DUP2 000030d1: GT 000030d2: ISZERO 000030d3: PUSH2 0x30db 000030d6: JUMPI 000030d7: PUSH1 0x00 000030d9: DUP1 000030da: REVERT 000030db: JUMPDEST 000030dc: DUP3 000030dd: ADD 000030de: PUSH1 0x1f 000030e0: DUP2 000030e1: ADD 000030e2: DUP5 000030e3: SGT 000030e4: PUSH2 0x30ec 000030e7: JUMPI 000030e8: PUSH1 0x00 000030ea: DUP1 000030eb: REVERT 000030ec: JUMPDEST 000030ed: DUP1 000030ee: MLOAD 000030ef: PUSH2 0x30fa 000030f2: PUSH2 0x2b86 000030f5: DUP3 000030f6: PUSH2 0x2bd9 000030f9: JUMP 000030fa: JUMPDEST 000030fb: DUP2 000030fc: DUP2 000030fd: MSTORE 000030fe: DUP6 000030ff: PUSH1 0x20 00003101: DUP4 00003102: DUP6 00003103: ADD 00003104: ADD 00003105: GT 00003106: ISZERO 00003107: PUSH2 0x310f 0000310a: JUMPI 0000310b: PUSH1 0x00 0000310d: DUP1 0000310e: REVERT 0000310f: JUMPDEST 00003110: PUSH2 0x2853 00003113: DUP3 00003114: PUSH1 0x20 00003116: DUP4 00003117: ADD 00003118: PUSH1 0x20 0000311a: DUP7 0000311b: ADD 0000311c: PUSH2 0x2f9c 0000311f: JUMP 00003120: JUMPDEST 00003121: PUSH1 0x00 00003123: PUSH1 0x20 00003125: DUP3 00003126: DUP5 00003127: SUB 00003128: SLT 00003129: ISZERO 0000312a: PUSH2 0x3132 0000312d: JUMPI 0000312e: PUSH1 0x00 00003130: DUP1 00003131: REVERT 00003132: JUMPDEST 00003133: DUP2 00003134: MLOAD 00003135: PUSH1 0xff 00003137: DUP2 00003138: AND 00003139: DUP2 0000313a: EQ 0000313b: PUSH2 0x270a 0000313e: JUMPI 0000313f: PUSH1 0x00 00003141: DUP1 00003142: REVERT 00003143: JUMPDEST 00003144: PUSH1 0x00 00003146: DUP2 00003147: MLOAD 00003148: DUP1 00003149: DUP5 0000314a: MSTORE 0000314b: PUSH2 0x315b 0000314e: DUP2 0000314f: PUSH1 0x20 00003151: DUP7 00003152: ADD 00003153: PUSH1 0x20 00003155: DUP7 00003156: ADD 00003157: PUSH2 0x2f9c 0000315a: JUMP 0000315b: JUMPDEST 0000315c: PUSH1 0x1f 0000315e: ADD 0000315f: PUSH1 0x1f 00003161: NOT 00003162: AND 00003163: SWAP3 00003164: SWAP1 00003165: SWAP3 00003166: ADD 00003167: PUSH1 0x20 00003169: ADD 0000316a: SWAP3 0000316b: SWAP2 0000316c: POP 0000316d: POP 0000316e: JUMP 0000316f: JUMPDEST 00003170: PUSH1 0x00 00003172: PUSH1 0x01 00003174: PUSH1 0x01 00003176: PUSH1 0xa0 00003178: SHL 00003179: SUB 0000317a: DUP1 0000317b: DUP10 0000317c: AND 0000317d: DUP4 0000317e: MSTORE 0000317f: DUP8 00003180: PUSH1 0x20 00003182: DUP5 00003183: ADD 00003184: MSTORE 00003185: DUP1 00003186: DUP8 00003187: AND 00003188: PUSH1 0x40 0000318a: DUP5 0000318b: ADD 0000318c: MSTORE 0000318d: POP 0000318e: PUSH1 0xc0 00003190: PUSH1 0x60 00003192: DUP4 00003193: ADD 00003194: MSTORE 00003195: PUSH2 0x31a1 00003198: PUSH1 0xc0 0000319a: DUP4 0000319b: ADD 0000319c: DUP7 0000319d: PUSH2 0x3143 000031a0: JUMP 000031a1: JUMPDEST 000031a2: DUP3 000031a3: DUP2 000031a4: SUB 000031a5: PUSH1 0x80 000031a7: DUP5 000031a8: ADD 000031a9: MSTORE 000031aa: PUSH2 0x31b3 000031ad: DUP2 000031ae: DUP7 000031af: PUSH2 0x3143 000031b2: JUMP 000031b3: JUMPDEST 000031b4: SWAP2 000031b5: POP 000031b6: POP 000031b7: PUSH1 0xff 000031b9: DUP4 000031ba: AND 000031bb: PUSH1 0xa0 000031bd: DUP4 000031be: ADD 000031bf: MSTORE 000031c0: SWAP8 000031c1: SWAP7 000031c2: POP 000031c3: POP 000031c4: POP 000031c5: POP 000031c6: POP 000031c7: POP 000031c8: POP 000031c9: JUMP 000031ca: JUMPDEST 000031cb: PUSH1 0x20 000031cd: DUP2 000031ce: MSTORE 000031cf: PUSH1 0x00 000031d1: PUSH2 0x270a 000031d4: PUSH1 0x20 000031d6: DUP4 000031d7: ADD 000031d8: DUP5 000031d9: PUSH2 0x3143 000031dc: JUMP 000031dd: JUMPDEST 000031de: PUSH1 0x00 000031e0: PUSH1 0x20 000031e2: DUP3 000031e3: DUP5 000031e4: SUB 000031e5: SLT 000031e6: ISZERO 000031e7: PUSH2 0x31ef 000031ea: JUMPI 000031eb: PUSH1 0x00 000031ed: DUP1 000031ee: REVERT 000031ef: JUMPDEST 000031f0: DUP2 000031f1: MLOAD 000031f2: PUSH2 0x270a 000031f5: DUP2 000031f6: PUSH2 0x2ebd 000031f9: JUMP 000031fa: JUMPDEST 000031fb: DUP1 000031fc: DUP3 000031fd: ADD 000031fe: DUP1 000031ff: DUP3 00003200: GT 00003201: ISZERO 00003202: PUSH2 0x2294 00003205: JUMPI 00003206: PUSH2 0x2294 00003209: PUSH2 0x304b 0000320c: JUMP 0000320d: JUMPDEST 0000320e: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000322f: PUSH1 0x00 00003231: MSTORE 00003232: PUSH1 0x21 00003234: PUSH1 0x04 00003236: MSTORE 00003237: PUSH1 0x24 00003239: PUSH1 0x00 0000323b: REVERT 0000323c: JUMPDEST 0000323d: PUSH1 0x00 0000323f: DUP3 00003240: MLOAD 00003241: PUSH2 0x324e 00003244: DUP2 00003245: DUP5 00003246: PUSH1 0x20 00003248: DUP8 00003249: ADD 0000324a: PUSH2 0x2f9c 0000324d: JUMP 0000324e: JUMPDEST 0000324f: SWAP2 00003250: SWAP1 00003251: SWAP2 00003252: ADD 00003253: SWAP3 00003254: SWAP2 00003255: POP 00003256: POP 00003257: JUMP 00003258: INVALID 00003259: COINBASE 0000325a: PUSH5 0x6472657373 00003260: GASPRICE 00003261: KECCAK256 00003262: PUSH13 0x6f772d6c6576656c2064656c65 00003270: PUSH8 0x6174652063616c6c 00003279: KECCAK256 0000327a: PUSH7 0x61696c6564a264 00003282: PUSH10 0x70667358221220464d6d 0000328d: UNKNOWN(0xE0) 0000328e: UNKNOWN(0x2D) 0000328f: COINBASE 00003290: UNKNOWN(0xCA) 00003291: UNKNOWN(0xBB) 00003292: UNKNOWN(0xBE) 00003293: UNKNOWN(0xF7) 00003294: MCOPY 00003295: UNKNOWN(0xBD) 00003296: UNKNOWN(0xD4) 00003297: MLOAD 00003298: SWAP8 00003299: BLOCKHASH 0000329a: UNKNOWN(0x4D) 0000329b: DUP6 0000329c: SLT 0000329d: UNKNOWN(0xC5) 0000329e: UNKNOWN(0xCC) 0000329f: UNKNOWN(0xE8) 000032a0: PUSH30
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x1dd3ee4822031b2d58685ebed03f40a9386d9fccda748ef5e18be47ef76f3625
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x1dd3ee4822031b2d58685ebed03f40a9386d9fccda748ef5e18be47ef76f3625",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xc6c8788c",
"selector": "0xc6c8788c",
"calldata_variants": [
"0xc6c8788c",
"0xc6c8788c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf213159c",
"selector": "0xf213159c",
"calldata_variants": [
"0xf213159c",
"0xf213159c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4a120f7",
"selector": "0xf4a120f7",
"calldata_variants": [
"0xf4a120f7",
"0xf4a120f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbb6f2e06",
"selector": "0xbb6f2e06",
"calldata_variants": [
"0xbb6f2e06",
"0xbb6f2e060000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc12327b8",
"selector": "0xc12327b8",
"calldata_variants": [
"0xc12327b8",
"0xc12327b80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb187bd26",
"selector": "0xb187bd26",
"calldata_variants": [
"0xb187bd26",
"0xb187bd260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb6e27136",
"selector": "0xb6e27136",
"calldata_variants": [
"0xb6e27136",
"0xb6e271360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb78103e9",
"selector": "0xb78103e9",
"calldata_variants": [
"0xb78103e9",
"0xb78103e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10231,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x52869f2dfb048b76c9257fe39cf3bd9d7bea9a53637aad8e835c7092790329b5
call_targets:
0xa8372d6ff00d48a25baa1af16d6a86c936708f4e
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x52869f2dfb048b76c9257fe39cf3bd9d7bea9a53637aad8e835c7092790329b5",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa8372d6ff00d48a25baa1af16d6a86c936708f4e"
],
"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": "0xc6c8788c",
"selector": "0xc6c8788c",
"calldata_variants": [
"0xc6c8788c",
"0xc6c8788c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf213159c",
"selector": "0xf213159c",
"calldata_variants": [
"0xf213159c",
"0xf213159c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4a120f7",
"selector": "0xf4a120f7",
"calldata_variants": [
"0xf4a120f7",
"0xf4a120f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbb6f2e06",
"selector": "0xbb6f2e06",
"calldata_variants": [
"0xbb6f2e06",
"0xbb6f2e060000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc12327b8",
"selector": "0xc12327b8",
"calldata_variants": [
"0xc12327b8",
"0xc12327b80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb187bd26",
"selector": "0xb187bd26",
"calldata_variants": [
"0xb187bd26",
"0xb187bd260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb6e27136",
"selector": "0xb6e27136",
"calldata_variants": [
"0xb6e27136",
"0xb6e271360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb78103e9",
"selector": "0xb78103e9",
"calldata_variants": [
"0xb78103e9",
"0xb78103e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10689,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x52869f2dfb048b76c9257fe39cf3bd9d7bea9a53637aad8e835c7092790329b5
call_targets:
0xa8372d6ff00d48a25baa1af16d6a86c936708f4e
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x52869f2dfb048b76c9257fe39cf3bd9d7bea9a53637aad8e835c7092790329b5",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xa8372d6ff00d48a25baa1af16d6a86c936708f4e"
],
"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": "0xc6c8788c",
"selector": "0xc6c8788c",
"calldata_variants": [
"0xc6c8788c",
"0xc6c8788c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf213159c",
"selector": "0xf213159c",
"calldata_variants": [
"0xf213159c",
"0xf213159c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4a120f7",
"selector": "0xf4a120f7",
"calldata_variants": [
"0xf4a120f7",
"0xf4a120f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbb6f2e06",
"selector": "0xbb6f2e06",
"calldata_variants": [
"0xbb6f2e06",
"0xbb6f2e060000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc12327b8",
"selector": "0xc12327b8",
"calldata_variants": [
"0xc12327b8",
"0xc12327b80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb187bd26",
"selector": "0xb187bd26",
"calldata_variants": [
"0xb187bd26",
"0xb187bd260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb6e27136",
"selector": "0xb6e27136",
"calldata_variants": [
"0xb6e27136",
"0xb6e271360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb78103e9",
"selector": "0xb78103e9",
"calldata_variants": [
"0xb78103e9",
"0xb78103e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10689,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | other | codex | Deposits credit the requested amount instead of the amount actually received | 85 | no | — |
viewevidence_json{
"evidence": "`_initiateDeposit` transfers tokens in and then emits `DepositToken(..., _amount)` without checking the balance delta, so accounting assumes the full requested amount always arrived.",
"locations": [
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:155",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:161",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:165"
],
"recommendation": "Track the bridge's balance before and after `safeTransferFrom` and use the actual received amount in the deposit message, or explicitly reject fee-on-transfer/rebasing tokens.",
"exploit_scenario": "If a mapped token charges transfer fees, rebases, or otherwise delivers less than `_amount`, a user can deposit 100 tokens while the contract only receives 90. The bridge still emits a deposit message for 100, so the remote side can mint/release 100. On withdrawal, the attacker can redeem the full 100 and drain 10 tokens from pooled collateral or make later withdrawals insolvent."
}
|
| medium | auth | codex | Withdrawal signatures are replayable across predicate instances on the same chain | 75 | no | — |
viewevidence_json{
"evidence": "`syncWithdraw` computes `messageHash = keccak256(abi.encodePacked(block.chainid, _data))` and uses that for signature recovery. The contract address is never bound into the signed message, while replay protection is only `orderExecuted[from][orderId]` in local storage.",
"locations": [
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:82",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:86",
"contracts/bridge/v2/core/L1/predicates/L1ERC20Predicate.sol:97"
],
"recommendation": "Domain-separate signatures with `address(this)` and, preferably, a full EIP-712 domain that includes the bridge/proxy identity and explicit message type.",
"exploit_scenario": "Validators sign `keccak256(block.chainid, _data)`. Because the signed payload does not include `address(this)` or any bridge-specific domain, the same signatures are valid for any other `L1ERC20Predicate` instance on the same chain that shares the validator registry and token mapping. A legitimate withdrawal approved for one predicate can therefore be replayed against a second funded predicate/proxy, draining its escrow because replay protection (`orderExecuted`) is only local to each contract."
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 16
}
|