255dad02-bda3-4c93-9044-1ca2dfacc23f
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 |
|---|---|---|---|---|
| 31589 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 78161 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 78162 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 78163 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 78164 | capability.graph | complete | 1 / 3 | 1 week ago |
| 78165 | detector.run | complete | 1 / 3 | 1 week ago |
| 78166 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:488289] OpenAI Codex v0.77.0 (research preview)
[codex:488289] --------
[codex:488289] workdir: /tmp/codex-multi-vpee2ghi
[codex:488289] model: gpt-5.2-codex
[codex:488289] provider: openai
[codex:488289] approval: never
[codex:488289] sandbox: read-only
[codex:488289] reasoning effort: xhigh
[codex:488289] reasoning summaries: auto
[codex:488289] session id: 019b87c2-d91a-7580-b591-be7aaff1fa96
[codex:488289] --------
[codex:488289] user
[codex:488289] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:488289]
[codex:488289] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:488289]
[codex:488289] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:488289] - Gas inefficiency, code quality, naming, or best practices
[codex:488289] - Theoretical vulnerabilities without a clear extraction path
[codex:488289] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:488289] - Front-running unless it enables theft beyond MEV
[codex:488289] - DoS, griefing, or issues that don't result in attacker profit
[codex:488289] - Missing events, view function issues, or informational findings
[codex:488289]
[codex:488289] HIGH-VALUE PATTERNS TO HUNT:
[codex:488289] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:488289] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:488289] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:488289] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:488289] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:488289] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:488289] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:488289] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:488289] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:488289]
[codex:488289] For each finding, you MUST provide:
[codex:488289] 1. Exact file and line numbers of vulnerable code
[codex:488289] 2. Step-by-step exploit transaction sequence
[codex:488289] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:488289]
[codex:488289] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:488289]
[codex:488289] Output MUST be valid JSON matching the provided schema.
[codex:488289] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:488289] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:488289] mcp startup: no servers
[codex:488289]
[codex:488289] thinking
[codex:488289] **Preparing to read AUDIT_BUNDLE file**
[codex:488289] exec
[codex:488289] /bin/bash -lc ls in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] AUDIT_BUNDLE.txt
[codex:488289] codex-output-schema.json
[codex:488289] contracts
[codex:488289]
[codex:488289] thinking
[codex:488289] **Reading AUDIT_BUNDLE file**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:488289]
[codex:488289] ================================================================================
[codex:488289] FILE: contracts/openzeppelin-solidity/contracts/GSN/Context.sol
[codex:488289] ================================================================================
[codex:488289] pragma solidity ^0.5.0;
[codex:488289]
[codex:488289] /*
[codex:488289] * @dev Provides information about the current execution context, including the
[codex:488289] * sender of the transaction and its data. While these are generally available
[codex:488289] * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:488289] * manner, since when dealing with GSN meta-transactions the account sending and
[codex:488289] * paying for execution may not be the actual sender (as far as an application
[codex:488289] * is concerned).
[codex:488289] *
[codex:488289] * This contract is only required for intermediate, library-like contracts.
[codex:488289] */
[codex:488289] contract Context {
[codex:488289] // Empty internal constructor, to prevent people from mistakenly deploying
[codex:488289] // an instance of this contract, which should be used via inheritance.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Searching smart contract functions**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "withdraw|transfer|mint|burn|initialize|init|upgrade|deposit|claim|redeem|unstake|withdrawal|withdraws|exit|release" contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 13ms:
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:16: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:19: * @dev Initializes the contract setting the deployer as the initial owner.
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:23: emit OwnershipTransferred(address(0), _owner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:56: emit OwnershipTransferred(_owner, address(0));
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:61: * @dev Transfers ownership of the contract to a new account (`newOwner`).
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:64: function transferOwnership(address newOwner) public onlyOwner {
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:65: _transferOwnership(newOwner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:69: * @dev Transfers ownership of the contract to a new account (`newOwner`).
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:71: function _transferOwnership(address newOwner) internal {
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:73: emit OwnershipTransferred(_owner, newOwner);
[codex:488289] contracts/solidity/contracts/Authorizations.sol:24:/// the recipient of delegated authority must call `claimDelegatedAuthority`,
[codex:488289] contracts/solidity/contracts/Authorizations.sol:62: // Registry contract with a list of approved operator contracts and upgraders.
[codex:488289] contracts/solidity/contracts/Authorizations.sol:115: /// and recognizes the claimant, this relationship will be recorded in
[codex:488289] contracts/solidity/contracts/Authorizations.sol:116: /// `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc.
[codex:488289] contracts/solidity/contracts/Authorizations.sol:120: function claimDelegatedAuthority(
[codex:488289] contracts/solidity/contracts/Authorizations.sol:125: "Unrecognized claimant"
[codex:488289] contracts/solidity/contracts/KeepToken.sol:3:import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] contracts/solidity/contracts/KeepToken.sol:11:/// @dev Standard ERC20Burnable token
[codex:488289] contracts/solidity/contracts/KeepToken.sol:12:contract KeepToken is ERC20Burnable, ERC20Detailed {
[codex:488289] contracts/solidity/contracts/KeepToken.sol:16: uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Auditing key contracts for exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/ManagedGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 10ms:
[codex:488289] pragma solidity ^0.5.4;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "./TokenGrant.sol";
[codex:488289]
[codex:488289] /// @title ManagedGrant
[codex:488289] /// @notice A managed grant acts as the grantee towards the token grant contract,
[codex:488289] /// proxying instructions from the actual grantee.
[codex:488289] /// The address used by the actual grantee
[codex:488289] /// to issue instructions and withdraw tokens
[codex:488289] /// can be reassigned with the consent of the grant manager.
[codex:488289] contract ManagedGrant {
[codex:488289] using SafeERC20 for ERC20Burnable;
[codex:488289]
[codex:488289] ERC20Burnable public token;
[codex:488289] TokenGrant public tokenGrant;
[codex:488289] address public grantManager;
[codex:488289] uint256 public grantId;
[codex:488289] address public grantee;
[codex:488289]
[codex:488289] thinking
[codex:488289] **Checking recoverStake authorization**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '240,520p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] _start,
[codex:488289] _start.add(_cliffDuration),
[codex:488289] 0, 0,
[codex:488289] GrantStakingPolicy(_stakingPolicy)
[codex:488289] );
[codex:488289]
[codex:488289] // Maintain a record to make it easier to query grants by grant manager.
[codex:488289] grantIndices[_from].push(id);
[codex:488289]
[codex:488289] // Maintain a record to make it easier to query grants by grantee.
[codex:488289] grantIndices[_grantee].push(id);
[codex:488289]
[codex:488289] token.safeTransferFrom(_from, address(this), _amount);
[codex:488289]
[codex:488289] // Maintain a record of the unlocked amount
[codex:488289] balances[_grantee] = balances[_grantee].add(_amount);
[codex:488289] emit TokenGrantCreated(id);
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Withdraws Token grant amount to grantee.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Continuing process**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '520,840p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] grants[grantId].staked = grants[grantId].staked.sub(returned);
[codex:488289]
[codex:488289] delete grantStakes[_operator];
[codex:488289] }
[codex:488289] }
[codex:488289]
[codex:488289] thinking
[codex:488289] **Checking access control on recoverStake**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/TokenGrantStake.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./TokenStaking.sol";
[codex:488289] import "./TokenSender.sol";
[codex:488289] import "./utils/BytesLib.sol";
[codex:488289]
[codex:488289] /// @dev Interface of sender contract for approveAndCall pattern.
[codex:488289] interface tokenSender {
[codex:488289] function approveAndCall(address _spender, uint256 _value, bytes calldata _extraData) external;
[codex:488289] }
[codex:488289]
[codex:488289] contract TokenGrantStake {
[codex:488289] using SafeMath for uint256;
[codex:488289] using BytesLib for bytes;
[codex:488289]
[codex:488289] ERC20Burnable token;
[codex:488289] TokenStaking tokenStaking;
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing access control and potential exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,240p' contracts/solidity/contracts/TokenStakingEscrow.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289] ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289]
[codex:488289] Trust math, not hardware.
[codex:488289] */
[codex:488289]
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/ownership/Ownable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289]
[codex:488289]
[codex:488289] thinking
[codex:488289] **Continuing withdrawal function review**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '240,520p' contracts/solidity/contracts/TokenStakingEscrow.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] // It is not possible for the escrow to determine the number of tokens
[codex:488289] // it should return to the grantee of a revoked grant given different
[codex:488289] // possible staking contracts and staking policies.
[codex:488289] //
[codex:488289] // If the entire grant unlocked before it's been reverted, escrow
[codex:488289] // lets to withdraw the entire deposited amount.
[codex:488289] if (getAmountRevoked(deposit.grantId) == 0) {
[codex:488289] (
[codex:488289] uint256 duration,
[codex:488289] uint256 start,
[codex:488289] uint256 cliff
[codex:488289] ) = getUnlockingSchedule(deposit.grantId);
[codex:488289]
[codex:488289] uint256 unlocked = now.getUnlockedAmount(
[codex:488289] deposit.amount,
[codex:488289] duration,
[codex:488289] start,
[codex:488289] cliff
[codex:488289] );
[codex:488289]
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential withdrawal exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '600,760p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] function groupProfitFee() public view returns(uint256) {
[codex:488289] return groupMemberBaseReward.mul(groupSize);
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Checks if the specified account has enough active stake to become
[codex:488289] /// network operator and that this contract has been authorized for potential
[codex:488289] /// slashing.
[codex:488289] ///
[codex:488289] /// Having the required minimum of active stake makes the operator eligible
[codex:488289] /// to join the network. If the active stake is not currently undelegating,
[codex:488289] /// operator is also eligible for work selection.
[codex:488289] ///
[codex:488289] /// @param staker Staker's address
[codex:488289] /// @return True if has enough active stake to participate in the network,
[codex:488289] /// false otherwise.
[codex:488289] function hasMinimumStake(address staker) public view returns(bool) {
[codex:488289] return stakingContract.hasMinimumStake(staker, address(this));
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Checks if group with the given public key is registered.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing withdrawGroupMemberRewards flow**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,260p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289] ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289]
[codex:488289] Trust math, not hardware.
[codex:488289] */
[codex:488289]
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./StakeDelegatable.sol";
[codex:488289]
[codex:488289] thinking
[codex:488289] **Searching for stake recovery functions**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '260,520p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] // but we also reset stake initialization time counter.
[codex:488289] operators[_operator].packedParams = topUps.instantComplete(
[codex:488289] _value, _operator, operatorParams, escrow
[codex:488289] );
[codex:488289] } else {
[codex:488289] // If the stake is initialized, we do NOT add tokens immediately.
[codex:488289] // We initiate the top-up and will add tokens to the stake only
[codex:488289] // after the initialization period for a top-up passes.
[codex:488289] topUps.initiate(_value, _operator, operatorParams, escrow);
[codex:488289] }
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Commits pending top-up for the provided operator. If the top-up
[codex:488289] /// did not pass the initialization period, the function fails.
[codex:488289] /// @param _operator The operator with a pending top-up that is getting
[codex:488289] /// committed.
[codex:488289] function commitTopUp(address _operator) public {
[codex:488289] operators[_operator].packedParams = topUps.commit(
[codex:488289] _operator,
[codex:488289] operators[_operator].packedParams,
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '520,760p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]
[codex:488289] /// @notice Seize provided token amount from every member in the misbehaved
[codex:488289] /// operators array. The tattletale is rewarded with 5% of the total seized
[codex:488289] /// amount scaled by the reward adjustment parameter and the rest 95% is burned.
[codex:488289] /// @param amountToSeize Token amount to seize from every misbehaved operator.
[codex:488289] /// @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.
[codex:488289] /// @param tattletale Address to receive the 5% reward.
[codex:488289] /// @param misbehavedOperators Array of addresses to seize the tokens from.
[codex:488289] function seize(
[codex:488289] uint256 amountToSeize,
[codex:488289] uint256 rewardMultiplier,
[codex:488289] address tattletale,
[codex:488289] address[] memory misbehavedOperators
[codex:488289] ) public onlyApprovedOperatorContract(msg.sender) {
[codex:488289] uint256 totalAmountToBurn;
[codex:488289] address authoritySource = getAuthoritySource(msg.sender);
[codex:488289] for (uint i = 0; i < misbehavedOperators.length; i++) {
[codex:488289] address operator = misbehavedOperators[i];
[codex:488289] require(authorizations[authoritySource][operator], "Not authorized");
[codex:488289]
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing access control and potential exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '280,380p' contracts/solidity/contracts/libraries/operator/Groups.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] uint256 seed
[codex:488289] ) public returns(uint256) {
[codex:488289] expireOldGroups(self);
[codex:488289]
[codex:488289] require(numberOfGroups(self) > 0, "No active groups");
[codex:488289]
[codex:488289] uint256 selectedGroup = seed % numberOfGroups(self);
[codex:488289] return shiftByTerminatedGroups(self, shiftByExpiredGroups(self, selectedGroup));
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Evaluates the shift of selected group index based on the number of
[codex:488289] /// expired groups.
[codex:488289] function shiftByExpiredGroups(
[codex:488289] Storage storage self,
[codex:488289] uint256 selectedIndex
[codex:488289] ) internal view returns(uint256) {
[codex:488289] return self.expiredGroupOffset.add(selectedIndex);
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Evaluates the shift of selected group index based on the number of
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing reentrancy concerns and withdrawal logic**
[codex:488289] exec
[codex:488289] /bin/bash -lc "rg -n \"initialize|initializer|init\\(\" contracts/solidity -S" in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/utils/BytesLib.sol:58: // Initialize a copy counter to the start of the _preBytes data,
[codex:488289] contracts/solidity/contracts/GasPriceOracle.sol:57: /// @notice Initialize the gas price update. Change is finalized after
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:258: if (!_isInitialized(operatorParams)) {
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:259: // If the stake is not yet initialized, we add tokens immediately
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:265: // If the stake is initialized, we do NOT add tokens immediately.
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:299: !_isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:300: "Initialized stake"
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:415: _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:494: _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:542: _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:600: // - have the stake initialized
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:607: _isInitialized(operatorParams) &&
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:639: _isInitialized(operatorParams) &&
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:669: /// @notice Is the operator with the given params initialized
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:670: function _isInitialized(uint256 _operatorParams)
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:31: /// @notice Performs top-up in one step when stake is not yet initialized by
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:34: /// @dev This function should be called only for not yet initialized stake.
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:50: // Stake is not yet initialized so we don't need to check if the
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:76: /// initialized stake.
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:90: // Stake is initialized, the operator is still active so we need
[codex:488289]
[codex:488289] thinking
[codex:488289] **Examining authorization patterns**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/Authorizations.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289] ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
[codex:488289]
[codex:488289] Trust math, not hardware.
[codex:488289] */
[codex:488289]
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "./KeepRegistry.sol";
[codex:488289]
[codex:488289] /// @title AuthorityDelegator
[codex:488289] /// @notice An operator contract can delegate authority to other operator
[codex:488289]
[codex:488289] thinking
[codex:488289] **Investigating potential access control issue**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "__isRecognized" contracts/solidity -S' in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/Authorizations.sol:26:/// The staking contract calls `delegator.__isRecognized(recipient)`
[codex:488289] contracts/solidity/contracts/Authorizations.sol:36: function __isRecognized(address delegatedAuthorityRecipient) external returns (bool);
[codex:488289] contracts/solidity/contracts/Authorizations.sol:124: AuthorityDelegator(delegatedAuthoritySource).__isRecognized(msg.sender),
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential reentrancy and reward duplication issues**
[codex:488289]
[codex:488289] I'm digging into withdrawal logic that uses low-level calls allowing external contract code execution before state changes, which might enable reentrancy and repeated withdrawals. Also, I'm checking group formation to see if duplicated members could lead to double rewards—a possible profit vector. This involves tracing calls through TokenStakingEscrow and KeepRandomBeaconOperator contracts.
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "createGroup|registerGroup|groupMembers" contracts/solidity/contracts/libraries/operator/Groups.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 47: mapping (bytes => address[]) groupMembers;
[codex:488289] 90: self.groupMembers[groupPubKey] = members;
[codex:488289] 98: self.groupMembers[groupPubKey][memberArrayPosition] = self.groupMembers[groupPubKey][self.groupMembers[groupPubKey].length - 1];
[codex:488289] 99: self.groupMembers[groupPubKey].length--;
[codex:488289] 136: return self.groupMembers[groupPubKey][memberIndex];
[codex:488289] 336: for (uint i = 0; i < self.groupMembers[groupPublicKey].length; i++) {
[codex:488289] 337: if (operator == self.groupMembers[groupPublicKey][i]) {
[codex:488289] 349: return self.groupMembers[groupPubKey];
[codex:488289] 358: return self.groupMembers[groupPubKey];
[codex:488289] 396: self.stakingContract.seize(minimumStake, 100, msg.sender, self.groupMembers[groupPubKey]);
[codex:488289]
[codex:488289] thinking
[codex:488289] **Opening Groups.sol top**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/operator/Groups.sol" in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289] import "../../utils/PercentUtils.sol";
[codex:488289] import "../../cryptography/AltBn128.sol";
[codex:488289] import "../../cryptography/BLS.sol";
[codex:488289] import "../../TokenStaking.sol";
[codex:488289]
[codex:488289]
[codex:488289] library Groups {
[codex:488289] using SafeMath for uint256;
[codex:488289] using PercentUtils for uint256;
[codex:488289] using BytesLib for bytes;
[codex:488289]
[codex:488289] // The index of a group is flagged with the most significant bit set,
[codex:488289] // to distinguish the group `0` from null.
[codex:488289] // The flag is toggled with bitwise XOR (`^`)
[codex:488289] // which keeps all other bits intact but flips the flag bit.
[codex:488289] // The flag should be set before writing to `groupIndices`,
[codex:488289] // and unset after reading from `groupIndices`
[codex:488289]
[codex:488289] thinking
[codex:488289] **Checking group selection method**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "group selection|groupSelection|selectGroup|selectGroup" contracts/solidity/contracts/KeepRandomBeaconOperator.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 69: GroupSelection.Storage groupSelection;
[codex:488289] 114: /// @dev Gas required to submit DKG result. Excludes initiation of group selection.
[codex:488289] 117: /// @dev Gas required to trigger DKG (starting group selection).
[codex:488289] 118: uint256 public groupSelectionGasEstimate = 200000;
[codex:488289] 128: /// @dev Seed value used for the genesis group selection.
[codex:488289] 132: /// @dev Service contract that triggered current group selection.
[codex:488289] 133: ServiceContract internal groupSelectionStarterContract;
[codex:488289] 145: /// @notice Triggers group selection if there are no active groups.
[codex:488289] 154: groupSelection.finish();
[codex:488289] 155: // Set latest added service contract as a group selection starter to receive any DKG fee surplus.
[codex:488289] 156: groupSelectionStarterContract = ServiceContract(serviceContracts[serviceContracts.length.sub(1)]);
[codex:488289] 184: // There are 78 blocks to submit group selection tickets. To minimize
[codex:488289] 206: groupSelection.ticketSubmissionTimeout = 6 * 11 + 12;
[codex:488289] 208: groupSelection.groupSize = groupSize;
[codex:488289] 237: uint256 groupSelectionStartFee = groupSelectionGasEstimate.mul(gasPriceCeiling);
[codex:488289] 239: groupSelectionStarterContract = ServiceContract(msg.sender);
[codex:488289] 240: startGroupSelection(_newEntry, msg.value.sub(groupSelectionStartFee));
[codex:488289] 242: // reimbursing a submitter that triggered group selection
[codex:488289] 243: (bool success, ) = stakingContract.beneficiaryOf(submitter).call.value(groupSelectionStartFee)("");
[codex:488289] 255: // If previous group selection failed and there is reimbursement left
[codex:488289]
[codex:488289] thinking
[codex:488289] **Searching for GroupSelection library**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "library GroupSelection|GroupSelection" contracts/solidity/contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 8ms:
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:25:import "./libraries/operator/GroupSelection.sol";
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:47: using GroupSelection for GroupSelection.Storage;
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:59: event GroupSelectionStarted(uint256 newEntry);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:69: GroupSelection.Storage groupSelection;
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:157: startGroupSelection(_genesisGroupSeed, msg.value);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:240: startGroupSelection(_newEntry, msg.value.sub(groupSelectionStartFee));
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:247: function startGroupSelection(uint256 _newEntry, uint256 _payment) internal {
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:253: require(isGroupSelectionPossible(), "Group selection in progress");
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:265: emit GroupSelectionStarted(_newEntry);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:272: function isGroupSelectionPossible() public view returns (bool) {
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:26:library GroupSelection {
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:5:import "./GroupSelection.sol";
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:10: using GroupSelection for GroupSelection.Storage;
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/libraries/operator/GroupSelection.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289]
[codex:488289] /// @title Group Selection
[codex:488289] /// @notice The group selection protocol is an interactive method of selecting
[codex:488289] /// candidate group from the set of all stakers given a pseudorandom seed value.
[codex:488289] ///
[codex:488289] /// The protocol produces a representative result, where each staker's profit is
[codex:488289] /// proportional to the number of tokens they have staked. Produced candidate
[codex:488289] /// groups are of constant size.
[codex:488289] ///
[codex:488289] /// Group selection protocol accepts seed as an input - a pseudorandom value
[codex:488289] /// used to construct candidate tickets. Each candidate group member can
[codex:488289] /// submit their tickets. The maximum number of tickets one can submit depends
[codex:488289] /// on their staking weight - relation of the minimum stake to the candidate's
[codex:488289] /// stake.
[codex:488289] ///
[codex:488289] /// There is a certain timeout, expressed in blocks, when tickets can be
[codex:488289]
[codex:488289] thinking
[codex:488289] **Reviewing candidate map usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '220,520p' contracts/solidity/contracts/libraries/operator/GroupSelection.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] uint256[] memory ordered = getTicketValueOrderedIndices(
[codex:488289] self,
[codex:488289] previousTicketIndex
[codex:488289] );
[codex:488289]
[codex:488289] // any ticket goes when the tickets array size is lower than the group size
[codex:488289] if (self.tickets.length < self.groupSize) {
[codex:488289] // no tickets
[codex:488289] if (self.tickets.length == 0) {
[codex:488289] self.tickets.push(newTicketValue);
[codex:488289] // higher than the current highest
[codex:488289] } else if (newTicketValue > self.tickets[self.tail]) {
[codex:488289] self.tickets.push(newTicketValue);
[codex:488289] uint256 oldTail = self.tail;
[codex:488289] self.tail = self.tickets.length-1;
[codex:488289] previousTicketIndex[self.tail] = oldTail;
[codex:488289] // lower than the current lowest
[codex:488289] } else if (newTicketValue < self.tickets[ordered[0]]) {
[codex:488289] self.tickets.push(newTicketValue);
[codex:488289] // last element points to itself
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential duplicates in group selection**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "duplicate|unique" contracts/solidity/contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:294: /// has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:34:/// can deposit. This contract works with an assumption that operator is unique
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:388: // This contract works with an assumption that operator is unique.
[codex:488289] contracts/solidity/contracts/libraries/staking/LockUtils.sol:9: /// @notice The LockSet is like an array of unique `uint256`s,
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:33: /// block. Every signature supporting the result has to be from a unique
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:44: /// signature. Indices have to be unique.
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:96: require(!usedMemberIndices[memberIndex - 1], "Duplicate member index");
[codex:488289] contracts/solidity/contracts/libraries/operator/Groups.sol:39: // Duplicated constant from operator contract to avoid extra call.
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:113: /// has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:152: /// has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:168: revert("Duplicate ticket");
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential duplicate stakers in GroupSelection**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "setGroupMembers" contracts/solidity/contracts/KeepRandomBeaconOperator.sol' in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] 349: groups.setGroupMembers(groupPubKey, members, misbehaved);
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '300,380p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] groupSelection.submitTicket(ticket, stakingWeight);
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Gets the timeout in blocks after which group candidate ticket
[codex:488289] /// submission is finished.
[codex:488289] function ticketSubmissionTimeout() public view returns (uint256) {
[codex:488289] return groupSelection.ticketSubmissionTimeout;
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Gets the submitted group candidate tickets so far.
[codex:488289] function submittedTickets() public view returns (uint64[] memory) {
[codex:488289] return groupSelection.tickets;
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Gets selected participants in ascending order of their tickets.
[codex:488289] function selectedParticipants() public view returns (address[] memory) {
[codex:488289] return groupSelection.selectedParticipants();
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Submits result of DKG protocol. It is on-chain part of phase 14 of
[codex:488289]
[codex:488289] thinking
[codex:488289] **Inspecting duplicate handling in DKGResultVerification**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/cryptography/ECDSA.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289] import "./GroupSelection.sol";
[codex:488289]
[codex:488289] library DKGResultVerification {
[codex:488289] using BytesLib for bytes;
[codex:488289] using ECDSA for bytes32;
[codex:488289] using GroupSelection for GroupSelection.Storage;
[codex:488289]
[codex:488289] struct Storage {
[codex:488289] // Time in blocks after which DKG result is complete and ready to be
[codex:488289] // published by clients.
[codex:488289] uint256 timeDKG;
[codex:488289]
[codex:488289] // Time in blocks after which the next group member is eligible
[codex:488289] // to submit DKG result.
[codex:488289] uint256 resultPublicationBlockStep;
[codex:488289]
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing duplicate member implications**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/staking/GrantStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "../../TokenGrant.sol";
[codex:488289] import "../../TokenStakingEscrow.sol";
[codex:488289] import "../..//utils/BytesLib.sol";
[codex:488289] import "../RolesLookup.sol";
[codex:488289]
[codex:488289] /// @notice TokenStaking contract library allowing to capture the details of
[codex:488289] /// delegated grants and offering functions allowing to check grantee
[codex:488289] /// authentication for stake delegation management.
[codex:488289] library GrantStaking {
[codex:488289] using BytesLib for bytes;
[codex:488289] using RolesLookup for address payable;
[codex:488289]
[codex:488289] /// @dev Grant ID is flagged with the most significant bit set, to
[codex:488289] /// distinguish the grant ID `0` from default (null) value. The flag is
[codex:488289] /// toggled with bitwise XOR (`^`) which keeps all other bits intact but
[codex:488289] /// flips the flag bit. The flag should be set before writing to
[codex:488289] /// `operatorToGrant`, and unset after reading from `operatorToGrant`
[codex:488289] /// before using the value.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Checking RolesLookup usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/RolesLookup.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "../utils/AddressArrayUtils.sol";
[codex:488289] import "../StakeDelegatable.sol";
[codex:488289] import "../TokenGrant.sol";
[codex:488289] import "../ManagedGrant.sol";
[codex:488289]
[codex:488289] /// @title Roles Lookup
[codex:488289] /// @notice Library facilitating lookup of roles in stake delegation setup.
[codex:488289] library RolesLookup {
[codex:488289] using AddressArrayUtils for address[];
[codex:488289]
[codex:488289] /// @notice Returns true if the tokenOwner delegated tokens to operator
[codex:488289] /// using the provided stakeDelegatable contract. Othwerwise, returns false.
[codex:488289] /// This function works only for the case when tokenOwner own those tokens
[codex:488289] /// and those are not tokens from a grant.
[codex:488289] function isTokenOwnerForOperator(
[codex:488289] address tokenOwner,
[codex:488289] address operator,
[codex:488289] StakeDelegatable stakeDelegatable
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential underflow and reentrancy risks**
[codex:488289]
[codex:488289] I'm carefully tracing how TokenGrantStake's amount variable might underflow due to unchecked subtraction when extra tokens are sent, considering how only authorized calls trigger returnTokens and whether this leads to exploitable states. Also, I'm checking for possible reentrancy vulnerabilities in token transfers and reimbursement calls, especially involving KeepToken and beneficiary payments.
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '200,460p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] // the candidate not yet submitted to determine if continuing with
[codex:488289] // ticket submission still makes sense.
[codex:488289] //
[codex:488289] // After 66 blocks, there is a 12 blocks mining lag allowing all
[codex:488289] // outstanding ticket submissions to have a higher chance of being
[codex:488289] // mined before the deadline.
[codex:488289] groupSelection.ticketSubmissionTimeout = 6 * 11 + 12;
[codex:488289]
[codex:488289] groupSelection.groupSize = groupSize;
[codex:488289]
[codex:488289] dkgResultVerification.timeDKG = 5*(1+5) + 2*(1+10) + 20;
[codex:488289] dkgResultVerification.resultPublicationBlockStep = resultPublicationBlockStep;
[codex:488289] dkgResultVerification.groupSize = groupSize;
[codex:488289] dkgResultVerification.signatureThreshold = groupThreshold + (groupSize - groupThreshold) / 2;
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Adds service contract
[codex:488289] /// @param serviceContract Address of the service contract.
[codex:488289] function addServiceContract(address serviceContract) public {
[codex:488289] require(
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing potential reentrancy and withdrawal risks**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/TokenSender.sol" in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] /// @dev Interface of sender contract for approveAndCall pattern.
[codex:488289] interface TokenSender {
[codex:488289] function approveAndCall(address _spender, uint256 _value, bytes calldata _extraData) external;
[codex:488289] }
[codex:488289]
[codex:488289] thinking
[codex:488289] **Investigating TokenSender usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/KeepToken.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";
[codex:488289]
[codex:488289]
[codex:488289] /// @dev Interface of recipient contract for approveAndCall pattern.
[codex:488289] interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external; }
[codex:488289]
[codex:488289] /// @title KEEP Token
[codex:488289] /// @dev Standard ERC20Burnable token
[codex:488289] contract KeepToken is ERC20Burnable, ERC20Detailed {
[codex:488289] string public constant NAME = "KEEP Token";
[codex:488289] string public constant SYMBOL = "KEEP";
[codex:488289] uint8 public constant DECIMALS = 18; // The number of digits after the decimal place when displaying token values on-screen.
[codex:488289] uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.
[codex:488289]
[codex:488289] /// @dev Gives msg.sender all of existing tokens.
[codex:488289] constructor() public ERC20Detailed(NAME, SYMBOL, DECIMALS) {
[codex:488289] _mint(msg.sender, INITIAL_SUPPLY);
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing unauthorized staking risks**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "getGrantStakeDetails" -n contracts/solidity/contracts/TokenGrant.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 190: function getGrantStakeDetails(address operator) public view returns (uint256 grantId, uint256 amount, address stakingContract) {
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '160,220p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] address policy
[codex:488289] ) {
[codex:488289] return (
[codex:488289] grants[_id].grantManager,
[codex:488289] grants[_id].duration,
[codex:488289] grants[_id].start,
[codex:488289] grants[_id].cliff,
[codex:488289] address(grants[_id].stakingPolicy)
[codex:488289] );
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Gets grant ids of the specified address.
[codex:488289] /// @param _granteeOrGrantManager The address to query.
[codex:488289] /// @return An uint256 array of grant IDs.
[codex:488289] function getGrants(address _granteeOrGrantManager) public view returns (uint256[] memory) {
[codex:488289] return grantIndices[_granteeOrGrantManager];
[codex:488289] }
[codex:488289]
[codex:488289] /// @notice Gets operator addresses of the specified grantee address.
[codex:488289] /// @param grantee The grantee address.
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing security in receiveApproval method**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '220,360p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] _extraData,
[codex:488289] (address, address, uint256, uint256, uint256, bool, address)
[codex:488289] );
[codex:488289]
[codex:488289] require(_grantee != address(0), "Grantee address can't be zero.");
[codex:488289] require(
[codex:488289] _cliffDuration <= _duration,
[codex:488289] "Unlocking cliff duration must be less or equal total unlocking duration."
[codex:488289] );
[codex:488289]
[codex:488289] require(_stakingPolicy != address(0), "Staking policy can't be zero.");
[codex:488289]
[codex:488289] uint256 id = numGrants++;
[codex:488289] grants[id] = Grant(
[codex:488289] _grantManager,
[codex:488289] _grantee,
[codex:488289] 0, 0, 0,
[codex:488289] _revocable,
[codex:488289] _amount,
[codex:488289] _duration,
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing receiveApproval vulnerability**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/grant/UnlockingSchedule.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289]
[codex:488289] library UnlockingSchedule {
[codex:488289] using SafeMath for uint256;
[codex:488289]
[codex:488289] function getUnlockedAmount(
[codex:488289] uint256 _now,
[codex:488289] uint256 grantedAmount,
[codex:488289] uint256 duration,
[codex:488289] uint256 start,
[codex:488289] uint256 cliff
[codex:488289] ) internal pure returns (uint256) {
[codex:488289] bool cliffNotReached = _now < cliff;
[codex:488289] if (cliffNotReached) { return 0; }
[codex:488289]
[codex:488289] uint256 timeElapsed = _now.sub(start);
[codex:488289]
[codex:488289] bool unlockingPeriodFinished = timeElapsed >= duration;
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing token grant vulnerability**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,120p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289]
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./libraries/grant/UnlockingSchedule.sol";
[codex:488289] import "./utils/BytesLib.sol";
[codex:488289] import "./utils/AddressArrayUtils.sol";
[codex:488289] import "./TokenStaking.sol";
[codex:488289] import "./TokenGrantStake.sol";
[codex:488289] import "./GrantStakingPolicy.sol";
[codex:488289]
[codex:488289]
[codex:488289] /// @title TokenGrant
[codex:488289] /// @notice A token grant contract for a specified standard ERC20Burnable token.
[codex:488289] /// Has additional functionality to stake delegate/undelegate token grants.
[codex:488289] /// Tokens are granted to the grantee via unlocking scheme and can be
[codex:488289] /// withdrawn gradually based on the unlocking schedule cliff and unlocking duration.
[codex:488289] /// Optionally grant can be revoked by the token grant manager.
[codex:488289] contract TokenGrant {
[codex:488289]
[codex:488289] thinking
[codex:488289] **Identifying security risks in token grant logic**
[codex:488289] exec
[codex:488289] /bin/bash -lc "rg -n \"receiveApproval\\(\" contracts/solidity/contracts -S" in /tmp/codex-multi-vpee2ghi succeeded in 10ms:
[codex:488289] contracts/solidity/contracts/KeepToken.sol:8:interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external; }
[codex:488289] contracts/solidity/contracts/KeepToken.sol:32: spender.receiveApproval(msg.sender, _value, address(this), _extraData);
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:148: function receiveApproval(
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:108: function receiveApproval(
[codex:488289] contracts/solidity/contracts/TokenGrant.sol:210: function receiveApproval(address _from, uint256 _amount, address _token, bytes memory _extraData) public {
[codex:488289]
[codex:488289] thinking
[codex:488289] **Analyzing security risk in TokenGrant contract**
[codex:488289] exec
[codex:488289] /bin/bash -lc "nl -ba contracts/solidity/contracts/TokenGrant.sol | sed -n '200,280p'" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 200 /// @param _token Token contract address.
[codex:488289] 201 /// @param _extraData This byte array must have the following values ABI encoded:
[codex:488289] 202 /// grantManager (address) Address of the grant manager.
[codex:488289] 203 /// grantee (address) Address of the grantee.
[codex:488289] 204 /// duration (uint256) Duration in seconds of the unlocking period.
[codex:488289] 205 /// start (uint256) Timestamp at which unlocking will start.
[codex:488289] 206 /// cliffDuration (uint256) Duration in seconds of the cliff;
[codex:488289] 207 /// no tokens will be unlocked until the time `start + cliff`.
[codex:488289] 208 /// revocable (bool) Whether the token grant is revocable or not (1 or 0).
[codex:488289] 209 /// stakingPolicy (address) Address of the staking policy for the grant.
[codex:488289] 210 function receiveApproval(address _from, uint256 _amount, address _token, bytes memory _extraData) public {
[codex:488289] 211 require(ERC20Burnable(_token) == token, "Token contract must be the same one linked to this contract.");
[codex:488289] 212 require(_amount <= token.balanceOf(_from), "Sender must have enough amount.");
[codex:488289] 213 (address _grantManager,
[codex:488289] 214 address _grantee,
[codex:488289] 215 uint256 _duration,
[codex:488289] 216 uint256 _start,
[codex:488289] 217 uint256 _cliffDuration,
[codex:488289] 218 bool _revocable,
[codex:488289] 219 address _stakingPolicy) = abi.decode(
[codex:488289]
[codex:488289] thinking
[codex:488289] **Preparing detailed vulnerability report**
[codex:488289] codex
[codex:488289] {"no_findings":false,"summary":"One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.","findings":[{"severity":"critical","category":"access_control","title":"Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves","exploit_scenario":"1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim’s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant.","recommendation":"Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.","evidence":"`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder’s allowance and assign themselves as grantee.","locations":["contracts/solidity/contracts/TokenGrant.sol:210","contracts/solidity/contracts/TokenGrant.sol:252"]}]}
[codex:488289] tokens used
[codex:488289] 85,976
[codex:488289] {"no_findings":false,"summary":"One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.","findings":[{"severity":"critical","category":"access_control","title":"Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves","exploit_scenario":"1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim’s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant.","recommendation":"Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.","evidence":"`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder’s allowance and assign themselves as grantee.","locations":["contracts/solidity/contracts/TokenGrant.sol:210","contracts/solidity/contracts/TokenGrant.sol:252"]}]}
{
"codex": {
"ran_at": "2026-01-04T06:52:56.375781+00:00",
"returncode": 0
},
"summary": "One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.",
"raw_final": {
"summary": "One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.",
"findings": [
{
"title": "Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves",
"category": "access_control",
"evidence": "`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder\u2019s allowance and assign themselves as grantee.",
"severity": "critical",
"locations": [
"contracts/solidity/contracts/TokenGrant.sol:210",
"contracts/solidity/contracts/TokenGrant.sol:252"
],
"recommendation": "Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.",
"exploit_scenario": "1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim\u2019s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant."
}
],
"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 0x0266 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x7d7d7dd9 00000019: GT 0000001a: PUSH2 0x0144 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc300d058 00000024: GT 00000025: PUSH2 0x00b6 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd12f5e69 0000002f: GT 00000030: PUSH2 0x007a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd12f5e69 0000003a: EQ 0000003b: PUSH2 0x0c78 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe1f4d632 00000045: EQ 00000046: PUSH2 0x0d29 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xe581ff74 00000050: EQ 00000051: PUSH2 0x0d3e 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xeb9488d3 0000005b: EQ 0000005c: PUSH2 0x0df6 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xef7c8f9c 00000066: EQ 00000067: PUSH2 0x0e0b 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0xfdd18b13 00000071: EQ 00000072: PUSH2 0x0e35 00000075: JUMPI 00000076: PUSH2 0x0266 00000079: JUMP 0000007a: JUMPDEST 0000007b: DUP1 0000007c: PUSH4 0xc300d058 00000081: EQ 00000082: PUSH2 0x0bf8 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xc4438946 0000008c: EQ 0000008d: PUSH2 0x0c0d 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xc45751cd 00000097: EQ 00000098: PUSH2 0x0c22 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xc96e71fb 000000a2: EQ 000000a3: PUSH2 0x0c37 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xc98622fb 000000ad: EQ 000000ae: PUSH2 0x0c63 000000b1: JUMPI 000000b2: PUSH2 0x0266 000000b5: JUMP 000000b6: JUMPDEST 000000b7: DUP1 000000b8: PUSH4 0x9dabee44 000000bd: GT 000000be: PUSH2 0x0108 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x9dabee44 000000c8: EQ 000000c9: PUSH2 0x0a4f 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xa7f0b3de 000000d3: EQ 000000d4: PUSH2 0x0b00 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0xac374f4b 000000de: EQ 000000df: PUSH2 0x0b08 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xb1c77c8f 000000e9: EQ 000000ea: PUSH2 0x0bb9 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0xb99f0c43 000000f4: EQ 000000f5: PUSH2 0x0bce 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xbf952496 000000ff: EQ 00000100: PUSH2 0x0be3 00000103: JUMPI 00000104: PUSH2 0x0266 00000107: JUMP 00000108: JUMPDEST 00000109: DUP1 0000010a: PUSH4 0x7d7d7dd9 0000010f: EQ 00000110: PUSH2 0x0926 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x885c0204 0000011a: EQ 0000011b: PUSH2 0x093b 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x8a3a3da8 00000125: EQ 00000126: PUSH2 0x0965 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x8e9e56a5 00000130: EQ 00000131: PUSH2 0x098f 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x9b3d270a 0000013b: EQ 0000013c: PUSH2 0x09a4 0000013f: JUMPI 00000140: PUSH2 0x0266 00000143: JUMP 00000144: JUMPDEST 00000145: DUP1 00000146: PUSH4 0x5c1c0710 0000014b: GT 0000014c: PUSH2 0x01dd 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x6dcc64f8 00000156: GT 00000157: PUSH2 0x01a1 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x6dcc64f8 00000161: EQ 00000162: PUSH2 0x065b 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x6e5636e4 0000016c: EQ 0000016d: PUSH2 0x0670 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x7031b7ff 00000177: EQ 00000178: PUSH2 0x0685 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0x73f1daab 00000182: EQ 00000183: PUSH2 0x069a 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x7760c6c7 0000018d: EQ 0000018e: PUSH2 0x08de 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x79f9fb7e 00000198: EQ 00000199: PUSH2 0x0911 0000019c: JUMPI 0000019d: PUSH2 0x0266 000001a0: JUMP 000001a1: JUMPDEST 000001a2: DUP1 000001a3: PUSH4 0x5c1c0710 000001a8: EQ 000001a9: PUSH2 0x054a 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x5ec60d61 000001b3: EQ 000001b4: PUSH2 0x057d 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x618c2656 000001be: EQ 000001bf: PUSH2 0x05a7 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x6262d54e 000001c9: EQ 000001ca: PUSH2 0x0631 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x63b635ea 000001d4: EQ 000001d5: PUSH2 0x0646 000001d8: JUMPI 000001d9: PUSH2 0x0266 000001dc: JUMP 000001dd: JUMPDEST 000001de: DUP1 000001df: PUSH4 0x24f17313 000001e4: GT 000001e5: PUSH2 0x022f 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0x24f17313 000001ef: EQ 000001f0: PUSH2 0x03e8 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x2d6f8f31 000001fa: EQ 000001fb: PUSH2 0x03fd 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0x36c85717 00000205: EQ 00000206: PUSH2 0x04ae 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x376f7a11 00000210: EQ 00000211: PUSH2 0x04c3 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0x3926c28e 0000021b: EQ 0000021c: PUSH2 0x04fc 0000021f: JUMPI 00000220: DUP1 00000221: PUSH4 0x517471a9 00000226: EQ 00000227: PUSH2 0x0535 0000022a: JUMPI 0000022b: PUSH2 0x0266 0000022e: JUMP 0000022f: JUMPDEST 00000230: DUP1 00000231: PUSH3 0x3bf87e 00000235: EQ 00000236: PUSH2 0x026b 00000239: JUMPI 0000023a: DUP1 0000023b: PUSH4 0x0b19991f 00000240: EQ 00000241: PUSH2 0x0292 00000244: JUMPI 00000245: DUP1 00000246: PUSH4 0x1c524ac2 0000024b: EQ 0000024c: PUSH2 0x02f7 0000024f: JUMPI 00000250: DUP1 00000251: PUSH4 0x1ed74070 00000256: EQ 00000257: PUSH2 0x03bc 0000025a: JUMPI 0000025b: DUP1 0000025c: PUSH4 0x21a8f86c 00000261: EQ 00000262: PUSH2 0x03d3 00000265: JUMPI 00000266: JUMPDEST 00000267: PUSH1 0x00 00000269: DUP1 0000026a: REVERT 0000026b: JUMPDEST 0000026c: CALLVALUE 0000026d: DUP1 0000026e: ISZERO 0000026f: PUSH2 0x0277 00000272: JUMPI 00000273: PUSH1 0x00 00000275: DUP1 00000276: REVERT 00000277: JUMPDEST 00000278: POP 00000279: PUSH2 0x0280 0000027c: PUSH2 0x0e4a 0000027f: JUMP 00000280: JUMPDEST 00000281: PUSH1 0x40 00000283: DUP1 00000284: MLOAD 00000285: SWAP2 00000286: DUP3 00000287: MSTORE 00000288: MLOAD 00000289: SWAP1 0000028a: DUP2 0000028b: SWAP1 0000028c: SUB 0000028d: PUSH1 0x20 0000028f: ADD 00000290: SWAP1 00000291: RETURN 00000292: JUMPDEST 00000293: CALLVALUE 00000294: DUP1 00000295: ISZERO 00000296: PUSH2 0x029e 00000299: JUMPI 0000029a: PUSH1 0x00 0000029c: DUP1 0000029d: REVERT 0000029e: JUMPDEST 0000029f: POP 000002a0: PUSH2 0x02a7 000002a3: PUSH2 0x0e50 000002a6: JUMP 000002a7: JUMPDEST 000002a8: PUSH1 0x40 000002aa: DUP1 000002ab: MLOAD 000002ac: PUSH1 0x20 000002ae: DUP1 000002af: DUP3 000002b0: MSTORE 000002b1: DUP4 000002b2: MLOAD 000002b3: DUP2 000002b4: DUP4 000002b5: ADD 000002b6: MSTORE 000002b7: DUP4 000002b8: MLOAD 000002b9: SWAP2 000002ba: SWAP3 000002bb: DUP4 000002bc: SWAP3 000002bd: SWAP1 000002be: DUP4 000002bf: ADD 000002c0: SWAP2 000002c1: DUP6 000002c2: DUP2 000002c3: ADD 000002c4: SWAP2 000002c5: MUL 000002c6: DUP1 000002c7: DUP4 000002c8: DUP4 000002c9: PUSH1 0x00 000002cb: JUMPDEST 000002cc: DUP4 000002cd: DUP2 000002ce: LT 000002cf: ISZERO 000002d0: PUSH2 0x02e3 000002d3: JUMPI 000002d4: DUP2 000002d5: DUP2 000002d6: ADD 000002d7: MLOAD 000002d8: DUP4 000002d9: DUP3 000002da: ADD 000002db: MSTORE 000002dc: PUSH1 0x20 000002de: ADD 000002df: PUSH2 0x02cb 000002e2: JUMP 000002e3: JUMPDEST 000002e4: POP 000002e5: POP 000002e6: POP 000002e7: POP 000002e8: SWAP1 000002e9: POP 000002ea: ADD 000002eb: SWAP3 000002ec: POP 000002ed: POP 000002ee: POP 000002ef: PUSH1 0x40 000002f1: MLOAD 000002f2: DUP1 000002f3: SWAP2 000002f4: SUB 000002f5: SWAP1 000002f6: RETURN 000002f7: JUMPDEST 000002f8: CALLVALUE 000002f9: DUP1 000002fa: ISZERO 000002fb: PUSH2 0x0303 000002fe: JUMPI 000002ff: PUSH1 0x00 00000301: DUP1 00000302: REVERT 00000303: JUMPDEST 00000304: POP 00000305: PUSH2 0x03a8 00000308: PUSH1 0x04 0000030a: DUP1 0000030b: CALLDATASIZE 0000030c: SUB 0000030d: PUSH1 0x20 0000030f: DUP2 00000310: LT 00000311: ISZERO 00000312: PUSH2 0x031a 00000315: JUMPI 00000316: PUSH1 0x00 00000318: DUP1 00000319: REVERT 0000031a: JUMPDEST 0000031b: DUP2 0000031c: ADD 0000031d: SWAP1 0000031e: PUSH1 0x20 00000320: DUP2 00000321: ADD 00000322: DUP2 00000323: CALLDATALOAD 00000324: PUSH1 0x01 00000326: PUSH1 0x20 00000328: SHL 00000329: DUP2 0000032a: GT 0000032b: ISZERO 0000032c: PUSH2 0x0334 0000032f: JUMPI 00000330: PUSH1 0x00 00000332: DUP1 00000333: REVERT 00000334: JUMPDEST 00000335: DUP3 00000336: ADD 00000337: DUP4 00000338: PUSH1 0x20 0000033a: DUP3 0000033b: ADD 0000033c: GT 0000033d: ISZERO 0000033e: PUSH2 0x0346 00000341: JUMPI 00000342: PUSH1 0x00 00000344: DUP1 00000345: REVERT 00000346: JUMPDEST 00000347: DUP1 00000348: CALLDATALOAD 00000349: SWAP1 0000034a: PUSH1 0x20 0000034c: ADD 0000034d: SWAP2 0000034e: DUP5 0000034f: PUSH1 0x01 00000351: DUP4 00000352: MUL 00000353: DUP5 00000354: ADD 00000355: GT 00000356: PUSH1 0x01 00000358: PUSH1 0x20 0000035a: SHL 0000035b: DUP4 0000035c: GT 0000035d: OR 0000035e: ISZERO 0000035f: PUSH2 0x0367 00000362: JUMPI 00000363: PUSH1 0x00 00000365: DUP1 00000366: REVERT 00000367: JUMPDEST 00000368: SWAP2 00000369: SWAP1 0000036a: DUP1 0000036b: DUP1 0000036c: PUSH1 0x1f 0000036e: ADD 0000036f: PUSH1 0x20 00000371: DUP1 00000372: SWAP2 00000373: DIV 00000374: MUL 00000375: PUSH1 0x20 00000377: ADD 00000378: PUSH1 0x40 0000037a: MLOAD 0000037b: SWAP1 0000037c: DUP2 0000037d: ADD 0000037e: PUSH1 0x40 00000380: MSTORE 00000381: DUP1 00000382: SWAP4 00000383: SWAP3 00000384: SWAP2 00000385: SWAP1 00000386: DUP2 00000387: DUP2 00000388: MSTORE 00000389: PUSH1 0x20 0000038b: ADD 0000038c: DUP4 0000038d: DUP4 0000038e: DUP1 0000038f: DUP3 00000390: DUP5 00000391: CALLDATACOPY 00000392: PUSH1 0x00 00000394: SWAP3 00000395: ADD 00000396: SWAP2 00000397: SWAP1 00000398: SWAP2 00000399: MSTORE 0000039a: POP 0000039b: SWAP3 0000039c: SWAP6 0000039d: POP 0000039e: PUSH2 0x0f71 000003a1: SWAP5 000003a2: POP 000003a3: POP 000003a4: POP 000003a5: POP 000003a6: POP 000003a7: JUMP 000003a8: JUMPDEST 000003a9: PUSH1 0x40 000003ab: DUP1 000003ac: MLOAD 000003ad: SWAP2 000003ae: ISZERO 000003af: ISZERO 000003b0: DUP3 000003b1: MSTORE 000003b2: MLOAD 000003b3: SWAP1 000003b4: DUP2 000003b5: SWAP1 000003b6: SUB 000003b7: PUSH1 0x20 000003b9: ADD 000003ba: SWAP1 000003bb: RETURN 000003bc: JUMPDEST 000003bd: CALLVALUE 000003be: DUP1 000003bf: ISZERO 000003c0: PUSH2 0x03c8 000003c3: JUMPI 000003c4: PUSH1 0x00 000003c6: DUP1 000003c7: REVERT 000003c8: JUMPDEST 000003c9: POP 000003ca: PUSH2 0x03d1 000003cd: PUSH2 0x0f8a 000003d0: JUMP 000003d1: JUMPDEST 000003d2: STOP 000003d3: JUMPDEST 000003d4: CALLVALUE 000003d5: DUP1 000003d6: ISZERO 000003d7: PUSH2 0x03df 000003da: JUMPI 000003db: PUSH1 0x00 000003dd: DUP1 000003de: REVERT 000003df: JUMPDEST 000003e0: POP 000003e1: PUSH2 0x03a8 000003e4: PUSH2 0x1152 000003e7: JUMP 000003e8: JUMPDEST 000003e9: CALLVALUE 000003ea: DUP1 000003eb: ISZERO 000003ec: PUSH2 0x03f4 000003ef: JUMPI 000003f0: PUSH1 0x00 000003f2: DUP1 000003f3: REVERT 000003f4: JUMPDEST 000003f5: POP 000003f6: PUSH2 0x0280 000003f9: PUSH2 0x1181 000003fc: JUMP 000003fd: JUMPDEST 000003fe: CALLVALUE 000003ff: DUP1 00000400: ISZERO 00000401: PUSH2 0x0409 00000404: JUMPI 00000405: PUSH1 0x00 00000407: DUP1 00000408: REVERT 00000409: JUMPDEST 0000040a: POP 0000040b: PUSH2 0x03a8 0000040e: PUSH1 0x04 00000410: DUP1 00000411: CALLDATASIZE 00000412: SUB 00000413: PUSH1 0x20 00000415: DUP2 00000416: LT 00000417: ISZERO 00000418: PUSH2 0x0420 0000041b: JUMPI 0000041c: PUSH1 0x00 0000041e: DUP1 0000041f: REVERT 00000420: JUMPDEST 00000421: DUP2 00000422: ADD 00000423: SWAP1 00000424: PUSH1 0x20 00000426: DUP2 00000427: ADD 00000428: DUP2 00000429: CALLDATALOAD 0000042a: PUSH1 0x01 0000042c: PUSH1 0x20 0000042e: SHL 0000042f: DUP2 00000430: GT 00000431: ISZERO 00000432: PUSH2 0x043a 00000435: JUMPI 00000436: PUSH1 0x00 00000438: DUP1 00000439: REVERT 0000043a: JUMPDEST 0000043b: DUP3 0000043c: ADD 0000043d: DUP4 0000043e: PUSH1 0x20 00000440: DUP3 00000441: ADD 00000442: GT 00000443: ISZERO 00000444: PUSH2 0x044c 00000447: JUMPI 00000448: PUSH1 0x00 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: DUP1 0000044e: CALLDATALOAD 0000044f: SWAP1 00000450: PUSH1 0x20 00000452: ADD 00000453: SWAP2 00000454: DUP5 00000455: PUSH1 0x01 00000457: DUP4 00000458: MUL 00000459: DUP5 0000045a: ADD 0000045b: GT 0000045c: PUSH1 0x01 0000045e: PUSH1 0x20 00000460: SHL 00000461: DUP4 00000462: GT 00000463: OR 00000464: ISZERO 00000465: PUSH2 0x046d 00000468: JUMPI 00000469: PUSH1 0x00 0000046b: DUP1 0000046c: REVERT 0000046d: JUMPDEST 0000046e: SWAP2 0000046f: SWAP1 00000470: DUP1 00000471: DUP1 00000472: PUSH1 0x1f 00000474: ADD 00000475: PUSH1 0x20 00000477: DUP1 00000478: SWAP2 00000479: DIV 0000047a: MUL 0000047b: PUSH1 0x20 0000047d: ADD 0000047e: PUSH1 0x40 00000480: MLOAD 00000481: SWAP1 00000482: DUP2 00000483: ADD 00000484: PUSH1 0x40 00000486: MSTORE 00000487: DUP1 00000488: SWAP4 00000489: SWAP3 0000048a: SWAP2 0000048b: SWAP1 0000048c: DUP2 0000048d: DUP2 0000048e: MSTORE 0000048f: PUSH1 0x20 00000491: ADD 00000492: DUP4 00000493: DUP4 00000494: DUP1 00000495: DUP3 00000496: DUP5 00000497: CALLDATACOPY 00000498: PUSH1 0x00 0000049a: SWAP3 0000049b: ADD 0000049c: SWAP2 0000049d: SWAP1 0000049e: SWAP2 0000049f: MSTORE 000004a0: POP 000004a1: SWAP3 000004a2: SWAP6 000004a3: POP 000004a4: PUSH2 0x1187 000004a7: SWAP5 000004a8: POP 000004a9: POP 000004aa: POP 000004ab: POP 000004ac: POP 000004ad: JUMP 000004ae: JUMPDEST 000004af: CALLVALUE 000004b0: DUP1 000004b1: ISZERO 000004b2: PUSH2 0x04ba 000004b5: JUMPI 000004b6: PUSH1 0x00 000004b8: DUP1 000004b9: REVERT 000004ba: JUMPDEST 000004bb: POP 000004bc: PUSH2 0x0280 000004bf: PUSH2 0x1276 000004c2: JUMP 000004c3: JUMPDEST 000004c4: CALLVALUE 000004c5: DUP1 000004c6: ISZERO 000004c7: PUSH2 0x04cf 000004ca: JUMPI 000004cb: PUSH1 0x00 000004cd: DUP1 000004ce: REVERT 000004cf: JUMPDEST 000004d0: POP 000004d1: PUSH2 0x03a8 000004d4: PUSH1 0x04 000004d6: DUP1 000004d7: CALLDATASIZE 000004d8: SUB 000004d9: PUSH1 0x40 000004db: DUP2 000004dc: LT 000004dd: ISZERO 000004de: PUSH2 0x04e6 000004e1: JUMPI 000004e2: PUSH1 0x00 000004e4: DUP1 000004e5: REVERT 000004e6: JUMPDEST 000004e7: POP 000004e8: PUSH1 0x01 000004ea: PUSH1 0x01 000004ec: PUSH1 0xa0 000004ee: SHL 000004ef: SUB 000004f0: DUP2 000004f1: CALLDATALOAD 000004f2: AND 000004f3: SWAP1 000004f4: PUSH1 0x20 000004f6: ADD 000004f7: CALLDATALOAD 000004f8: PUSH2 0x127c 000004fb: JUMP 000004fc: JUMPDEST 000004fd: CALLVALUE 000004fe: DUP1 000004ff: ISZERO 00000500: PUSH2 0x0508 00000503: JUMPI 00000504: PUSH1 0x00 00000506: DUP1 00000507: REVERT 00000508: JUMPDEST 00000509: POP 0000050a: PUSH2 0x03d1 0000050d: PUSH1 0x04 0000050f: DUP1 00000510: CALLDATASIZE 00000511: SUB 00000512: PUSH1 0x40 00000514: DUP2 00000515: LT 00000516: ISZERO 00000517: PUSH2 0x051f 0000051a: JUMPI 0000051b: PUSH1 0x00 0000051d: DUP1 0000051e: REVERT 0000051f: JUMPDEST 00000520: POP 00000521: PUSH1 0x01 00000523: PUSH1 0x01 00000525: PUSH1 0xa0 00000527: SHL 00000528: SUB 00000529: DUP2 0000052a: CALLDATALOAD 0000052b: AND 0000052c: SWAP1 0000052d: PUSH1 0x20 0000052f: ADD 00000530: CALLDATALOAD 00000531: PUSH2 0x131b 00000534: JUMP 00000535: JUMPDEST 00000536: CALLVALUE 00000537: DUP1 00000538: ISZERO 00000539: PUSH2 0x0541 0000053c: JUMPI 0000053d: PUSH1 0x00 0000053f: DUP1 00000540: REVERT 00000541: JUMPDEST 00000542: POP 00000543: PUSH2 0x0280 00000546: PUSH2 0x15bb 00000549: JUMP 0000054a: JUMPDEST 0000054b: CALLVALUE 0000054c: DUP1 0000054d: ISZERO 0000054e: PUSH2 0x0556 00000551: JUMPI 00000552: PUSH1 0x00 00000554: DUP1 00000555: REVERT 00000556: JUMPDEST 00000557: POP 00000558: PUSH2 0x03a8 0000055b: PUSH1 0x04 0000055d: DUP1 0000055e: CALLDATASIZE 0000055f: SUB 00000560: PUSH1 0x20 00000562: DUP2 00000563: LT 00000564: ISZERO 00000565: PUSH2 0x056d 00000568: JUMPI 00000569: PUSH1 0x00 0000056b: DUP1 0000056c: REVERT 0000056d: JUMPDEST 0000056e: POP 0000056f: CALLDATALOAD 00000570: PUSH1 0x01 00000572: PUSH1 0x01 00000574: PUSH1 0xa0 00000576: SHL 00000577: SUB 00000578: AND 00000579: PUSH2 0x15d9 0000057c: JUMP 0000057d: JUMPDEST 0000057e: CALLVALUE 0000057f: DUP1 00000580: ISZERO 00000581: PUSH2 0x0589 00000584: JUMPI 00000585: PUSH1 0x00 00000587: DUP1 00000588: REVERT 00000589: JUMPDEST 0000058a: POP 0000058b: PUSH2 0x0280 0000058e: PUSH1 0x04 00000590: DUP1 00000591: CALLDATASIZE 00000592: SUB 00000593: PUSH1 0x20 00000595: DUP2 00000596: LT 00000597: ISZERO 00000598: PUSH2 0x05a0 0000059b: JUMPI 0000059c: PUSH1 0x00 0000059e: DUP1 0000059f: REVERT 000005a0: JUMPDEST 000005a1: POP 000005a2: CALLDATALOAD 000005a3: PUSH2 0x1643 000005a6: JUMP 000005a7: JUMPDEST 000005a8: CALLVALUE 000005a9: DUP1 000005aa: ISZERO 000005ab: PUSH2 0x05b3 000005ae: JUMPI 000005af: PUSH1 0x00 000005b1: DUP1 000005b2: REVERT 000005b3: JUMPDEST 000005b4: POP 000005b5: PUSH2 0x05bc 000005b8: PUSH2 0x169f 000005bb: JUMP 000005bc: JUMPDEST 000005bd: PUSH1 0x40 000005bf: DUP1 000005c0: MLOAD 000005c1: PUSH1 0x20 000005c3: DUP1 000005c4: DUP3 000005c5: MSTORE 000005c6: DUP4 000005c7: MLOAD 000005c8: DUP2 000005c9: DUP4 000005ca: ADD 000005cb: MSTORE 000005cc: DUP4 000005cd: MLOAD 000005ce: SWAP2 000005cf: SWAP3 000005d0: DUP4 000005d1: SWAP3 000005d2: SWAP1 000005d3: DUP4 000005d4: ADD 000005d5: SWAP2 000005d6: DUP6 000005d7: ADD 000005d8: SWAP1 000005d9: DUP1 000005da: DUP4 000005db: DUP4 000005dc: PUSH1 0x00 000005de: JUMPDEST 000005df: DUP4 000005e0: DUP2 000005e1: LT 000005e2: ISZERO 000005e3: PUSH2 0x05f6 000005e6: JUMPI 000005e7: DUP2 000005e8: DUP2 000005e9: ADD 000005ea: MLOAD 000005eb: DUP4 000005ec: DUP3 000005ed: ADD 000005ee: MSTORE 000005ef: PUSH1 0x20 000005f1: ADD 000005f2: PUSH2 0x05de 000005f5: JUMP 000005f6: JUMPDEST 000005f7: POP 000005f8: POP 000005f9: POP 000005fa: POP 000005fb: SWAP1 000005fc: POP 000005fd: SWAP1 000005fe: DUP2 000005ff: ADD 00000600: SWAP1 00000601: PUSH1 0x1f 00000603: AND 00000604: DUP1 00000605: ISZERO 00000606: PUSH2 0x0623 00000609: JUMPI 0000060a: DUP1 0000060b: DUP3 0000060c: SUB 0000060d: DUP1 0000060e: MLOAD 0000060f: PUSH1 0x01 00000611: DUP4 00000612: PUSH1 0x20 00000614: SUB 00000615: PUSH2 0x0100 00000618: EXP 00000619: SUB 0000061a: NOT 0000061b: AND 0000061c: DUP2 0000061d: MSTORE 0000061e: PUSH1 0x20 00000620: ADD 00000621: SWAP2 00000622: POP 00000623: JUMPDEST 00000624: POP 00000625: SWAP3 00000626: POP 00000627: POP 00000628: POP 00000629: PUSH1 0x40 0000062b: MLOAD 0000062c: DUP1 0000062d: SWAP2 0000062e: SUB 0000062f: SWAP1 00000630: RETURN 00000631: JUMPDEST 00000632: CALLVALUE 00000633: DUP1 00000634: ISZERO 00000635: PUSH2 0x063d 00000638: JUMPI 00000639: PUSH1 0x00 0000063b: DUP1 0000063c: REVERT 0000063d: JUMPDEST 0000063e: POP 0000063f: PUSH2 0x02a7 00000642: PUSH2 0x172d 00000645: JUMP 00000646: JUMPDEST 00000647: CALLVALUE 00000648: DUP1 00000649: ISZERO 0000064a: PUSH2 0x0652 0000064d: JUMPI 0000064e: PUSH1 0x00 00000650: DUP1 00000651: REVERT 00000652: JUMPDEST 00000653: POP 00000654: PUSH2 0x0280 00000657: PUSH2 0x17bc 0000065a: JUMP 0000065b: JUMPDEST 0000065c: CALLVALUE 0000065d: DUP1 0000065e: ISZERO 0000065f: PUSH2 0x0667 00000662: JUMPI 00000663: PUSH1 0x00 00000665: DUP1 00000666: REVERT 00000667: JUMPDEST 00000668: POP 00000669: PUSH2 0x0280 0000066c: PUSH2 0x17c2 0000066f: JUMP 00000670: JUMPDEST 00000671: CALLVALUE 00000672: DUP1 00000673: ISZERO 00000674: PUSH2 0x067c 00000677: JUMPI 00000678: PUSH1 0x00 0000067a: DUP1 0000067b: REVERT 0000067c: JUMPDEST 0000067d: POP 0000067e: PUSH2 0x03a8 00000681: PUSH2 0x17c8 00000684: JUMP 00000685: JUMPDEST 00000686: CALLVALUE 00000687: DUP1 00000688: ISZERO 00000689: PUSH2 0x0691 0000068c: JUMPI 0000068d: PUSH1 0x00 0000068f: DUP1 00000690: REVERT 00000691: JUMPDEST 00000692: POP 00000693: PUSH2 0x0280 00000696: PUSH2 0x17d0 00000699: JUMP 0000069a: JUMPDEST 0000069b: CALLVALUE 0000069c: DUP1 0000069d: ISZERO 0000069e: PUSH2 0x06a6 000006a1: JUMPI 000006a2: PUSH1 0x00 000006a4: DUP1 000006a5: REVERT 000006a6: JUMPDEST 000006a7: POP 000006a8: PUSH2 0x03d1 000006ab: PUSH1 0x04 000006ad: DUP1 000006ae: CALLDATASIZE 000006af: SUB 000006b0: PUSH1 0xa0 000006b2: DUP2 000006b3: LT 000006b4: ISZERO 000006b5: PUSH2 0x06bd 000006b8: JUMPI 000006b9: PUSH1 0x00 000006bb: DUP1 000006bc: REVERT 000006bd: JUMPDEST 000006be: DUP2 000006bf: CALLDATALOAD 000006c0: SWAP2 000006c1: SWAP1 000006c2: DUP2 000006c3: ADD 000006c4: SWAP1 000006c5: PUSH1 0x40 000006c7: DUP2 000006c8: ADD 000006c9: PUSH1 0x20 000006cb: DUP3 000006cc: ADD 000006cd: CALLDATALOAD 000006ce: PUSH1 0x01 000006d0: PUSH1 0x20 000006d2: SHL 000006d3: DUP2 000006d4: GT 000006d5: ISZERO 000006d6: PUSH2 0x06de 000006d9: JUMPI 000006da: PUSH1 0x00 000006dc: DUP1 000006dd: REVERT 000006de: JUMPDEST 000006df: DUP3 000006e0: ADD 000006e1: DUP4 000006e2: PUSH1 0x20 000006e4: DUP3 000006e5: ADD 000006e6: GT 000006e7: ISZERO 000006e8: PUSH2 0x06f0 000006eb: JUMPI 000006ec: PUSH1 0x00 000006ee: DUP1 000006ef: REVERT 000006f0: JUMPDEST 000006f1: DUP1 000006f2: CALLDATALOAD 000006f3: SWAP1 000006f4: PUSH1 0x20 000006f6: ADD 000006f7: SWAP2 000006f8: DUP5 000006f9: PUSH1 0x01 000006fb: DUP4 000006fc: MUL 000006fd: DUP5 000006fe: ADD 000006ff: GT 00000700: PUSH1 0x01 00000702: PUSH1 0x20 00000704: SHL 00000705: DUP4 00000706: GT 00000707: OR 00000708: ISZERO 00000709: PUSH2 0x0711 0000070c: JUMPI 0000070d: PUSH1 0x00 0000070f: DUP1 00000710: REVERT 00000711: JUMPDEST 00000712: SWAP2 00000713: SWAP1 00000714: DUP1 00000715: DUP1 00000716: PUSH1 0x1f 00000718: ADD 00000719: PUSH1 0x20 0000071b: DUP1 0000071c: SWAP2 0000071d: DIV 0000071e: MUL 0000071f: PUSH1 0x20 00000721: ADD 00000722: PUSH1 0x40 00000724: MLOAD 00000725: SWAP1 00000726: DUP2 00000727: ADD 00000728: PUSH1 0x40 0000072a: MSTORE 0000072b: DUP1 0000072c: SWAP4 0000072d: SWAP3 0000072e: SWAP2 0000072f: SWAP1 00000730: DUP2 00000731: DUP2 00000732: MSTORE 00000733: PUSH1 0x20 00000735: ADD 00000736: DUP4 00000737: DUP4 00000738: DUP1 00000739: DUP3 0000073a: DUP5 0000073b: CALLDATACOPY 0000073c: PUSH1 0x00 0000073e: SWAP3 0000073f: ADD 00000740: SWAP2 00000741: SWAP1 00000742: SWAP2 00000743: MSTORE 00000744: POP 00000745: SWAP3 00000746: SWAP6 00000747: SWAP5 00000748: SWAP4 00000749: PUSH1 0x20 0000074b: DUP2 0000074c: ADD 0000074d: SWAP4 0000074e: POP 0000074f: CALLDATALOAD 00000750: SWAP2 00000751: POP 00000752: POP 00000753: PUSH1 0x01 00000755: PUSH1 0x20 00000757: SHL 00000758: DUP2 00000759: GT 0000075a: ISZERO 0000075b: PUSH2 0x0763 0000075e: JUMPI 0000075f: PUSH1 0x00 00000761: DUP1 00000762: REVERT 00000763: JUMPDEST 00000764: DUP3 00000765: ADD 00000766: DUP4 00000767: PUSH1 0x20 00000769: DUP3 0000076a: ADD 0000076b: GT 0000076c: ISZERO 0000076d: PUSH2 0x0775 00000770: JUMPI 00000771: PUSH1 0x00 00000773: DUP1 00000774: REVERT 00000775: JUMPDEST 00000776: DUP1 00000777: CALLDATALOAD 00000778: SWAP1 00000779: PUSH1 0x20 0000077b: ADD 0000077c: SWAP2 0000077d: DUP5 0000077e: PUSH1 0x01 00000780: DUP4 00000781: MUL 00000782: DUP5 00000783: ADD 00000784: GT 00000785: PUSH1 0x01 00000787: PUSH1 0x20 00000789: SHL 0000078a: DUP4 0000078b: GT 0000078c: OR 0000078d: ISZERO 0000078e: PUSH2 0x0796 00000791: JUMPI 00000792: PUSH1 0x00 00000794: DUP1 00000795: REVERT 00000796: JUMPDEST 00000797: SWAP2 00000798: SWAP1 00000799: DUP1 0000079a: DUP1 0000079b: PUSH1 0x1f 0000079d: ADD 0000079e: PUSH1 0x20 000007a0: DUP1 000007a1: SWAP2 000007a2: DIV 000007a3: MUL 000007a4: PUSH1 0x20 000007a6: ADD 000007a7: PUSH1 0x40 000007a9: MLOAD 000007aa: SWAP1 000007ab: DUP2 000007ac: ADD 000007ad: PUSH1 0x40 000007af: MSTORE 000007b0: DUP1 000007b1: SWAP4 000007b2: SWAP3 000007b3: SWAP2 000007b4: SWAP1 000007b5: DUP2 000007b6: DUP2 000007b7: MSTORE 000007b8: PUSH1 0x20 000007ba: ADD 000007bb: DUP4 000007bc: DUP4 000007bd: DUP1 000007be: DUP3 000007bf: DUP5 000007c0: CALLDATACOPY 000007c1: PUSH1 0x00 000007c3: SWAP3 000007c4: ADD 000007c5: SWAP2 000007c6: SWAP1 000007c7: SWAP2 000007c8: MSTORE 000007c9: POP 000007ca: SWAP3 000007cb: SWAP6 000007cc: SWAP5 000007cd: SWAP4 000007ce: PUSH1 0x20 000007d0: DUP2 000007d1: ADD 000007d2: SWAP4 000007d3: POP 000007d4: CALLDATALOAD 000007d5: SWAP2 000007d6: POP 000007d7: POP 000007d8: PUSH1 0x01 000007da: PUSH1 0x20 000007dc: SHL 000007dd: DUP2 000007de: GT 000007df: ISZERO 000007e0: PUSH2 0x07e8 000007e3: JUMPI 000007e4: PUSH1 0x00 000007e6: DUP1 000007e7: REVERT 000007e8: JUMPDEST 000007e9: DUP3 000007ea: ADD 000007eb: DUP4 000007ec: PUSH1 0x20 000007ee: DUP3 000007ef: ADD 000007f0: GT 000007f1: ISZERO 000007f2: PUSH2 0x07fa 000007f5: JUMPI 000007f6: PUSH1 0x00 000007f8: DUP1 000007f9: REVERT 000007fa: JUMPDEST 000007fb: DUP1 000007fc: CALLDATALOAD 000007fd: SWAP1 000007fe: PUSH1 0x20 00000800: ADD 00000801: SWAP2 00000802: DUP5 00000803: PUSH1 0x01 00000805: DUP4 00000806: MUL 00000807: DUP5 00000808: ADD 00000809: GT 0000080a: PUSH1 0x01 0000080c: PUSH1 0x20 0000080e: SHL 0000080f: DUP4 00000810: GT 00000811: OR 00000812: ISZERO 00000813: PUSH2 0x081b 00000816: JUMPI 00000817: PUSH1 0x00 00000819: DUP1 0000081a: REVERT 0000081b: JUMPDEST 0000081c: SWAP2 0000081d: SWAP1 0000081e: DUP1 0000081f: DUP1 00000820: PUSH1 0x1f 00000822: ADD 00000823: PUSH1 0x20 00000825: DUP1 00000826: SWAP2 00000827: DIV 00000828: MUL 00000829: PUSH1 0x20 0000082b: ADD 0000082c: PUSH1 0x40 0000082e: MLOAD 0000082f: SWAP1 00000830: DUP2 00000831: ADD 00000832: PUSH1 0x40 00000834: MSTORE 00000835: DUP1 00000836: SWAP4 00000837: SWAP3 00000838: SWAP2 00000839: SWAP1 0000083a: DUP2 0000083b: DUP2 0000083c: MSTORE 0000083d: PUSH1 0x20 0000083f: ADD 00000840: DUP4 00000841: DUP4 00000842: DUP1 00000843: DUP3 00000844: DUP5 00000845: CALLDATACOPY 00000846: PUSH1 0x00 00000848: SWAP3 00000849: ADD 0000084a: SWAP2 0000084b: SWAP1 0000084c: SWAP2 0000084d: MSTORE 0000084e: POP 0000084f: SWAP3 00000850: SWAP6 00000851: SWAP5 00000852: SWAP4 00000853: PUSH1 0x20 00000855: DUP2 00000856: ADD 00000857: SWAP4 00000858: POP 00000859: CALLDATALOAD 0000085a: SWAP2 0000085b: POP 0000085c: POP 0000085d: PUSH1 0x01 0000085f: PUSH1 0x20 00000861: SHL 00000862: DUP2 00000863: GT 00000864: ISZERO 00000865: PUSH2 0x086d 00000868: JUMPI 00000869: PUSH1 0x00 0000086b: DUP1 0000086c: REVERT 0000086d: JUMPDEST 0000086e: DUP3 0000086f: ADD 00000870: DUP4 00000871: PUSH1 0x20 00000873: DUP3 00000874: ADD 00000875: GT 00000876: ISZERO 00000877: PUSH2 0x087f 0000087a: JUMPI 0000087b: PUSH1 0x00 0000087d: DUP1 0000087e: REVERT 0000087f: JUMPDEST 00000880: DUP1 00000881: CALLDATALOAD 00000882: SWAP1 00000883: PUSH1 0x20 00000885: ADD 00000886: SWAP2 00000887: DUP5 00000888: PUSH1 0x20 0000088a: DUP4 0000088b: MUL 0000088c: DUP5 0000088d: ADD 0000088e: GT 0000088f: PUSH1 0x01 00000891: PUSH1 0x20 00000893: SHL 00000894: DUP4 00000895: GT 00000896: OR 00000897: ISZERO 00000898: PUSH2 0x08a0 0000089b: JUMPI 0000089c: PUSH1 0x00 0000089e: DUP1 0000089f: REVERT 000008a0: JUMPDEST 000008a1: SWAP2 000008a2: SWAP1 000008a3: DUP1 000008a4: DUP1 000008a5: PUSH1 0x20 000008a7: MUL 000008a8: PUSH1 0x20 000008aa: ADD 000008ab: PUSH1 0x40 000008ad: MLOAD 000008ae: SWAP1 000008af: DUP2 000008b0: ADD 000008b1: PUSH1 0x40 000008b3: MSTORE 000008b4: DUP1 000008b5: SWAP4 000008b6: SWAP3 000008b7: SWAP2 000008b8: SWAP1 000008b9: DUP2 000008ba: DUP2 000008bb: MSTORE 000008bc: PUSH1 0x20 000008be: ADD 000008bf: DUP4 000008c0: DUP4 000008c1: PUSH1 0x20 000008c3: MUL 000008c4: DUP1 000008c5: DUP3 000008c6: DUP5 000008c7: CALLDATACOPY 000008c8: PUSH1 0x00 000008ca: SWAP3 000008cb: ADD 000008cc: SWAP2 000008cd: SWAP1 000008ce: SWAP2 000008cf: MSTORE 000008d0: POP 000008d1: SWAP3 000008d2: SWAP6 000008d3: POP 000008d4: PUSH2 0x17d6 000008d7: SWAP5 000008d8: POP 000008d9: POP 000008da: POP 000008db: POP 000008dc: POP 000008dd: JUMP 000008de: JUMPDEST 000008df: CALLVALUE 000008e0: DUP1 000008e1: ISZERO 000008e2: PUSH2 0x08ea 000008e5: JUMPI 000008e6: PUSH1 0x00 000008e8: DUP1 000008e9: REVERT 000008ea: JUMPDEST 000008eb: POP 000008ec: PUSH2 0x03d1 000008ef: PUSH1 0x04 000008f1: DUP1 000008f2: CALLDATASIZE 000008f3: SUB 000008f4: PUSH1 0x20 000008f6: DUP2 000008f7: LT 000008f8: ISZERO 000008f9: PUSH2 0x0901 000008fc: JUMPI 000008fd: PUSH1 0x00 000008ff: DUP1 00000900: REVERT 00000901: JUMPDEST 00000902: POP 00000903: CALLDATALOAD 00000904: PUSH1 0x01 00000906: PUSH1 0x01 00000908: PUSH1 0xa0 0000090a: SHL 0000090b: SUB 0000090c: AND 0000090d: PUSH2 0x1e61 00000910: JUMP 00000911: JUMPDEST 00000912: CALLVALUE 00000913: DUP1 00000914: ISZERO 00000915: PUSH2 0x091d 00000918: JUMPI 00000919: PUSH1 0x00 0000091b: DUP1 0000091c: REVERT 0000091d: JUMPDEST 0000091e: POP 0000091f: PUSH2 0x0280 00000922: PUSH2 0x1f75 00000925: JUMP 00000926: JUMPDEST 00000927: CALLVALUE 00000928: DUP1 00000929: ISZERO 0000092a: PUSH2 0x0932 0000092d: JUMPI 0000092e: PUSH1 0x00 00000930: DUP1 00000931: REVERT 00000932: JUMPDEST 00000933: POP 00000934: PUSH2 0x0280 00000937: PUSH2 0x1f7b 0000093a: JUMP 0000093b: JUMPDEST 0000093c: CALLVALUE 0000093d: DUP1 0000093e: ISZERO 0000093f: PUSH2 0x0947 00000942: JUMPI 00000943: PUSH1 0x00 00000945: DUP1 00000946: REVERT 00000947: JUMPDEST 00000948: POP 00000949: PUSH2 0x03a8 0000094c: PUSH1 0x04 0000094e: DUP1 0000094f: CALLDATASIZE 00000950: SUB 00000951: PUSH1 0x20 00000953: DUP2 00000954: LT 00000955: ISZERO 00000956: PUSH2 0x095e 00000959: JUMPI 0000095a: PUSH1 0x00 0000095c: DUP1 0000095d: REVERT 0000095e: JUMPDEST 0000095f: POP 00000960: CALLDATALOAD 00000961: PUSH2 0x1f81 00000964: JUMP 00000965: JUMPDEST 00000966: CALLVALUE 00000967: DUP1 00000968: ISZERO 00000969: PUSH2 0x0971 0000096c: JUMPI 0000096d: PUSH1 0x00 0000096f: DUP1 00000970: REVERT 00000971: JUMPDEST 00000972: POP 00000973: PUSH2 0x03d1 00000976: PUSH1 0x04 00000978: DUP1 00000979: CALLDATASIZE 0000097a: SUB 0000097b: PUSH1 0x20 0000097d: DUP2 0000097e: LT 0000097f: ISZERO 00000980: PUSH2 0x0988 00000983: JUMPI 00000984: PUSH1 0x00 00000986: DUP1 00000987: REVERT 00000988: JUMPDEST 00000989: POP 0000098a: CALLDATALOAD 0000098b: PUSH2 0x1f94 0000098e: JUMP 0000098f: JUMPDEST 00000990: CALLVALUE 00000991: DUP1 00000992: ISZERO 00000993: PUSH2 0x099b 00000996: JUMPI 00000997: PUSH1 0x00 00000999: DUP1 0000099a: REVERT 0000099b: JUMPDEST 0000099c: POP 0000099d: PUSH2 0x0280 000009a0: PUSH2 0x20a1 000009a3: JUMP 000009a4: JUMPDEST 000009a5: PUSH2 0x03d1 000009a8: PUSH1 0x04 000009aa: DUP1 000009ab: CALLDATASIZE 000009ac: SUB 000009ad: PUSH1 0x40 000009af: DUP2 000009b0: LT 000009b1: ISZERO 000009b2: PUSH2 0x09ba 000009b5: JUMPI 000009b6: PUSH1 0x00 000009b8: DUP1 000009b9: REVERT 000009ba: JUMPDEST 000009bb: DUP2 000009bc: CALLDATALOAD 000009bd: SWAP2 000009be: SWAP1 000009bf: DUP2 000009c0: ADD 000009c1: SWAP1 000009c2: PUSH1 0x40 000009c4: DUP2 000009c5: ADD 000009c6: PUSH1 0x20 000009c8: DUP3 000009c9: ADD 000009ca: CALLDATALOAD 000009cb: PUSH1 0x01 000009cd: PUSH1 0x20 000009cf: SHL 000009d0: DUP2 000009d1: GT 000009d2: ISZERO 000009d3: PUSH2 0x09db 000009d6: JUMPI 000009d7: PUSH1 0x00 000009d9: DUP1 000009da: REVERT 000009db: JUMPDEST 000009dc: DUP3 000009dd: ADD 000009de: DUP4 000009df: PUSH1 0x20 000009e1: DUP3 000009e2: ADD 000009e3: GT 000009e4: ISZERO 000009e5: PUSH2 0x09ed 000009e8: JUMPI 000009e9: PUSH1 0x00 000009eb: DUP1 000009ec: REVERT 000009ed: JUMPDEST 000009ee: DUP1 000009ef: CALLDATALOAD 000009f0: SWAP1 000009f1: PUSH1 0x20 000009f3: ADD 000009f4: SWAP2 000009f5: DUP5 000009f6: PUSH1 0x01 000009f8: DUP4 000009f9: MUL 000009fa: DUP5 000009fb: ADD 000009fc: GT 000009fd: PUSH1 0x01 000009ff: PUSH1 0x20 00000a01: SHL 00000a02: DUP4 00000a03: GT 00000a04: OR 00000a05: ISZERO 00000a06: PUSH2 0x0a0e 00000a09: JUMPI 00000a0a: PUSH1 0x00 00000a0c: DUP1 00000a0d: REVERT 00000a0e: JUMPDEST 00000a0f: SWAP2 00000a10: SWAP1 00000a11: DUP1 00000a12: DUP1 00000a13: PUSH1 0x1f 00000a15: ADD 00000a16: PUSH1 0x20 00000a18: DUP1 00000a19: SWAP2 00000a1a: DIV 00000a1b: MUL 00000a1c: PUSH1 0x20 00000a1e: ADD 00000a1f: PUSH1 0x40 00000a21: MLOAD 00000a22: SWAP1 00000a23: DUP2 00000a24: ADD 00000a25: PUSH1 0x40 00000a27: MSTORE 00000a28: DUP1 00000a29: SWAP4 00000a2a: SWAP3 00000a2b: SWAP2 00000a2c: SWAP1 00000a2d: DUP2 00000a2e: DUP2 00000a2f: MSTORE 00000a30: PUSH1 0x20 00000a32: ADD 00000a33: DUP4 00000a34: DUP4 00000a35: DUP1 00000a36: DUP3 00000a37: DUP5 00000a38: CALLDATACOPY 00000a39: PUSH1 0x00 00000a3b: SWAP3 00000a3c: ADD 00000a3d: SWAP2 00000a3e: SWAP1 00000a3f: SWAP2 00000a40: MSTORE 00000a41: POP 00000a42: SWAP3 00000a43: SWAP6 00000a44: POP 00000a45: PUSH2 0x20a7 00000a48: SWAP5 00000a49: POP 00000a4a: POP 00000a4b: POP 00000a4c: POP 00000a4d: POP 00000a4e: JUMP 00000a4f: JUMPDEST 00000a50: CALLVALUE 00000a51: DUP1 00000a52: ISZERO 00000a53: PUSH2 0x0a5b 00000a56: JUMPI 00000a57: PUSH1 0x00 00000a59: DUP1 00000a5a: REVERT 00000a5b: JUMPDEST 00000a5c: POP 00000a5d: PUSH2 0x0280 00000a60: PUSH1 0x04 00000a62: DUP1 00000a63: CALLDATASIZE 00000a64: SUB 00000a65: PUSH1 0x20 00000a67: DUP2 00000a68: LT 00000a69: ISZERO 00000a6a: PUSH2 0x0a72 00000a6d: JUMPI 00000a6e: PUSH1 0x00 00000a70: DUP1 00000a71: REVERT 00000a72: JUMPDEST 00000a73: DUP2 00000a74: ADD 00000a75: SWAP1 00000a76: PUSH1 0x20 00000a78: DUP2 00000a79: ADD 00000a7a: DUP2 00000a7b: CALLDATALOAD 00000a7c: PUSH1 0x01 00000a7e: PUSH1 0x20 00000a80: SHL 00000a81: DUP2 00000a82: GT 00000a83: ISZERO 00000a84: PUSH2 0x0a8c 00000a87: JUMPI 00000a88: PUSH1 0x00 00000a8a: DUP1 00000a8b: REVERT 00000a8c: JUMPDEST 00000a8d: DUP3 00000a8e: ADD 00000a8f: DUP4 00000a90: PUSH1 0x20 00000a92: DUP3 00000a93: ADD 00000a94: GT 00000a95: ISZERO 00000a96: PUSH2 0x0a9e 00000a99: JUMPI 00000a9a: PUSH1 0x00 00000a9c: DUP1 00000a9d: REVERT 00000a9e: JUMPDEST 00000a9f: DUP1 00000aa0: CALLDATALOAD 00000aa1: SWAP1 00000aa2: PUSH1 0x20 00000aa4: ADD 00000aa5: SWAP2 00000aa6: DUP5 00000aa7: PUSH1 0x01 00000aa9: DUP4 00000aaa: MUL 00000aab: DUP5 00000aac: ADD 00000aad: GT 00000aae: PUSH1 0x01 00000ab0: PUSH1 0x20 00000ab2: SHL 00000ab3: DUP4 00000ab4: GT 00000ab5: OR 00000ab6: ISZERO 00000ab7: PUSH2 0x0abf 00000aba: JUMPI 00000abb: PUSH1 0x00 00000abd: DUP1 00000abe: REVERT 00000abf: JUMPDEST 00000ac0: SWAP2 00000ac1: SWAP1 00000ac2: DUP1 00000ac3: DUP1 00000ac4: PUSH1 0x1f 00000ac6: ADD 00000ac7: PUSH1 0x20 00000ac9: DUP1 00000aca: SWAP2 00000acb: DIV 00000acc: MUL 00000acd: PUSH1 0x20 00000acf: ADD 00000ad0: PUSH1 0x40 00000ad2: MLOAD 00000ad3: SWAP1 00000ad4: DUP2 00000ad5: ADD 00000ad6: PUSH1 0x40 00000ad8: MSTORE 00000ad9: DUP1 00000ada: SWAP4 00000adb: SWAP3 00000adc: SWAP2 00000add: SWAP1 00000ade: DUP2 00000adf: DUP2 00000ae0: MSTORE 00000ae1: PUSH1 0x20 00000ae3: ADD 00000ae4: DUP4 00000ae5: DUP4 00000ae6: DUP1 00000ae7: DUP3 00000ae8: DUP5 00000ae9: CALLDATACOPY 00000aea: PUSH1 0x00 00000aec: SWAP3 00000aed: ADD 00000aee: SWAP2 00000aef: SWAP1 00000af0: SWAP2 00000af1: MSTORE 00000af2: POP 00000af3: SWAP3 00000af4: SWAP6 00000af5: POP 00000af6: PUSH2 0x2204 00000af9: SWAP5 00000afa: POP 00000afb: POP 00000afc: POP 00000afd: POP 00000afe: POP 00000aff: JUMP 00000b00: JUMPDEST 00000b01: PUSH2 0x03d1 00000b04: PUSH2 0x226f 00000b07: JUMP 00000b08: JUMPDEST 00000b09: CALLVALUE 00000b0a: DUP1 00000b0b: ISZERO 00000b0c: PUSH2 0x0b14 00000b0f: JUMPI 00000b10: PUSH1 0x00 00000b12: DUP1 00000b13: REVERT 00000b14: JUMPDEST 00000b15: POP 00000b16: PUSH2 0x03d1 00000b19: PUSH1 0x04 00000b1b: DUP1 00000b1c: CALLDATASIZE 00000b1d: SUB 00000b1e: PUSH1 0x20 00000b20: DUP2 00000b21: LT 00000b22: ISZERO 00000b23: PUSH2 0x0b2b 00000b26: JUMPI 00000b27: PUSH1 0x00 00000b29: DUP1 00000b2a: REVERT 00000b2b: JUMPDEST 00000b2c: DUP2 00000b2d: ADD 00000b2e: SWAP1 00000b2f: PUSH1 0x20 00000b31: DUP2 00000b32: ADD 00000b33: DUP2 00000b34: CALLDATALOAD 00000b35: PUSH1 0x01 00000b37: PUSH1 0x20 00000b39: SHL 00000b3a: DUP2 00000b3b: GT 00000b3c: ISZERO 00000b3d: PUSH2 0x0b45 00000b40: JUMPI 00000b41: PUSH1 0x00 00000b43: DUP1 00000b44: REVERT 00000b45: JUMPDEST 00000b46: DUP3 00000b47: ADD 00000b48: DUP4 00000b49: PUSH1 0x20 00000b4b: DUP3 00000b4c: ADD 00000b4d: GT 00000b4e: ISZERO 00000b4f: PUSH2 0x0b57 00000b52: JUMPI 00000b53: PUSH1 0x00 00000b55: DUP1 00000b56: REVERT 00000b57: JUMPDEST 00000b58: DUP1 00000b59: CALLDATALOAD 00000b5a: SWAP1 00000b5b: PUSH1 0x20 00000b5d: ADD 00000b5e: SWAP2 00000b5f: DUP5 00000b60: PUSH1 0x01 00000b62: DUP4 00000b63: MUL 00000b64: DUP5 00000b65: ADD 00000b66: GT 00000b67: PUSH1 0x01 00000b69: PUSH1 0x20 00000b6b: SHL 00000b6c: DUP4 00000b6d: GT 00000b6e: OR 00000b6f: ISZERO 00000b70: PUSH2 0x0b78 00000b73: JUMPI 00000b74: PUSH1 0x00 00000b76: DUP1 00000b77: REVERT 00000b78: JUMPDEST 00000b79: SWAP2 00000b7a: SWAP1 00000b7b: DUP1 00000b7c: DUP1 00000b7d: PUSH1 0x1f 00000b7f: ADD 00000b80: PUSH1 0x20 00000b82: DUP1 00000b83: SWAP2 00000b84: DIV 00000b85: MUL 00000b86: PUSH1 0x20 00000b88: ADD 00000b89: PUSH1 0x40 00000b8b: MLOAD 00000b8c: SWAP1 00000b8d: DUP2 00000b8e: ADD 00000b8f: PUSH1 0x40 00000b91: MSTORE 00000b92: DUP1 00000b93: SWAP4 00000b94: SWAP3 00000b95: SWAP2 00000b96: SWAP1 00000b97: DUP2 00000b98: DUP2 00000b99: MSTORE 00000b9a: PUSH1 0x20 00000b9c: ADD 00000b9d: DUP4 00000b9e: DUP4 00000b9f: DUP1 00000ba0: DUP3 00000ba1: DUP5 00000ba2: CALLDATACOPY 00000ba3: PUSH1 0x00 00000ba5: SWAP3 00000ba6: ADD 00000ba7: SWAP2 00000ba8: SWAP1 00000ba9: SWAP2 00000baa: MSTORE 00000bab: POP 00000bac: SWAP3 00000bad: SWAP6 00000bae: POP 00000baf: PUSH2 0x2407 00000bb2: SWAP5 00000bb3: POP 00000bb4: POP 00000bb5: POP 00000bb6: POP 00000bb7: POP 00000bb8: JUMP 00000bb9: JUMPDEST 00000bba: CALLVALUE 00000bbb: DUP1 00000bbc: ISZERO 00000bbd: PUSH2 0x0bc5 00000bc0: JUMPI 00000bc1: PUSH1 0x00 00000bc3: DUP1 00000bc4: REVERT 00000bc5: JUMPDEST 00000bc6: POP 00000bc7: PUSH2 0x0280 00000bca: PUSH2 0x2aac 00000bcd: JUMP 00000bce: JUMPDEST 00000bcf: CALLVALUE 00000bd0: DUP1 00000bd1: ISZERO 00000bd2: PUSH2 0x0bda 00000bd5: JUMPI 00000bd6: PUSH1 0x00 00000bd8: DUP1 00000bd9: REVERT 00000bda: JUMPDEST 00000bdb: POP 00000bdc: PUSH2 0x0280 00000bdf: PUSH2 0x2ab2 00000be2: JUMP 00000be3: JUMPDEST 00000be4: CALLVALUE 00000be5: DUP1 00000be6: ISZERO 00000be7: PUSH2 0x0bef 00000bea: JUMPI 00000beb: PUSH1 0x00 00000bed: DUP1 00000bee: REVERT 00000bef: JUMPDEST 00000bf0: POP 00000bf1: PUSH2 0x0280 00000bf4: PUSH2 0x2ab8 00000bf7: JUMP 00000bf8: JUMPDEST 00000bf9: CALLVALUE 00000bfa: DUP1 00000bfb: ISZERO 00000bfc: PUSH2 0x0c04 00000bff: JUMPI 00000c00: PUSH1 0x00 00000c02: DUP1 00000c03: REVERT 00000c04: JUMPDEST 00000c05: POP 00000c06: PUSH2 0x0280 00000c09: PUSH2 0x2ac4 00000c0c: JUMP 00000c0d: JUMPDEST 00000c0e: CALLVALUE 00000c0f: DUP1 00000c10: ISZERO 00000c11: PUSH2 0x0c19 00000c14: JUMPI 00000c15: PUSH1 0x00 00000c17: DUP1 00000c18: REVERT 00000c19: JUMPDEST 00000c1a: POP 00000c1b: PUSH2 0x0280 00000c1e: PUSH2 0x2aef 00000c21: JUMP 00000c22: JUMPDEST 00000c23: CALLVALUE 00000c24: DUP1 00000c25: ISZERO 00000c26: PUSH2 0x0c2e 00000c29: JUMPI 00000c2a: PUSH1 0x00 00000c2c: DUP1 00000c2d: REVERT 00000c2e: JUMPDEST 00000c2f: POP 00000c30: PUSH2 0x03d1 00000c33: PUSH2 0x2b08 00000c36: JUMP 00000c37: JUMPDEST 00000c38: PUSH2 0x03d1 00000c3b: PUSH1 0x04 00000c3d: DUP1 00000c3e: CALLDATASIZE 00000c3f: SUB 00000c40: PUSH1 0x40 00000c42: DUP2 00000c43: LT 00000c44: ISZERO 00000c45: PUSH2 0x0c4d 00000c48: JUMPI 00000c49: PUSH1 0x00 00000c4b: DUP1 00000c4c: REVERT 00000c4d: JUMPDEST 00000c4e: POP 00000c4f: DUP1 00000c50: CALLDATALOAD 00000c51: SWAP1 00000c52: PUSH1 0x20 00000c54: ADD 00000c55: CALLDATALOAD 00000c56: PUSH1 0x01 00000c58: PUSH1 0x01 00000c5a: PUSH1 0xa0 00000c5c: SHL 00000c5d: SUB 00000c5e: AND 00000c5f: PUSH2 0x2b87 00000c62: JUMP 00000c63: JUMPDEST 00000c64: CALLVALUE 00000c65: DUP1 00000c66: ISZERO 00000c67: PUSH2 0x0c6f 00000c6a: JUMPI 00000c6b: PUSH1 0x00 00000c6d: DUP1 00000c6e: REVERT 00000c6f: JUMPDEST 00000c70: POP 00000c71: PUSH2 0x0280 00000c74: PUSH2 0x2d95 00000c77: JUMP 00000c78: JUMPDEST 00000c79: CALLVALUE 00000c7a: DUP1 00000c7b: ISZERO 00000c7c: PUSH2 0x0c84 00000c7f: JUMPI 00000c80: PUSH1 0x00 00000c82: DUP1 00000c83: REVERT 00000c84: JUMPDEST 00000c85: POP 00000c86: PUSH2 0x02a7 00000c89: PUSH1 0x04 00000c8b: DUP1 00000c8c: CALLDATASIZE 00000c8d: SUB 00000c8e: PUSH1 0x20 00000c90: DUP2 00000c91: LT 00000c92: ISZERO 00000c93: PUSH2 0x0c9b 00000c96: JUMPI 00000c97: PUSH1 0x00 00000c99: DUP1 00000c9a: REVERT 00000c9b: JUMPDEST 00000c9c: DUP2 00000c9d: ADD 00000c9e: SWAP1 00000c9f: PUSH1 0x20 00000ca1: DUP2 00000ca2: ADD 00000ca3: DUP2 00000ca4: CALLDATALOAD 00000ca5: PUSH1 0x01 00000ca7: PUSH1 0x20 00000ca9: SHL 00000caa: DUP2 00000cab: GT 00000cac: ISZERO 00000cad: PUSH2 0x0cb5 00000cb0: JUMPI 00000cb1: PUSH1 0x00 00000cb3: DUP1 00000cb4: REVERT 00000cb5: JUMPDEST 00000cb6: DUP3 00000cb7: ADD 00000cb8: DUP4 00000cb9: PUSH1 0x20 00000cbb: DUP3 00000cbc: ADD 00000cbd: GT 00000cbe: ISZERO 00000cbf: PUSH2 0x0cc7 00000cc2: JUMPI 00000cc3: PUSH1 0x00 00000cc5: DUP1 00000cc6: REVERT 00000cc7: JUMPDEST 00000cc8: DUP1 00000cc9: CALLDATALOAD 00000cca: SWAP1 00000ccb: PUSH1 0x20 00000ccd: ADD 00000cce: SWAP2 00000ccf: DUP5 00000cd0: PUSH1 0x01 00000cd2: DUP4 00000cd3: MUL 00000cd4: DUP5 00000cd5: ADD 00000cd6: GT 00000cd7: PUSH1 0x01 00000cd9: PUSH1 0x20 00000cdb: SHL 00000cdc: DUP4 00000cdd: GT 00000cde: OR 00000cdf: ISZERO 00000ce0: PUSH2 0x0ce8 00000ce3: JUMPI 00000ce4: PUSH1 0x00 00000ce6: DUP1 00000ce7: REVERT 00000ce8: JUMPDEST 00000ce9: SWAP2 00000cea: SWAP1 00000ceb: DUP1 00000cec: DUP1 00000ced: PUSH1 0x1f 00000cef: ADD 00000cf0: PUSH1 0x20 00000cf2: DUP1 00000cf3: SWAP2 00000cf4: DIV 00000cf5: MUL 00000cf6: PUSH1 0x20 00000cf8: ADD 00000cf9: PUSH1 0x40 00000cfb: MLOAD 00000cfc: SWAP1 00000cfd: DUP2 00000cfe: ADD 00000cff: PUSH1 0x40 00000d01: MSTORE 00000d02: DUP1 00000d03: SWAP4 00000d04: SWAP3 00000d05: SWAP2 00000d06: SWAP1 00000d07: DUP2 00000d08: DUP2 00000d09: MSTORE 00000d0a: PUSH1 0x20 00000d0c: ADD 00000d0d: DUP4 00000d0e: DUP4 00000d0f: DUP1 00000d10: DUP3 00000d11: DUP5 00000d12: CALLDATACOPY 00000d13: PUSH1 0x00 00000d15: SWAP3 00000d16: ADD 00000d17: SWAP2 00000d18: SWAP1 00000d19: SWAP2 00000d1a: MSTORE 00000d1b: POP 00000d1c: SWAP3 00000d1d: SWAP6 00000d1e: POP 00000d1f: PUSH2 0x2d9b 00000d22: SWAP5 00000d23: POP 00000d24: POP 00000d25: POP 00000d26: POP 00000d27: POP 00000d28: JUMP 00000d29: JUMPDEST 00000d2a: CALLVALUE 00000d2b: DUP1 00000d2c: ISZERO 00000d2d: PUSH2 0x0d35 00000d30: JUMPI 00000d31: PUSH1 0x00 00000d33: DUP1 00000d34: REVERT 00000d35: JUMPDEST 00000d36: POP 00000d37: PUSH2 0x0280 00000d3a: PUSH2 0x2f27 00000d3d: JUMP 00000d3e: JUMPDEST 00000d3f: CALLVALUE 00000d40: DUP1 00000d41: ISZERO 00000d42: PUSH2 0x0d4a 00000d45: JUMPI 00000d46: PUSH1 0x00 00000d48: DUP1 00000d49: REVERT 00000d4a: JUMPDEST 00000d4b: POP 00000d4c: PUSH2 0x03d1 00000d4f: PUSH1 0x04 00000d51: DUP1 00000d52: CALLDATASIZE 00000d53: SUB 00000d54: PUSH1 0x40 00000d56: DUP2 00000d57: LT 00000d58: ISZERO 00000d59: PUSH2 0x0d61 00000d5c: JUMPI 00000d5d: PUSH1 0x00 00000d5f: DUP1 00000d60: REVERT 00000d61: JUMPDEST 00000d62: DUP2 00000d63: CALLDATALOAD 00000d64: SWAP2 00000d65: SWAP1 00000d66: DUP2 00000d67: ADD 00000d68: SWAP1 00000d69: PUSH1 0x40 00000d6b: DUP2 00000d6c: ADD 00000d6d: PUSH1 0x20 00000d6f: DUP3 00000d70: ADD 00000d71: CALLDATALOAD 00000d72: PUSH1 0x01 00000d74: PUSH1 0x20 00000d76: SHL 00000d77: DUP2 00000d78: GT 00000d79: ISZERO 00000d7a: PUSH2 0x0d82 00000d7d: JUMPI 00000d7e: PUSH1 0x00 00000d80: DUP1 00000d81: REVERT 00000d82: JUMPDEST 00000d83: DUP3 00000d84: ADD 00000d85: DUP4 00000d86: PUSH1 0x20 00000d88: DUP3 00000d89: ADD 00000d8a: GT 00000d8b: ISZERO 00000d8c: PUSH2 0x0d94 00000d8f: JUMPI 00000d90: PUSH1 0x00 00000d92: DUP1 00000d93: REVERT 00000d94: JUMPDEST 00000d95: DUP1 00000d96: CALLDATALOAD 00000d97: SWAP1 00000d98: PUSH1 0x20 00000d9a: ADD 00000d9b: SWAP2 00000d9c: DUP5 00000d9d: PUSH1 0x01 00000d9f: DUP4 00000da0: MUL 00000da1: DUP5 00000da2: ADD 00000da3: GT 00000da4: PUSH1 0x01 00000da6: PUSH1 0x20 00000da8: SHL 00000da9: DUP4 00000daa: GT 00000dab: OR 00000dac: ISZERO 00000dad: PUSH2 0x0db5 00000db0: JUMPI 00000db1: PUSH1 0x00 00000db3: DUP1 00000db4: REVERT 00000db5: JUMPDEST 00000db6: SWAP2 00000db7: SWAP1 00000db8: DUP1 00000db9: DUP1 00000dba: PUSH1 0x1f 00000dbc: ADD 00000dbd: PUSH1 0x20 00000dbf: DUP1 00000dc0: SWAP2 00000dc1: DIV 00000dc2: MUL 00000dc3: PUSH1 0x20 00000dc5: ADD 00000dc6: PUSH1 0x40 00000dc8: MLOAD 00000dc9: SWAP1 00000dca: DUP2 00000dcb: ADD 00000dcc: PUSH1 0x40 00000dce: MSTORE 00000dcf: DUP1 00000dd0: SWAP4 00000dd1: SWAP3 00000dd2: SWAP2 00000dd3: SWAP1 00000dd4: DUP2 00000dd5: DUP2 00000dd6: MSTORE 00000dd7: PUSH1 0x20 00000dd9: ADD 00000dda: DUP4 00000ddb: DUP4 00000ddc: DUP1 00000ddd: DUP3 00000dde: DUP5 00000ddf: CALLDATACOPY 00000de0: PUSH1 0x00 00000de2: SWAP3 00000de3: ADD 00000de4: SWAP2 00000de5: SWAP1 00000de6: SWAP2 00000de7: MSTORE 00000de8: POP 00000de9: SWAP3 00000dea: SWAP6 00000deb: POP 00000dec: PUSH2 0x2f2d 00000def: SWAP5 00000df0: POP 00000df1: POP 00000df2: POP 00000df3: POP 00000df4: POP 00000df5: JUMP 00000df6: JUMPDEST 00000df7: CALLVALUE 00000df8: DUP1 00000df9: ISZERO 00000dfa: PUSH2 0x0e02 00000dfd: JUMPI 00000dfe: PUSH1 0x00 00000e00: DUP1 00000e01: REVERT 00000e02: JUMPDEST 00000e03: POP 00000e04: PUSH2 0x0280 00000e07: PUSH2 0x30c3 00000e0a: JUMP 00000e0b: JUMPDEST 00000e0c: CALLVALUE 00000e0d: DUP1 00000e0e: ISZERO 00000e0f: PUSH2 0x0e17 00000e12: JUMPI 00000e13: PUSH1 0x00 00000e15: DUP1 00000e16: REVERT 00000e17: JUMPDEST 00000e18: POP 00000e19: PUSH2 0x05bc 00000e1c: PUSH1 0x04 00000e1e: DUP1 00000e1f: CALLDATASIZE 00000e20: SUB 00000e21: PUSH1 0x20 00000e23: DUP2 00000e24: LT 00000e25: ISZERO 00000e26: PUSH2 0x0e2e 00000e29: JUMPI 00000e2a: PUSH1 0x00 00000e2c: DUP1 00000e2d: REVERT 00000e2e: JUMPDEST 00000e2f: POP 00000e30: CALLDATALOAD 00000e31: PUSH2 0x30c9 00000e34: JUMP 00000e35: JUMPDEST 00000e36: CALLVALUE 00000e37: DUP1 00000e38: ISZERO 00000e39: PUSH2 0x0e41 00000e3c: JUMPI 00000e3d: PUSH1 0x00 00000e3f: DUP1 00000e40: REVERT 00000e41: JUMPDEST 00000e42: POP 00000e43: PUSH2 0x0280 00000e46: PUSH2 0x30dc 00000e49: JUMP 00000e4a: JUMPDEST 00000e4b: PUSH1 0x24 00000e4d: SLOAD 00000e4e: DUP2 00000e4f: JUMP 00000e50: JUMPDEST 00000e51: PUSH1 0x60 00000e53: PUSH1 0x01 00000e55: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17 00000e6a: PUSH4 0xa3c6b2b3 00000e6f: SWAP1 00000e70: SWAP2 00000e71: PUSH1 0x40 00000e73: MLOAD 00000e74: DUP3 00000e75: PUSH4 0xffffffff 00000e7a: AND 00000e7b: PUSH1 0xe0 00000e7d: SHL 00000e7e: DUP2 00000e7f: MSTORE 00000e80: PUSH1 0x04 00000e82: ADD 00000e83: DUP1 00000e84: DUP3 00000e85: DUP2 00000e86: MSTORE 00000e87: PUSH1 0x20 00000e89: ADD 00000e8a: SWAP2 00000e8b: POP 00000e8c: POP 00000e8d: PUSH1 0x00 00000e8f: PUSH1 0x40 00000e91: MLOAD 00000e92: DUP1 00000e93: DUP4 00000e94: SUB 00000e95: DUP2 00000e96: DUP7 00000e97: DUP1 00000e98: EXTCODESIZE 00000e99: ISZERO 00000e9a: DUP1 00000e9b: ISZERO 00000e9c: PUSH2 0x0ea4 00000e9f: JUMPI 00000ea0: PUSH1 0x00 00000ea2: DUP1 00000ea3: REVERT 00000ea4: JUMPDEST 00000ea5: POP 00000ea6: GAS 00000ea7: DELEGATECALL 00000ea8: ISZERO 00000ea9: DUP1 00000eaa: ISZERO 00000eab: PUSH2 0x0eb8 00000eae: JUMPI 00000eaf: RETURNDATASIZE 00000eb0: PUSH1 0x00 00000eb2: DUP1 00000eb3: RETURNDATACOPY 00000eb4: RETURNDATASIZE 00000eb5: PUSH1 0x00 00000eb7: REVERT 00000eb8: JUMPDEST 00000eb9: POP 00000eba: POP 00000ebb: POP 00000ebc: POP 00000ebd: PUSH1 0x40 00000ebf: MLOAD 00000ec0: RETURNDATASIZE 00000ec1: PUSH1 0x00 00000ec3: DUP3 00000ec4: RETURNDATACOPY 00000ec5: PUSH1 0x1f 00000ec7: RETURNDATASIZE 00000ec8: SWAP1 00000ec9: DUP2 00000eca: ADD 00000ecb: PUSH1 0x1f 00000ecd: NOT 00000ece: AND 00000ecf: DUP3 00000ed0: ADD 00000ed1: PUSH1 0x40 00000ed3: MSTORE 00000ed4: PUSH1 0x20 00000ed6: DUP2 00000ed7: LT 00000ed8: ISZERO 00000ed9: PUSH2 0x0ee1 00000edc: JUMPI 00000edd: PUSH1 0x00 00000edf: DUP1 00000ee0: REVERT 00000ee1: JUMPDEST 00000ee2: DUP2 00000ee3: ADD 00000ee4: SWAP1 00000ee5: DUP1 00000ee6: DUP1 00000ee7: MLOAD 00000ee8: PUSH1 0x40 00000eea: MLOAD 00000eeb: SWAP4 00000eec: SWAP3 00000eed: SWAP2 00000eee: SWAP1 00000eef: DUP5 00000ef0: PUSH1 0x01 00000ef2: PUSH1 0x20 00000ef4: SHL 00000ef5: DUP3 00000ef6: GT 00000ef7: ISZERO 00000ef8: PUSH2 0x0f00 00000efb: JUMPI 00000efc: PUSH1 0x00 00000efe: DUP1 00000eff: REVERT 00000f00: JUMPDEST 00000f01: SWAP1 00000f02: DUP4 00000f03: ADD 00000f04: SWAP1 00000f05: PUSH1 0x20 00000f07: DUP3 00000f08: ADD 00000f09: DUP6 00000f0a: DUP2 00000f0b: GT 00000f0c: ISZERO 00000f0d: PUSH2 0x0f15 00000f10: JUMPI 00000f11: PUSH1 0x00 00000f13: DUP1 00000f14: REVERT 00000f15: JUMPDEST 00000f16: DUP3 00000f17: MLOAD 00000f18: DUP7 00000f19: PUSH1 0x20 00000f1b: DUP3 00000f1c: MUL 00000f1d: DUP4 00000f1e: ADD 00000f1f: GT 00000f20: PUSH1 0x01 00000f22: PUSH1 0x20 00000f24: SHL 00000f25: DUP3 00000f26: GT 00000f27: OR 00000f28: ISZERO 00000f29: PUSH2 0x0f31 00000f2c: JUMPI 00000f2d: PUSH1 0x00 00000f2f: DUP1 00000f30: REVERT 00000f31: JUMPDEST 00000f32: DUP3 00000f33: MSTORE 00000f34: POP 00000f35: DUP2 00000f36: MLOAD 00000f37: PUSH1 0x20 00000f39: SWAP2 00000f3a: DUP3 00000f3b: ADD 00000f3c: SWAP3 00000f3d: DUP3 00000f3e: ADD 00000f3f: SWAP2 00000f40: MUL 00000f41: DUP1 00000f42: DUP4 00000f43: DUP4 00000f44: PUSH1 0x00 00000f46: JUMPDEST 00000f47: DUP4 00000f48: DUP2 00000f49: LT 00000f4a: ISZERO 00000f4b: PUSH2 0x0f5e 00000f4e: JUMPI 00000f4f: DUP2 00000f50: DUP2 00000f51: ADD 00000f52: MLOAD 00000f53: DUP4 00000f54: DUP3 00000f55: ADD 00000f56: MSTORE 00000f57: PUSH1 0x20 00000f59: ADD 00000f5a: PUSH2 0x0f46 00000f5d: JUMP 00000f5e: JUMPDEST 00000f5f: POP 00000f60: POP 00000f61: POP 00000f62: POP 00000f63: SWAP1 00000f64: POP 00000f65: ADD 00000f66: PUSH1 0x40 00000f68: MSTORE 00000f69: POP 00000f6a: POP 00000f6b: POP 00000f6c: SWAP1 00000f6d: POP 00000f6e: JUMPDEST 00000f6f: SWAP1 00000f70: JUMP 00000f71: JUMPDEST 00000f72: PUSH1 0x00 00000f74: PUSH2 0x0f84 00000f77: PUSH1 0x0b 00000f79: DUP4 00000f7a: PUSH4 0xffffffff 00000f7f: PUSH2 0x30e2 00000f82: AND 00000f83: JUMP 00000f84: JUMPDEST 00000f85: SWAP3 00000f86: SWAP2 00000f87: POP 00000f88: POP 00000f89: JUMP 00000f8a: JUMPDEST 00000f8b: PUSH2 0x0f92 00000f8e: PUSH2 0x3152 00000f91: JUMP 00000f92: JUMPDEST 00000f93: PUSH2 0x0fdc 00000f96: JUMPI 00000f97: PUSH1 0x40 00000f99: DUP1 00000f9a: MLOAD 00000f9b: PUSH3 0x461bcd 00000f9f: PUSH1 0xe5 00000fa1: SHL 00000fa2: DUP2 00000fa3: MSTORE 00000fa4: PUSH1 0x20 00000fa6: PUSH1 0x04 00000fa8: DUP3 00000fa9: ADD 00000faa: MSTORE 00000fab: PUSH1 0x16 00000fad: PUSH1 0x24 00000faf: DUP3 00000fb0: ADD 00000fb1: MSTORE 00000fb2: PUSH22 0x115b9d1c9e48191a59081b9bdd081d1a5b59481bdd5d 00000fc9: PUSH1 0x52 00000fcb: SHL 00000fcc: PUSH1 0x44 00000fce: DUP3 00000fcf: ADD 00000fd0: MSTORE 00000fd1: SWAP1 00000fd2: MLOAD 00000fd3: SWAP1 00000fd4: DUP2 00000fd5: SWAP1 00000fd6: SUB 00000fd7: PUSH1 0x64 00000fd9: ADD 00000fda: SWAP1 00000fdb: REVERT 00000fdc: JUMPDEST 00000fdd: PUSH1 0x0b 00000fdf: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 00000ff4: PUSH4 0xa2494002 00000ff9: SWAP1 00000ffa: SWAP2 00000ffb: PUSH1 0x2a 00000ffd: SLOAD 00000ffe: PUSH1 0x1f 00001000: SLOAD 00001001: PUSH1 0x40 00001003: MLOAD 00001004: DUP5 00001005: PUSH4 0xffffffff 0000100a: AND 0000100b: PUSH1 0xe0 0000100d: SHL 0000100e: DUP2 0000100f: MSTORE 00001010: PUSH1 0x04 00001012: ADD 00001013: DUP1 00001014: DUP5 00001015: DUP2 00001016: MSTORE 00001017: PUSH1 0x20 00001019: ADD 0000101a: DUP4 0000101b: DUP2 0000101c: MSTORE 0000101d: PUSH1 0x20 0000101f: ADD 00001020: DUP3 00001021: DUP2 00001022: MSTORE 00001023: PUSH1 0x20 00001025: ADD 00001026: SWAP4 00001027: POP 00001028: POP 00001029: POP 0000102a: POP 0000102b: PUSH1 0x00 0000102d: PUSH1 0x40 0000102f: MLOAD 00001030: DUP1 00001031: DUP4 00001032: SUB 00001033: DUP2 00001034: DUP7 00001035: DUP1 00001036: EXTCODESIZE 00001037: ISZERO 00001038: DUP1 00001039: ISZERO 0000103a: PUSH2 0x1042 0000103d: JUMPI 0000103e: PUSH1 0x00 00001040: DUP1 00001041: REVERT 00001042: JUMPDEST 00001043: POP 00001044: GAS 00001045: DELEGATECALL 00001046: ISZERO 00001047: DUP1 00001048: ISZERO 00001049: PUSH2 0x1056 0000104c: JUMPI 0000104d: RETURNDATASIZE 0000104e: PUSH1 0x00 00001050: DUP1 00001051: RETURNDATACOPY 00001052: RETURNDATASIZE 00001053: PUSH1 0x00 00001055: REVERT 00001056: JUMPDEST 00001057: POP 00001058: POP 00001059: POP 0000105a: POP 0000105b: PUSH1 0x00 0000105d: PUSH1 0x29 0000105f: DUP2 00001060: SWAP1 00001061: SSTORE 00001062: POP 00001063: PUSH1 0x00 00001065: PUSH2 0x106c 00001068: PUSH2 0x2ab8 0000106b: JUMP 0000106c: JUMPDEST 0000106d: GT 0000106e: ISZERO 0000106f: PUSH2 0x1124 00001072: JUMPI 00001073: PUSH1 0x28 00001075: SLOAD 00001076: PUSH1 0x2b 00001078: DUP1 00001079: SLOAD 0000107a: PUSH1 0x40 0000107c: DUP1 0000107d: MLOAD 0000107e: PUSH1 0x20 00001080: PUSH1 0x1f 00001082: PUSH1 0x02 00001084: PUSH1 0x00 00001086: NOT 00001087: PUSH2 0x0100 0000108a: PUSH1 0x01 0000108c: DUP9 0000108d: AND 0000108e: ISZERO 0000108f: MUL 00001090: ADD 00001091: SWAP1 00001092: SWAP6 00001093: AND 00001094: SWAP5 00001095: SWAP1 00001096: SWAP5 00001097: DIV 00001098: SWAP4 00001099: DUP5 0000109a: ADD 0000109b: DUP2 0000109c: SWAP1 0000109d: DIV 0000109e: DUP2 0000109f: MUL 000010a0: DUP3 000010a1: ADD 000010a2: DUP2 000010a3: ADD 000010a4: SWAP1 000010a5: SWAP3 000010a6: MSTORE 000010a7: DUP3 000010a8: DUP2 000010a9: MSTORE 000010aa: PUSH2 0x1124 000010ad: SWAP5 000010ae: SWAP4 000010af: SWAP1 000010b0: SWAP3 000010b1: SWAP1 000010b2: SWAP2 000010b3: DUP4 000010b4: ADD 000010b5: DUP3 000010b6: DUP3 000010b7: DUP1 000010b8: ISZERO 000010b9: PUSH2 0x1103 000010bc: JUMPI 000010bd: DUP1 000010be: PUSH1 0x1f 000010c0: LT 000010c1: PUSH2 0x10d8 000010c4: JUMPI 000010c5: PUSH2 0x0100 000010c8: DUP1 000010c9: DUP4 000010ca: SLOAD 000010cb: DIV 000010cc: MUL 000010cd: DUP4 000010ce: MSTORE 000010cf: SWAP2 000010d0: PUSH1 0x20 000010d2: ADD 000010d3: SWAP2 000010d4: PUSH2 0x1103 000010d7: JUMP 000010d8: JUMPDEST 000010d9: DUP3 000010da: ADD 000010db: SWAP2 000010dc: SWAP1 000010dd: PUSH1 0x00 000010df: MSTORE 000010e0: PUSH1 0x20 000010e2: PUSH1 0x00 000010e4: KECCAK256 000010e5: SWAP1 000010e6: JUMPDEST 000010e7: DUP2 000010e8: SLOAD 000010e9: DUP2 000010ea: MSTORE 000010eb: SWAP1 000010ec: PUSH1 0x01 000010ee: ADD 000010ef: SWAP1 000010f0: PUSH1 0x20 000010f2: ADD 000010f3: DUP1 000010f4: DUP4 000010f5: GT 000010f6: PUSH2 0x10e6 000010f9: JUMPI 000010fa: DUP3 000010fb: SWAP1 000010fc: SUB 000010fd: PUSH1 0x1f 000010ff: AND 00001100: DUP3 00001101: ADD 00001102: SWAP2 00001103: JUMPDEST 00001104: POP 00001105: POP 00001106: PUSH1 0x2e 00001108: SLOAD 00001109: PUSH1 0x2c 0000110b: SLOAD 0000110c: PUSH1 0x2d 0000110e: SLOAD 0000110f: PUSH1 0x01 00001111: PUSH1 0x01 00001113: PUSH1 0xa0 00001115: SHL 00001116: SUB 00001117: SWAP1 00001118: SWAP3 00001119: AND 0000111a: SWAP5 0000111b: POP 0000111c: SWAP3 0000111d: POP 0000111e: SWAP1 0000111f: POP 00001120: PUSH2 0x316f 00001123: JUMP 00001124: JUMPDEST 00001125: PUSH1 0x2a 00001127: SLOAD 00001128: PUSH1 0x40 0000112a: MLOAD 0000112b: PUSH32 0x6675fe3ae219641aa4ec9e58867bd7af88bf03caf819d8858f3ddf4cc635eed2 0000114c: SWAP1 0000114d: PUSH1 0x00 0000114f: SWAP1 00001150: LOG2 00001151: JUMP 00001152: JUMPDEST 00001153: PUSH1 0x06 00001155: SLOAD 00001156: PUSH1 0x00 00001158: SWAP1 00001159: PUSH1 0xff 0000115b: AND 0000115c: PUSH2 0x1167 0000115f: JUMPI 00001160: POP 00001161: PUSH1 0x01 00001163: PUSH2 0x0f6e 00001166: JUMP 00001167: JUMPDEST 00001168: POP 00001169: PUSH1 0x21 0000116b: SLOAD 0000116c: PUSH1 0x1f 0000116e: SLOAD 0000116f: PUSH1 0x15 00001171: SLOAD 00001172: PUSH1 0x04 00001174: SLOAD 00001175: PUSH1 0x05 00001177: SLOAD 00001178: ADD 00001179: ADD 0000117a: SWAP2 0000117b: MUL 0000117c: ADD 0000117d: NUMBER 0000117e: GT 0000117f: SWAP1 00001180: JUMP 00001181: JUMPDEST 00001182: PUSH1 0x25 00001184: SLOAD 00001185: DUP2 00001186: JUMP 00001187: JUMPDEST 00001188: PUSH1 0x40 0000118a: DUP1 0000118b: MLOAD 0000118c: PUSH4 0x664d9be1 00001191: PUSH1 0xe1 00001193: SHL 00001194: DUP2 00001195: MSTORE 00001196: PUSH1 0x0b 00001198: PUSH1 0x04 0000119a: DUP3 0000119b: ADD 0000119c: DUP2 0000119d: DUP2 0000119e: MSTORE 0000119f: PUSH1 0x24 000011a1: DUP4 000011a2: ADD 000011a3: SWAP4 000011a4: DUP5 000011a5: MSTORE 000011a6: DUP5 000011a7: MLOAD 000011a8: PUSH1 0x44 000011aa: DUP5 000011ab: ADD 000011ac: MSTORE 000011ad: DUP5 000011ae: MLOAD 000011af: PUSH1 0x00 000011b1: SWAP5 000011b2: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 000011c7: SWAP5 000011c8: PUSH4 0xcc9b37c2 000011cd: SWAP5 000011ce: SWAP4 000011cf: DUP9 000011d0: SWAP4 000011d1: SWAP1 000011d2: SWAP3 000011d3: SWAP2 000011d4: PUSH1 0x64 000011d6: ADD 000011d7: SWAP1 000011d8: PUSH1 0x20 000011da: DUP6 000011db: ADD 000011dc: SWAP1 000011dd: DUP1 000011de: DUP4 000011df: DUP4 000011e0: DUP13 000011e1: JUMPDEST 000011e2: DUP4 000011e3: DUP2 000011e4: LT 000011e5: ISZERO 000011e6: PUSH2 0x11f9 000011e9: JUMPI 000011ea: DUP2 000011eb: DUP2 000011ec: ADD 000011ed: MLOAD 000011ee: DUP4 000011ef: DUP3 000011f0: ADD 000011f1: MSTORE 000011f2: PUSH1 0x20 000011f4: ADD 000011f5: PUSH2 0x11e1 000011f8: JUMP 000011f9: JUMPDEST 000011fa: POP 000011fb: POP 000011fc: POP 000011fd: POP 000011fe: SWAP1 000011ff: POP 00001200: SWAP1 00001201: DUP2 00001202: ADD 00001203: SWAP1 00001204: PUSH1 0x1f 00001206: AND 00001207: DUP1 00001208: ISZERO 00001209: PUSH2 0x1226 0000120c: JUMPI 0000120d: DUP1 0000120e: DUP3 0000120f: SUB 00001210: DUP1 00001211: MLOAD 00001212: PUSH1 0x01 00001214: DUP4 00001215: PUSH1 0x20 00001217: SUB 00001218: PUSH2 0x0100 0000121b: EXP 0000121c: SUB 0000121d: NOT 0000121e: AND 0000121f: DUP2 00001220: MSTORE 00001221: PUSH1 0x20 00001223: ADD 00001224: SWAP2 00001225: POP 00001226: JUMPDEST 00001227: POP 00001228: SWAP4 00001229: POP 0000122a: POP 0000122b: POP 0000122c: POP 0000122d: PUSH1 0x20 0000122f: PUSH1 0x40 00001231: MLOAD 00001232: DUP1 00001233: DUP4 00001234: SUB 00001235: DUP2 00001236: DUP7 00001237: DUP1 00001238: EXTCODESIZE 00001239: ISZERO 0000123a: DUP1 0000123b: ISZERO 0000123c: PUSH2 0x1244 0000123f: JUMPI 00001240: PUSH1 0x00 00001242: DUP1 00001243: REVERT 00001244: JUMPDEST 00001245: POP 00001246: GAS 00001247: DELEGATECALL 00001248: ISZERO 00001249: DUP1 0000124a: ISZERO 0000124b: PUSH2 0x1258 0000124e: JUMPI 0000124f: RETURNDATASIZE 00001250: PUSH1 0x00 00001252: DUP1 00001253: RETURNDATACOPY 00001254: RETURNDATASIZE 00001255: PUSH1 0x00 00001257: REVERT 00001258: JUMPDEST 00001259: POP 0000125a: POP 0000125b: POP 0000125c: POP 0000125d: PUSH1 0x40 0000125f: MLOAD 00001260: RETURNDATASIZE 00001261: PUSH1 0x20 00001263: DUP2 00001264: LT 00001265: ISZERO 00001266: PUSH2 0x126e 00001269: JUMPI 0000126a: PUSH1 0x00 0000126c: DUP1 0000126d: REVERT 0000126e: JUMPDEST 0000126f: POP 00001270: MLOAD 00001271: SWAP3 00001272: SWAP2 00001273: POP 00001274: POP 00001275: JUMP 00001276: JUMPDEST 00001277: PUSH1 0x21 00001279: SLOAD 0000127a: DUP2 0000127b: JUMP 0000127c: JUMPDEST 0000127d: PUSH1 0x40 0000127f: DUP1 00001280: MLOAD 00001281: PUSH4 0x251be5d1 00001286: PUSH1 0xe1 00001288: SHL 00001289: DUP2 0000128a: MSTORE 0000128b: PUSH1 0x0b 0000128d: PUSH1 0x04 0000128f: DUP3 00001290: ADD 00001291: MSTORE 00001292: PUSH1 0x01 00001294: PUSH1 0x01 00001296: PUSH1 0xa0 00001298: SHL 00001299: SUB 0000129a: DUP5 0000129b: AND 0000129c: PUSH1 0x24 0000129e: DUP3 0000129f: ADD 000012a0: MSTORE 000012a1: PUSH1 0x44 000012a3: DUP2 000012a4: ADD 000012a5: DUP4 000012a6: SWAP1 000012a7: MSTORE 000012a8: SWAP1 000012a9: MLOAD 000012aa: PUSH1 0x00 000012ac: SWAP2 000012ad: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 000012c2: SWAP2 000012c3: PUSH4 0x4a37cba2 000012c8: SWAP2 000012c9: PUSH1 0x64 000012cb: DUP1 000012cc: DUP3 000012cd: ADD 000012ce: SWAP3 000012cf: PUSH1 0x20 000012d1: SWAP3 000012d2: SWAP1 000012d3: SWAP2 000012d4: SWAP1 000012d5: DUP3 000012d6: SWAP1 000012d7: SUB 000012d8: ADD 000012d9: DUP2 000012da: DUP7 000012db: DUP1 000012dc: EXTCODESIZE 000012dd: ISZERO 000012de: DUP1 000012df: ISZERO 000012e0: PUSH2 0x12e8 000012e3: JUMPI 000012e4: PUSH1 0x00 000012e6: DUP1 000012e7: REVERT 000012e8: JUMPDEST 000012e9: POP 000012ea: GAS 000012eb: DELEGATECALL 000012ec: ISZERO 000012ed: DUP1 000012ee: ISZERO 000012ef: PUSH2 0x12fc 000012f2: JUMPI 000012f3: RETURNDATASIZE 000012f4: PUSH1 0x00 000012f6: DUP1 000012f7: RETURNDATACOPY 000012f8: RETURNDATASIZE 000012f9: PUSH1 0x00 000012fb: REVERT 000012fc: JUMPDEST 000012fd: POP 000012fe: POP 000012ff: POP 00001300: POP 00001301: PUSH1 0x40 00001303: MLOAD 00001304: RETURNDATASIZE 00001305: PUSH1 0x20 00001307: DUP2 00001308: LT 00001309: ISZERO 0000130a: PUSH2 0x1312 0000130d: JUMPI 0000130e: PUSH1 0x00 00001310: DUP1 00001311: REVERT 00001312: JUMPDEST 00001313: POP 00001314: MLOAD 00001315: SWAP4 00001316: SWAP3 00001317: POP 00001318: POP 00001319: POP 0000131a: JUMP 0000131b: JUMPDEST 0000131c: PUSH1 0x00 0000131e: DUP1 0000131f: SLOAD 00001320: PUSH1 0x01 00001322: ADD 00001323: DUP1 00001324: DUP3 00001325: SSTORE 00001326: PUSH1 0x40 00001328: DUP1 00001329: MLOAD 0000132a: PUSH4 0x19818cd3 0000132f: PUSH1 0xe0 00001331: SHL 00001332: DUP2 00001333: MSTORE 00001334: PUSH1 0x0b 00001336: PUSH1 0x04 00001338: DUP3 00001339: ADD 0000133a: MSTORE 0000133b: PUSH1 0x01 0000133d: PUSH1 0x01 0000133f: PUSH1 0xa0 00001341: SHL 00001342: SUB 00001343: DUP7 00001344: AND 00001345: PUSH1 0x24 00001347: DUP3 00001348: ADD 00001349: MSTORE 0000134a: PUSH1 0x44 0000134c: DUP2 0000134d: ADD 0000134e: DUP6 0000134f: SWAP1 00001350: MSTORE 00001351: SWAP1 00001352: MLOAD 00001353: SWAP2 00001354: SWAP3 00001355: SWAP2 00001356: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 0000136b: SWAP2 0000136c: PUSH4 0x19818cd3 00001371: SWAP2 00001372: PUSH1 0x64 00001374: DUP1 00001375: DUP4 00001376: ADD 00001377: SWAP3 00001378: PUSH1 0x20 0000137a: SWAP3 0000137b: SWAP2 0000137c: SWAP1 0000137d: DUP3 0000137e: SWAP1 0000137f: SUB 00001380: ADD 00001381: DUP2 00001382: DUP7 00001383: DUP1 00001384: EXTCODESIZE 00001385: ISZERO 00001386: DUP1 00001387: ISZERO 00001388: PUSH2 0x1390 0000138b: JUMPI 0000138c: PUSH1 0x00 0000138e: DUP1 0000138f: REVERT 00001390: JUMPDEST 00001391: POP 00001392: GAS 00001393: DELEGATECALL 00001394: ISZERO 00001395: DUP1 00001396: ISZERO 00001397: PUSH2 0x13a4 0000139a: JUMPI 0000139b: RETURNDATASIZE 0000139c: PUSH1 0x00 0000139e: DUP1 0000139f: RETURNDATACOPY 000013a0: RETURNDATASIZE 000013a1: PUSH1 0x00 000013a3: REVERT 000013a4: JUMPDEST 000013a5: POP 000013a6: POP 000013a7: POP 000013a8: POP 000013a9: PUSH1 0x40 000013ab: MLOAD 000013ac: RETURNDATASIZE 000013ad: PUSH1 0x20 000013af: DUP2 000013b0: LT 000013b1: ISZERO 000013b2: PUSH2 0x13ba 000013b5: JUMPI 000013b6: PUSH1 0x00 000013b8: DUP1 000013b9: REVERT 000013ba: JUMPDEST 000013bb: POP 000013bc: MLOAD 000013bd: PUSH1 0x1b 000013bf: SLOAD 000013c0: PUSH1 0x40 000013c2: DUP1 000013c3: MLOAD 000013c4: PUSH4 0xba7bffd3 000013c9: PUSH1 0xe0 000013cb: SHL 000013cc: DUP2 000013cd: MSTORE 000013ce: PUSH1 0x01 000013d0: PUSH1 0x01 000013d2: PUSH1 0xa0 000013d4: SHL 000013d5: SUB 000013d6: DUP9 000013d7: DUP2 000013d8: AND 000013d9: PUSH1 0x04 000013db: DUP4 000013dc: ADD 000013dd: MSTORE 000013de: SWAP2 000013df: MLOAD 000013e0: SWAP4 000013e1: SWAP5 000013e2: POP 000013e3: PUSH1 0x00 000013e5: SWAP4 000013e6: SWAP2 000013e7: SWAP1 000013e8: SWAP3 000013e9: AND 000013ea: SWAP2 000013eb: PUSH4 0xba7bffd3 000013f0: SWAP2 000013f1: PUSH1 0x24 000013f3: DUP1 000013f4: DUP4 000013f5: ADD 000013f6: SWAP3 000013f7: PUSH1 0x20 000013f9: SWAP3 000013fa: SWAP2 000013fb: SWAP1 000013fc: DUP3 000013fd: SWAP1 000013fe: SUB 000013ff: ADD 00001400: DUP2 00001401: DUP7 00001402: DUP1 00001403: EXTCODESIZE 00001404: ISZERO 00001405: DUP1 00001406: ISZERO 00001407: PUSH2 0x140f 0000140a: JUMPI 0000140b: PUSH1 0x00 0000140d: DUP1 0000140e: REVERT 0000140f: JUMPDEST 00001410: POP 00001411: GAS 00001412: STATICCALL 00001413: ISZERO 00001414: DUP1 00001415: ISZERO 00001416: PUSH2 0x1423 00001419: JUMPI 0000141a: RETURNDATASIZE 0000141b: PUSH1 0x00 0000141d: DUP1 0000141e: RETURNDATACOPY 0000141f: RETURNDATASIZE 00001420: PUSH1 0x00 00001422: REVERT 00001423: JUMPDEST 00001424: POP 00001425: POP 00001426: POP 00001427: POP 00001428: PUSH1 0x40 0000142a: MLOAD 0000142b: RETURNDATASIZE 0000142c: PUSH1 0x20 0000142e: DUP2 0000142f: LT 00001430: ISZERO 00001431: PUSH2 0x1439 00001434: JUMPI 00001435: PUSH1 0x00 00001437: DUP1 00001438: REVERT 00001439: JUMPDEST 0000143a: POP 0000143b: MLOAD 0000143c: PUSH1 0x40 0000143e: MLOAD 0000143f: PUSH1 0x01 00001441: PUSH1 0x01 00001443: PUSH1 0xa0 00001445: SHL 00001446: SUB 00001447: SWAP1 00001448: SWAP2 00001449: AND 0000144a: SWAP1 0000144b: DUP4 0000144c: SWAP1 0000144d: PUSH1 0x00 0000144f: DUP2 00001450: DUP2 00001451: DUP2 00001452: DUP6 00001453: DUP8 00001454: GAS 00001455: CALL 00001456: SWAP3 00001457: POP 00001458: POP 00001459: POP 0000145a: RETURNDATASIZE 0000145b: DUP1 0000145c: PUSH1 0x00 0000145e: DUP2 0000145f: EQ 00001460: PUSH2 0x1485 00001463: JUMPI 00001464: PUSH1 0x40 00001466: MLOAD 00001467: SWAP2 00001468: POP 00001469: PUSH1 0x1f 0000146b: NOT 0000146c: PUSH1 0x3f 0000146e: RETURNDATASIZE 0000146f: ADD 00001470: AND 00001471: DUP3 00001472: ADD 00001473: PUSH1 0x40 00001475: MSTORE 00001476: RETURNDATASIZE 00001477: DUP3 00001478: MSTORE 00001479: RETURNDATASIZE 0000147a: PUSH1 0x00 0000147c: PUSH1 0x20 0000147e: DUP5 0000147f: ADD 00001480: RETURNDATACOPY 00001481: PUSH2 0x148a 00001484: JUMP 00001485: JUMPDEST 00001486: PUSH1 0x60 00001488: SWAP2 00001489: POP 0000148a: JUMPDEST 0000148b: POP 0000148c: POP 0000148d: SWAP1 0000148e: POP 0000148f: DUP1 00001490: ISZERO 00001491: PUSH2 0x155e 00001494: JUMPI 00001495: PUSH1 0x1b 00001497: SLOAD 00001498: PUSH1 0x40 0000149a: DUP1 0000149b: MLOAD 0000149c: PUSH4 0xba7bffd3 000014a1: PUSH1 0xe0 000014a3: SHL 000014a4: DUP2 000014a5: MSTORE 000014a6: PUSH1 0x01 000014a8: PUSH1 0x01 000014aa: PUSH1 0xa0 000014ac: SHL 000014ad: SUB 000014ae: DUP9 000014af: DUP2 000014b0: AND 000014b1: PUSH1 0x04 000014b3: DUP4 000014b4: ADD 000014b5: MSTORE 000014b6: SWAP2 000014b7: MLOAD 000014b8: SWAP2 000014b9: SWAP1 000014ba: SWAP3 000014bb: AND 000014bc: SWAP2 000014bd: PUSH4 0xba7bffd3 000014c2: SWAP2 000014c3: PUSH1 0x24 000014c5: DUP1 000014c6: DUP4 000014c7: ADD 000014c8: SWAP3 000014c9: PUSH1 0x20 000014cb: SWAP3 000014cc: SWAP2 000014cd: SWAP1 000014ce: DUP3 000014cf: SWAP1 000014d0: SUB 000014d1: ADD 000014d2: DUP2 000014d3: DUP7 000014d4: DUP1 000014d5: EXTCODESIZE 000014d6: ISZERO 000014d7: DUP1 000014d8: ISZERO 000014d9: PUSH2 0x14e1 000014dc: JUMPI 000014dd: PUSH1 0x00 000014df: DUP1 000014e0: REVERT 000014e1: JUMPDEST 000014e2: POP 000014e3: GAS 000014e4: STATICCALL 000014e5: ISZERO 000014e6: DUP1 000014e7: ISZERO 000014e8: PUSH2 0x14f5 000014eb: JUMPI 000014ec: RETURNDATASIZE 000014ed: PUSH1 0x00 000014ef: DUP1 000014f0: RETURNDATACOPY 000014f1: RETURNDATASIZE 000014f2: PUSH1 0x00 000014f4: REVERT 000014f5: JUMPDEST 000014f6: POP 000014f7: POP 000014f8: POP 000014f9: POP 000014fa: PUSH1 0x40 000014fc: MLOAD 000014fd: RETURNDATASIZE 000014fe: PUSH1 0x20 00001500: DUP2 00001501: LT 00001502: ISZERO 00001503: PUSH2 0x150b 00001506: JUMPI 00001507: PUSH1 0x00 00001509: DUP1 0000150a: REVERT 0000150b: JUMPDEST 0000150c: POP 0000150d: MLOAD 0000150e: PUSH1 0x40 00001510: DUP1 00001511: MLOAD 00001512: PUSH1 0x01 00001514: PUSH1 0x01 00001516: PUSH1 0xa0 00001518: SHL 00001519: SUB 0000151a: DUP9 0000151b: DUP2 0000151c: AND 0000151d: DUP3 0000151e: MSTORE 0000151f: PUSH1 0x20 00001521: DUP3 00001522: ADD 00001523: DUP7 00001524: SWAP1 00001525: MSTORE 00001526: DUP2 00001527: DUP4 00001528: ADD 00001529: DUP9 0000152a: SWAP1 0000152b: MSTORE 0000152c: SWAP2 0000152d: MLOAD 0000152e: SWAP2 0000152f: SWAP1 00001530: SWAP3 00001531: AND 00001532: SWAP2 00001533: PUSH32 0xd2d1d8bb9db82c3480418ddcddf25a021102ad139edec2a62b274595d408a88d 00001554: SWAP2 00001555: SWAP1 00001556: DUP2 00001557: SWAP1 00001558: SUB 00001559: PUSH1 0x60 0000155b: ADD 0000155c: SWAP1 0000155d: LOG2 0000155e: JUMPDEST 0000155f: POP 00001560: POP 00001561: PUSH1 0x00 00001563: SLOAD 00001564: DUP2 00001565: EQ 00001566: PUSH2 0x15b6 00001569: JUMPI 0000156a: PUSH1 0x40 0000156c: DUP1 0000156d: MLOAD 0000156e: PUSH3 0x461bcd 00001572: PUSH1 0xe5 00001574: SHL 00001575: DUP2 00001576: MSTORE 00001577: PUSH1 0x20 00001579: PUSH1 0x04 0000157b: DUP3 0000157c: ADD 0000157d: MSTORE 0000157e: PUSH1 0x1f 00001580: PUSH1 0x24 00001582: DUP3 00001583: ADD 00001584: MSTORE 00001585: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000015a6: PUSH1 0x44 000015a8: DUP3 000015a9: ADD 000015aa: MSTORE 000015ab: SWAP1 000015ac: MLOAD 000015ad: SWAP1 000015ae: DUP2 000015af: SWAP1 000015b0: SUB 000015b1: PUSH1 0x64 000015b3: ADD 000015b4: SWAP1 000015b5: REVERT 000015b6: JUMPDEST 000015b7: POP 000015b8: POP 000015b9: POP 000015ba: JUMP 000015bb: JUMPDEST 000015bc: PUSH1 0x00 000015be: PUSH2 0x15d4 000015c1: PUSH1 0x1e 000015c3: SLOAD 000015c4: PUSH1 0x23 000015c6: SLOAD 000015c7: PUSH2 0x33ab 000015ca: SWAP1 000015cb: SWAP2 000015cc: SWAP1 000015cd: PUSH4 0xffffffff 000015d2: AND 000015d3: JUMP 000015d4: JUMPDEST 000015d5: SWAP1 000015d6: POP 000015d7: SWAP1 000015d8: JUMP 000015d9: JUMPDEST 000015da: PUSH1 0x1b 000015dc: SLOAD 000015dd: PUSH1 0x40 000015df: DUP1 000015e0: MLOAD 000015e1: PUSH3 0x4298fb 000015e5: PUSH1 0xe6 000015e7: SHL 000015e8: DUP2 000015e9: MSTORE 000015ea: PUSH1 0x01 000015ec: PUSH1 0x01 000015ee: PUSH1 0xa0 000015f0: SHL 000015f1: SUB 000015f2: DUP5 000015f3: DUP2 000015f4: AND 000015f5: PUSH1 0x04 000015f7: DUP4 000015f8: ADD 000015f9: MSTORE 000015fa: ADDRESS 000015fb: PUSH1 0x24 000015fd: DUP4 000015fe: ADD 000015ff: MSTORE 00001600: SWAP2 00001601: MLOAD 00001602: PUSH1 0x00 00001604: SWAP4 00001605: SWAP3 00001606: SWAP1 00001607: SWAP3 00001608: AND 00001609: SWAP2 0000160a: PUSH4 0x10a63ec0 0000160f: SWAP2 00001610: PUSH1 0x44 00001612: DUP1 00001613: DUP3 00001614: ADD 00001615: SWAP3 00001616: PUSH1 0x20 00001618: SWAP3 00001619: SWAP1 0000161a: SWAP2 0000161b: SWAP1 0000161c: DUP3 0000161d: SWAP1 0000161e: SUB 0000161f: ADD 00001620: DUP2 00001621: DUP7 00001622: DUP1 00001623: EXTCODESIZE 00001624: ISZERO 00001625: DUP1 00001626: ISZERO 00001627: PUSH2 0x162f 0000162a: JUMPI 0000162b: PUSH1 0x00 0000162d: DUP1 0000162e: REVERT 0000162f: JUMPDEST 00001630: POP 00001631: GAS 00001632: STATICCALL 00001633: ISZERO 00001634: DUP1 00001635: ISZERO 00001636: PUSH2 0x1258 00001639: JUMPI 0000163a: RETURNDATASIZE 0000163b: PUSH1 0x00 0000163d: DUP1 0000163e: RETURNDATACOPY 0000163f: RETURNDATASIZE 00001640: PUSH1 0x00 00001642: REVERT 00001643: JUMPDEST 00001644: PUSH1 0x00 00001646: PUSH1 0x0b 00001648: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 0000165d: PUSH4 0x4732bd3b 00001662: SWAP1 00001663: SWAP2 00001664: DUP5 00001665: PUSH1 0x40 00001667: MLOAD 00001668: DUP4 00001669: PUSH4 0xffffffff 0000166e: AND 0000166f: PUSH1 0xe0 00001671: SHL 00001672: DUP2 00001673: MSTORE 00001674: PUSH1 0x04 00001676: ADD 00001677: DUP1 00001678: DUP4 00001679: DUP2 0000167a: MSTORE 0000167b: PUSH1 0x20 0000167d: ADD 0000167e: DUP3 0000167f: DUP2 00001680: MSTORE 00001681: PUSH1 0x20 00001683: ADD 00001684: SWAP3 00001685: POP 00001686: POP 00001687: POP 00001688: PUSH1 0x20 0000168a: PUSH1 0x40 0000168c: MLOAD 0000168d: DUP1 0000168e: DUP4 0000168f: SUB 00001690: DUP2 00001691: DUP7 00001692: DUP1 00001693: EXTCODESIZE 00001694: ISZERO 00001695: DUP1 00001696: ISZERO 00001697: PUSH2 0x1244 0000169a: JUMPI 0000169b: PUSH1 0x00 0000169d: DUP1 0000169e: REVERT 0000169f: JUMPDEST 000016a0: PUSH1 0x2b 000016a2: DUP1 000016a3: SLOAD 000016a4: PUSH1 0x40 000016a6: DUP1 000016a7: MLOAD 000016a8: PUSH1 0x20 000016aa: PUSH1 0x02 000016ac: PUSH1 0x01 000016ae: DUP6 000016af: AND 000016b0: ISZERO 000016b1: PUSH2 0x0100 000016b4: MUL 000016b5: PUSH1 0x00 000016b7: NOT 000016b8: ADD 000016b9: SWAP1 000016ba: SWAP5 000016bb: AND 000016bc: SWAP4 000016bd: SWAP1 000016be: SWAP4 000016bf: DIV 000016c0: PUSH1 0x1f 000016c2: DUP2 000016c3: ADD 000016c4: DUP5 000016c5: SWAP1 000016c6: DIV 000016c7: DUP5 000016c8: MUL 000016c9: DUP3 000016ca: ADD 000016cb: DUP5 000016cc: ADD 000016cd: SWAP1 000016ce: SWAP3 000016cf: MSTORE 000016d0: DUP2 000016d1: DUP2 000016d2: MSTORE 000016d3: SWAP3 000016d4: SWAP2 000016d5: DUP4 000016d6: ADD 000016d7: DUP3 000016d8: DUP3 000016d9: DUP1 000016da: ISZERO 000016db: PUSH2 0x1725 000016de: JUMPI 000016df: DUP1 000016e0: PUSH1 0x1f 000016e2: LT 000016e3: PUSH2 0x16fa 000016e6: JUMPI 000016e7: PUSH2 0x0100 000016ea: DUP1 000016eb: DUP4 000016ec: SLOAD 000016ed: DIV 000016ee: MUL 000016ef: DUP4 000016f0: MSTORE 000016f1: SWAP2 000016f2: PUSH1 0x20 000016f4: ADD 000016f5: SWAP2 000016f6: PUSH2 0x1725 000016f9: JUMP 000016fa: JUMPDEST 000016fb: DUP3 000016fc: ADD 000016fd: SWAP2 000016fe: SWAP1 000016ff: PUSH1 0x00 00001701: MSTORE 00001702: PUSH1 0x20 00001704: PUSH1 0x00 00001706: KECCAK256 00001707: SWAP1 00001708: JUMPDEST 00001709: DUP2 0000170a: SLOAD 0000170b: DUP2 0000170c: MSTORE 0000170d: SWAP1 0000170e: PUSH1 0x01 00001710: ADD 00001711: SWAP1 00001712: PUSH1 0x20 00001714: ADD 00001715: DUP1 00001716: DUP4 00001717: GT 00001718: PUSH2 0x1708 0000171b: JUMPI 0000171c: DUP3 0000171d: SWAP1 0000171e: SUB 0000171f: PUSH1 0x1f 00001721: AND 00001722: DUP3 00001723: ADD 00001724: SWAP2 00001725: JUMPDEST 00001726: POP 00001727: POP 00001728: POP 00001729: POP 0000172a: POP 0000172b: DUP2 0000172c: JUMP 0000172d: JUMPDEST 0000172e: PUSH1 0x60 00001730: PUSH1 0x01 00001732: PUSH1 0x00 00001734: ADD 00001735: DUP1 00001736: SLOAD 00001737: DUP1 00001738: PUSH1 0x20 0000173a: MUL 0000173b: PUSH1 0x20 0000173d: ADD 0000173e: PUSH1 0x40 00001740: MLOAD 00001741: SWAP1 00001742: DUP2 00001743: ADD 00001744: PUSH1 0x40 00001746: MSTORE 00001747: DUP1 00001748: SWAP3 00001749: SWAP2 0000174a: SWAP1 0000174b: DUP2 0000174c: DUP2 0000174d: MSTORE 0000174e: PUSH1 0x20 00001750: ADD 00001751: DUP3 00001752: DUP1 00001753: SLOAD 00001754: DUP1 00001755: ISZERO 00001756: PUSH2 0x17b2 00001759: JUMPI 0000175a: PUSH1 0x20 0000175c: MUL 0000175d: DUP3 0000175e: ADD 0000175f: SWAP2 00001760: SWAP1 00001761: PUSH1 0x00 00001763: MSTORE 00001764: PUSH1 0x20 00001766: PUSH1 0x00 00001768: KECCAK256 00001769: SWAP1 0000176a: PUSH1 0x00 0000176c: SWAP1 0000176d: JUMPDEST 0000176e: DUP3 0000176f: DUP3 00001770: SWAP1 00001771: SLOAD 00001772: SWAP1 00001773: PUSH2 0x0100 00001776: EXP 00001777: SWAP1 00001778: DIV 00001779: PUSH8 0xffffffffffffffff 00001782: AND 00001783: PUSH8 0xffffffffffffffff 0000178c: AND 0000178d: DUP2 0000178e: MSTORE 0000178f: PUSH1 0x20 00001791: ADD 00001792: SWAP1 00001793: PUSH1 0x08 00001795: ADD 00001796: SWAP1 00001797: PUSH1 0x20 00001799: DUP3 0000179a: PUSH1 0x07 0000179c: ADD 0000179d: DIV 0000179e: SWAP3 0000179f: DUP4 000017a0: ADD 000017a1: SWAP3 000017a2: PUSH1 0x01 000017a4: SUB 000017a5: DUP3 000017a6: MUL 000017a7: SWAP2 000017a8: POP 000017a9: DUP1 000017aa: DUP5 000017ab: GT 000017ac: PUSH2 0x176d 000017af: JUMPI 000017b0: SWAP1 000017b1: POP 000017b2: JUMPDEST 000017b3: POP 000017b4: POP 000017b5: POP 000017b6: POP 000017b7: POP 000017b8: SWAP1 000017b9: POP 000017ba: SWAP1 000017bb: JUMP 000017bc: JUMPDEST 000017bd: PUSH1 0x1f 000017bf: SLOAD 000017c0: DUP2 000017c1: JUMP 000017c2: JUMPDEST 000017c3: PUSH1 0x20 000017c5: SLOAD 000017c6: DUP2 000017c7: JUMP 000017c8: JUMPDEST 000017c9: PUSH1 0x29 000017cb: SLOAD 000017cc: ISZERO 000017cd: ISZERO 000017ce: SWAP1 000017cf: JUMP 000017d0: JUMPDEST 000017d1: PUSH1 0x2a 000017d3: SLOAD 000017d4: DUP2 000017d5: JUMP 000017d6: JUMPDEST 000017d7: PUSH1 0x00 000017d9: DUP1 000017da: SLOAD 000017db: PUSH1 0x01 000017dd: ADD 000017de: SWAP1 000017df: DUP2 000017e0: SWAP1 000017e1: SSTORE 000017e2: PUSH1 0x60 000017e4: PUSH2 0x17eb 000017e7: PUSH2 0x0e50 000017ea: JUMP 000017eb: JUMPDEST 000017ec: SWAP1 000017ed: POP 000017ee: PUSH1 0x15 000017f0: PUSH20 0xaac423edc4e3ee9ef81517e8093d52737165b71f 00001805: PUSH4 0xda0a1689 0000180a: SWAP1 0000180b: SWAP2 0000180c: DUP10 0000180d: DUP10 0000180e: DUP10 0000180f: DUP10 00001810: DUP10 00001811: DUP9 00001812: PUSH1 0x01 00001814: PUSH1 0x03 00001816: ADD 00001817: SLOAD 00001818: PUSH1 0x01 0000181a: PUSH1 0x04 0000181c: ADD 0000181d: SLOAD 0000181e: ADD 0000181f: PUSH1 0x40 00001821: MLOAD 00001822: DUP10 00001823: PUSH4 0xffffffff 00001828: AND 00001829: PUSH1 0xe0 0000182b: SHL 0000182c: DUP2 0000182d: MSTORE 0000182e: PUSH1 0x04 00001830: ADD 00001831: DUP1 00001832: DUP10 00001833: DUP2 00001834: MSTORE 00001835: PUSH1 0x20 00001837: ADD 00001838: DUP9 00001839: DUP2 0000183a: MSTORE 0000183b: PUSH1 0x20 0000183d: ADD 0000183e: DUP1 0000183f: PUSH1 0x20 00001841: ADD 00001842: DUP1 00001843: PUSH1 0x20 00001845: ADD 00001846: DUP1 00001847: PUSH1 0x20 00001849: ADD 0000184a: DUP1 0000184b: PUSH1 0x20 0000184d: ADD 0000184e: DUP1 0000184f: PUSH1 0x20 00001851: ADD 00001852: DUP8 00001853: DUP2 00001854: MSTORE 00001855: PUSH1 0x20 00001857: ADD 00001858: DUP7 00001859: DUP2 0000185a: SUB 0000185b: DUP7 0000185c: MSTORE 0000185d: DUP13 0000185e: DUP2 0000185f: DUP2 00001860: MLOAD 00001861: DUP2 00001862: MSTORE 00001863: PUSH1 0x20 00001865: ADD 00001866: SWAP2 00001867: POP 00001868: DUP1 00001869: MLOAD 0000186a: SWAP1 0000186b: PUSH1 0x20 0000186d: ADD 0000186e: SWAP1 0000186f: DUP1 00001870: DUP4 00001871: DUP4 00001872: PUSH1 0x00 00001874: JUMPDEST 00001875: DUP4 00001876: DUP2 00001877: LT 00001878: ISZERO 00001879: PUSH2 0x188c 0000187c: JUMPI 0000187d: DUP2 0000187e: DUP2 0000187f: ADD 00001880: MLOAD 00001881: DUP4 00001882: DUP3 00001883: ADD 00001884: MSTORE 00001885: PUSH1 0x20 00001887: ADD 00001888: PUSH2 0x1874 0000188b: JUMP 0000188c: JUMPDEST 0000188d: POP 0000188e: POP 0000188f: POP 00001890: POP 00001891: SWAP1 00001892: POP 00001893: SWAP1 00001894: DUP2 00001895: ADD 00001896: SWAP1 00001897: PUSH1 0x1f 00001899: AND 0000189a: DUP1 0000189b: ISZERO 0000189c: PUSH2 0x18b9 0000189f: JUMPI 000018a0: DUP1 000018a1: DUP3 000018a2: SUB 000018a3: DUP1 000018a4: MLOAD 000018a5: PUSH1 0x01 000018a7: DUP4 000018a8: PUSH1 0x20 000018aa: SUB 000018ab: PUSH2 0x0100 000018ae: EXP 000018af: SUB 000018b0: NOT 000018b1: AND 000018b2: DUP2 000018b3: MSTORE 000018b4: PUSH1 0x20 000018b6: ADD 000018b7: SWAP2 000018b8: POP 000018b9: JUMPDEST 000018ba: POP 000018bb: DUP7 000018bc: DUP2 000018bd: SUB 000018be: DUP6 000018bf: MSTORE 000018c0: DUP12 000018c1: MLOAD 000018c2: DUP2 000018c3: MSTORE 000018c4: DUP12 000018c5: MLOAD 000018c6: PUSH1 0x20 000018c8: SWAP2 000018c9: DUP3 000018ca: ADD 000018cb: SWAP2 000018cc: DUP14 000018cd: ADD 000018ce: SWAP1 000018cf: DUP1 000018d0: DUP4 000018d1: DUP4 000018d2: PUSH1 0x00 000018d4: JUMPDEST 000018d5: DUP4 000018d6: DUP2 000018d7: LT 000018d8: ISZERO 000018d9: PUSH2 0x18ec 000018dc: JUMPI 000018dd: DUP2 000018de: DUP2 000018df: ADD 000018e0: MLOAD 000018e1: DUP4 000018e2: DUP3 000018e3: ADD 000018e4: MSTORE 000018e5: PUSH1 0x20 000018e7: ADD 000018e8: PUSH2 0x18d4 000018eb: JUMP 000018ec: JUMPDEST 000018ed: POP 000018ee: POP 000018ef: POP 000018f0: POP 000018f1: SWAP1 000018f2: POP 000018f3: SWAP1 000018f4: DUP2 000018f5: ADD 000018f6: SWAP1 000018f7: PUSH1 0x1f 000018f9: AND 000018fa: DUP1 000018fb: ISZERO 000018fc: PUSH2 0x1919 000018ff: JUMPI 00001900: DUP1 00001901: DUP3 00001902: SUB 00001903: DUP1 00001904: MLOAD 00001905: PUSH1 0x01 00001907: DUP4 00001908: PUSH1 0x20 0000190a: SUB 0000190b: PUSH2 0x0100 0000190e: EXP 0000190f: SUB 00001910: NOT 00001911: AND 00001912: DUP2 00001913: MSTORE 00001914: PUSH1 0x20 00001916: ADD 00001917: SWAP2 00001918: POP 00001919: JUMPDEST 0000191a: POP 0000191b: DUP7 0000191c: DUP2 0000191d: SUB 0000191e: DUP5 0000191f: MSTORE 00001920: DUP11 00001921: MLOAD 00001922: DUP2 00001923: MSTORE 00001924: DUP11 00001925: MLOAD 00001926: PUSH1 0x20 00001928: SWAP2 00001929: DUP3 0000192a: ADD 0000192b: SWAP2 0000192c: DUP13 0000192d: ADD 0000192e: SWAP1 0000192f: DUP1 00001930: DUP4 00001931: DUP4 00001932: PUSH1 0x00 00001934: JUMPDEST 00001935: DUP4 00001936: DUP2 00001937: LT 00001938: ISZERO 00001939: PUSH2 0x194c 0000193c: JUMPI 0000193d: DUP2 0000193e: DUP2 0000193f: ADD 00001940: MLOAD 00001941: DUP4 00001942: DUP3 00001943: ADD 00001944: MSTORE 00001945: PUSH1 0x20 00001947: ADD 00001948: PUSH2 0x1934 0000194b: JUMP 0000194c: JUMPDEST 0000194d: POP 0000194e: POP 0000194f: POP 00001950: POP 00001951: SWAP1 00001952: POP 00001953: SWAP1 00001954: DUP2 00001955: ADD 00001956: SWAP1 00001957: PUSH1 0x1f 00001959: AND 0000195a: DUP1 0000195b: ISZERO 0000195c: PUSH2 0x1979 0000195f: JUMPI 00001960: DUP1 00001961: DUP3 00001962: SUB 00001963: DUP1 00001964: MLOAD 00001965: PUSH1 0x01 00001967: DUP4 00001968: PUSH1 0x20 0000196a: SUB 0000196b: PUSH2 0x0100 0000196e: EXP 0000196f: SUB 00001970: NOT 00001971: AND 00001972: DUP2 00001973: MSTORE 00001974: PUSH1 0x20 00001976: ADD 00001977: SWAP2 00001978: POP 00001979: JUMPDEST 0000197a: POP 0000197b: DUP7 0000197c: DUP2 0000197d: SUB 0000197e: DUP4 0000197f: MSTORE 00001980: DUP10 00001981: MLOAD 00001982: DUP2 00001983: MSTORE 00001984: DUP10 00001985: MLOAD 00001986: PUSH1 0x20 00001988: SWAP2 00001989: DUP3 0000198a: ADD 0000198b: SWAP2 0000198c: DUP1 0000198d: DUP13 0000198e: ADD 0000198f: SWAP2 00001990: MUL 00001991: DUP1 00001992: DUP4 00001993: DUP4 00001994: PUSH1 0x00 00001996: JUMPDEST 00001997: DUP4 00001998: DUP2 00001999: LT 0000199a: ISZERO 0000199b: PUSH2 0x19ae 0000199e: JUMPI 0000199f: DUP2 000019a0: DUP2 000019a1: ADD 000019a2: MLOAD 000019a3: DUP4 000019a4: DUP3 000019a5: ADD 000019a6: MSTORE 000019a7: PUSH1 0x20 000019a9: ADD 000019aa: PUSH2 0x1996 000019ad: JUMP 000019ae: JUMPDEST 000019af: POP 000019b0: POP 000019b1: POP 000019b2: POP 000019b3: SWAP1 000019b4: POP 000019b5: ADD 000019b6: DUP7 000019b7: DUP2 000019b8: SUB 000019b9: DUP3 000019ba: MSTORE 000019bb: DUP9 000019bc: DUP2 000019bd: DUP2 000019be: MLOAD 000019bf: DUP2 000019c0: MSTORE 000019c1: PUSH1 0x20 000019c3: ADD 000019c4: SWAP2 000019c5: POP 000019c6: DUP1 000019c7: MLOAD 000019c8: SWAP1 000019c9: PUSH1 0x20 000019cb: ADD 000019cc: SWAP1 000019cd: PUSH1 0x20 000019cf: MUL 000019d0: DUP1 000019d1: DUP4 000019d2: DUP4 000019d3: PUSH1 0x00 000019d5: JUMPDEST 000019d6: DUP4 000019d7: DUP2 000019d8: LT 000019d9: ISZERO 000019da: PUSH2 0x19ed 000019dd: JUMPI 000019de: DUP2 000019df: DUP2 000019e0: ADD 000019e1: MLOAD 000019e2: DUP4 000019e3: DUP3 000019e4: ADD 000019e5: MSTORE 000019e6: PUSH1 0x20 000019e8: ADD 000019e9: PUSH2 0x19d5 000019ec: JUMP 000019ed: JUMPDEST 000019ee: POP 000019ef: POP 000019f0: POP 000019f1: POP 000019f2: SWAP1 000019f3: POP 000019f4: ADD 000019f5: SWAP14 000019f6: POP 000019f7: POP 000019f8: POP 000019f9: POP 000019fa: POP 000019fb: POP 000019fc: POP 000019fd: POP 000019fe: POP 000019ff: POP 00001a00: POP 00001a01: POP 00001a02: POP 00001a03: POP 00001a04: PUSH1 0x00 00001a06: PUSH1 0x40 00001a08: MLOAD 00001a09: DUP1 00001a0a: DUP4 00001a0b: SUB 00001a0c: DUP2 00001a0d: DUP7 00001a0e: DUP1 00001a0f: EXTCODESIZE 00001a10: ISZERO 00001a11: DUP1 00001a12: ISZERO 00001a13: PUSH2 0x1a1b 00001a16: JUMPI 00001a17: PUSH1 0x00 00001a19: DUP1 00001a1a: REVERT 00001a1b: JUMPDEST 00001a1c: POP 00001a1d: GAS 00001a1e: DELEGATECALL 00001a1f: ISZERO 00001a20: DUP1 00001a21: ISZERO 00001a22: PUSH2 0x1a2f 00001a25: JUMPI 00001a26: RETURNDATASIZE 00001a27: PUSH1 0x00 00001a29: DUP1 00001a2a: RETURNDATACOPY 00001a2b: RETURNDATASIZE 00001a2c: PUSH1 0x00 00001a2e: REVERT 00001a2f: JUMPDEST 00001a30: POP 00001a31: POP 00001a32: POP 00001a33: POP 00001a34: PUSH1 0x0b 00001a36: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 00001a4b: PUSH4 0xe130bd67 00001a50: SWAP1 00001a51: SWAP2 00001a52: DUP9 00001a53: DUP5 00001a54: DUP10 00001a55: PUSH1 0x40 00001a57: MLOAD 00001a58: DUP6 00001a59: PUSH4 0xffffffff 00001a5e: AND 00001a5f: PUSH1 0xe0 00001a61: SHL 00001a62: DUP2 00001a63: MSTORE 00001a64: PUSH1 0x04 00001a66: ADD 00001a67: DUP1 00001a68: DUP6 00001a69: DUP2 00001a6a: MSTORE 00001a6b: PUSH1 0x20 00001a6d: ADD 00001a6e: DUP1 00001a6f: PUSH1 0x20 00001a71: ADD 00001a72: DUP1 00001a73: PUSH1 0x20 00001a75: ADD 00001a76: DUP1 00001a77: PUSH1 0x20 00001a79: ADD 00001a7a: DUP5 00001a7b: DUP2 00001a7c: SUB 00001a7d: DUP5 00001a7e: MSTORE 00001a7f: DUP8 00001a80: DUP2 00001a81: DUP2 00001a82: MLOAD 00001a83: DUP2 00001a84: MSTORE 00001a85: PUSH1 0x20 00001a87: ADD 00001a88: SWAP2 00001a89: POP 00001a8a: DUP1 00001a8b: MLOAD 00001a8c: SWAP1 00001a8d: PUSH1 0x20 00001a8f: ADD 00001a90: SWAP1 00001a91: DUP1 00001a92: DUP4 00001a93: DUP4 00001a94: PUSH1 0x00 00001a96: JUMPDEST 00001a97: DUP4 00001a98: DUP2 00001a99: LT 00001a9a: ISZERO 00001a9b: PUSH2 0x1aae 00001a9e: JUMPI 00001a9f: DUP2 00001aa0: DUP2 00001aa1: ADD 00001aa2: MLOAD 00001aa3: DUP4 00001aa4: DUP3 00001aa5: ADD 00001aa6: MSTORE 00001aa7: PUSH1 0x20 00001aa9: ADD 00001aaa: PUSH2 0x1a96 00001aad: JUMP 00001aae: JUMPDEST 00001aaf: POP 00001ab0: POP 00001ab1: POP 00001ab2: POP 00001ab3: SWAP1 00001ab4: POP 00001ab5: SWAP1 00001ab6: DUP2 00001ab7: ADD 00001ab8: SWAP1 00001ab9: PUSH1 0x1f 00001abb: AND 00001abc: DUP1 00001abd: ISZERO 00001abe: PUSH2 0x1adb 00001ac1: JUMPI 00001ac2: DUP1 00001ac3: DUP3 00001ac4: SUB 00001ac5: DUP1 00001ac6: MLOAD 00001ac7: PUSH1 0x01 00001ac9: DUP4 00001aca: PUSH1 0x20 00001acc: SUB 00001acd: PUSH2 0x0100 00001ad0: EXP 00001ad1: SUB 00001ad2: NOT 00001ad3: AND 00001ad4: DUP2 00001ad5: MSTORE 00001ad6: PUSH1 0x20 00001ad8: ADD 00001ad9: SWAP2 00001ada: POP 00001adb: JUMPDEST 00001adc: POP 00001add: DUP5 00001ade: DUP2 00001adf: SUB 00001ae0: DUP4 00001ae1: MSTORE 00001ae2: DUP7 00001ae3: MLOAD 00001ae4: DUP2 00001ae5: MSTORE 00001ae6: DUP7 00001ae7: MLOAD 00001ae8: PUSH1 0x20 00001aea: SWAP2 00001aeb: DUP3 00001aec: ADD 00001aed: SWAP2 00001aee: DUP1 00001aef: DUP10 00001af0: ADD 00001af1: SWAP2 00001af2: MUL 00001af3: DUP1 00001af4: DUP4 00001af5: DUP4 00001af6: PUSH1 0x00 00001af8: JUMPDEST 00001af9: DUP4 00001afa: DUP2 00001afb: LT 00001afc: ISZERO 00001afd: PUSH2 0x1b10 00001b00: JUMPI 00001b01: DUP2 00001b02: DUP2 00001b03: ADD 00001b04: MLOAD 00001b05: DUP4 00001b06: DUP3 00001b07: ADD 00001b08: MSTORE 00001b09: PUSH1 0x20 00001b0b: ADD 00001b0c: PUSH2 0x1af8 00001b0f: JUMP 00001b10: JUMPDEST 00001b11: POP 00001b12: POP 00001b13: POP 00001b14: POP 00001b15: SWAP1 00001b16: POP 00001b17: ADD 00001b18: DUP5 00001b19: DUP2 00001b1a: SUB 00001b1b: DUP3 00001b1c: MSTORE 00001b1d: DUP6 00001b1e: DUP2 00001b1f: DUP2 00001b20: MLOAD 00001b21: DUP2 00001b22: MSTORE 00001b23: PUSH1 0x20 00001b25: ADD 00001b26: SWAP2 00001b27: POP 00001b28: DUP1 00001b29: MLOAD 00001b2a: SWAP1 00001b2b: PUSH1 0x20 00001b2d: ADD 00001b2e: SWAP1 00001b2f: DUP1 00001b30: DUP4 00001b31: DUP4 00001b32: PUSH1 0x00 00001b34: JUMPDEST 00001b35: DUP4 00001b36: DUP2 00001b37: LT 00001b38: ISZERO 00001b39: PUSH2 0x1b4c 00001b3c: JUMPI 00001b3d: DUP2 00001b3e: DUP2 00001b3f: ADD 00001b40: MLOAD 00001b41: DUP4 00001b42: DUP3 00001b43: ADD 00001b44: MSTORE 00001b45: PUSH1 0x20 00001b47: ADD 00001b48: PUSH2 0x1b34 00001b4b: JUMP 00001b4c: JUMPDEST 00001b4d: POP 00001b4e: POP 00001b4f: POP 00001b50: POP 00001b51: SWAP1 00001b52: POP 00001b53: SWAP1 00001b54: DUP2 00001b55: ADD 00001b56: SWAP1 00001b57: PUSH1 0x1f 00001b59: AND 00001b5a: DUP1 00001b5b: ISZERO 00001b5c: PUSH2 0x1b79 00001b5f: JUMPI 00001b60: DUP1 00001b61: DUP3 00001b62: SUB 00001b63: DUP1 00001b64: MLOAD 00001b65: PUSH1 0x01 00001b67: DUP4 00001b68: PUSH1 0x20 00001b6a: SUB 00001b6b: PUSH2 0x0100 00001b6e: EXP 00001b6f: SUB 00001b70: NOT 00001b71: AND 00001b72: DUP2 00001b73: MSTORE 00001b74: PUSH1 0x20 00001b76: ADD 00001b77: SWAP2 00001b78: POP 00001b79: JUMPDEST 00001b7a: POP 00001b7b: SWAP8 00001b7c: POP 00001b7d: POP 00001b7e: POP 00001b7f: POP 00001b80: POP 00001b81: POP 00001b82: POP 00001b83: POP 00001b84: PUSH1 0x00 00001b86: PUSH1 0x40 00001b88: MLOAD 00001b89: DUP1 00001b8a: DUP4 00001b8b: SUB 00001b8c: DUP2 00001b8d: DUP7 00001b8e: DUP1 00001b8f: EXTCODESIZE 00001b90: ISZERO 00001b91: DUP1 00001b92: ISZERO 00001b93: PUSH2 0x1b9b 00001b96: JUMPI 00001b97: PUSH1 0x00 00001b99: DUP1 00001b9a: REVERT 00001b9b: JUMPDEST 00001b9c: POP 00001b9d: GAS 00001b9e: DELEGATECALL 00001b9f: ISZERO 00001ba0: DUP1 00001ba1: ISZERO 00001ba2: PUSH2 0x1baf 00001ba5: JUMPI 00001ba6: RETURNDATASIZE 00001ba7: PUSH1 0x00 00001ba9: DUP1 00001baa: RETURNDATACOPY 00001bab: RETURNDATASIZE 00001bac: PUSH1 0x00 00001bae: REVERT 00001baf: JUMPDEST 00001bb0: POP 00001bb1: POP 00001bb2: PUSH1 0x40 00001bb4: DUP1 00001bb5: MLOAD 00001bb6: PUSH4 0x250d2afd 00001bbb: PUSH1 0xe1 00001bbd: SHL 00001bbe: DUP2 00001bbf: MSTORE 00001bc0: PUSH1 0x0b 00001bc2: PUSH1 0x04 00001bc4: DUP3 00001bc5: ADD 00001bc6: DUP2 00001bc7: DUP2 00001bc8: MSTORE 00001bc9: PUSH1 0x24 00001bcb: DUP4 00001bcc: ADD 00001bcd: SWAP4 00001bce: DUP5 00001bcf: MSTORE 00001bd0: DUP12 00001bd1: MLOAD 00001bd2: PUSH1 0x44 00001bd4: DUP5 00001bd5: ADD 00001bd6: MSTORE 00001bd7: DUP12 00001bd8: MLOAD 00001bd9: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 00001bee: SWAP7 00001bef: POP 00001bf0: PUSH4 0x4a1a55fa 00001bf5: SWAP6 00001bf6: POP 00001bf7: SWAP2 00001bf8: SWAP4 00001bf9: DUP13 00001bfa: SWAP4 00001bfb: SWAP2 00001bfc: SWAP3 00001bfd: SWAP1 00001bfe: SWAP2 00001bff: PUSH1 0x64 00001c01: ADD 00001c02: SWAP1 00001c03: PUSH1 0x20 00001c05: DUP6 00001c06: ADD 00001c07: SWAP1 00001c08: DUP1 00001c09: DUP4 00001c0a: DUP4 00001c0b: PUSH1 0x00 00001c0d: JUMPDEST 00001c0e: DUP4 00001c0f: DUP2 00001c10: LT 00001c11: ISZERO 00001c12: PUSH2 0x1c25 00001c15: JUMPI 00001c16: DUP2 00001c17: DUP2 00001c18: ADD 00001c19: MLOAD 00001c1a: DUP4 00001c1b: DUP3 00001c1c: ADD 00001c1d: MSTORE 00001c1e: PUSH1 0x20 00001c20: ADD 00001c21: PUSH2 0x1c0d 00001c24: JUMP 00001c25: JUMPDEST 00001c26: POP 00001c27: POP 00001c28: POP 00001c29: POP 00001c2a: SWAP1 00001c2b: POP 00001c2c: SWAP1 00001c2d: DUP2 00001c2e: ADD 00001c2f: SWAP1 00001c30: PUSH1 0x1f 00001c32: AND 00001c33: DUP1 00001c34: ISZERO 00001c35: PUSH2 0x1c52 00001c38: JUMPI 00001c39: DUP1 00001c3a: DUP3 00001c3b: SUB 00001c3c: DUP1 00001c3d: MLOAD 00001c3e: PUSH1 0x01 00001c40: DUP4 00001c41: PUSH1 0x20 00001c43: SUB 00001c44: PUSH2 0x0100 00001c47: EXP 00001c48: SUB 00001c49: NOT 00001c4a: AND 00001c4b: DUP2 00001c4c: MSTORE 00001c4d: PUSH1 0x20 00001c4f: ADD 00001c50: SWAP2 00001c51: POP 00001c52: JUMPDEST 00001c53: POP 00001c54: SWAP4 00001c55: POP 00001c56: POP 00001c57: POP 00001c58: POP 00001c59: PUSH1 0x00 00001c5b: PUSH1 0x40 00001c5d: MLOAD 00001c5e: DUP1 00001c5f: DUP4 00001c60: SUB 00001c61: DUP2 00001c62: DUP7 00001c63: DUP1 00001c64: EXTCODESIZE 00001c65: ISZERO 00001c66: DUP1 00001c67: ISZERO 00001c68: PUSH2 0x1c70 00001c6b: JUMPI 00001c6c: PUSH1 0x00 00001c6e: DUP1 00001c6f: REVERT 00001c70: JUMPDEST 00001c71: POP 00001c72: GAS 00001c73: DELEGATECALL 00001c74: ISZERO 00001c75: DUP1 00001c76: ISZERO 00001c77: PUSH2 0x1c84 00001c7a: JUMPI 00001c7b: RETURNDATASIZE 00001c7c: PUSH1 0x00 00001c7e: DUP1 00001c7f: RETURNDATACOPY 00001c80: RETURNDATASIZE 00001c81: PUSH1 0x00 00001c83: REVERT 00001c84: JUMPDEST 00001c85: POP 00001c86: POP 00001c87: POP 00001c88: POP 00001c89: PUSH2 0x1c90 00001c8c: PUSH2 0x340b 00001c8f: JUMP 00001c90: JUMPDEST 00001c91: PUSH32 0xd1d71346ed0f1479c55b14e7c48b084207a7e1bcd9abe4f22d425ec23a518a1f 00001cb2: DUP8 00001cb3: DUP8 00001cb4: DUP8 00001cb5: PUSH1 0x40 00001cb7: MLOAD 00001cb8: DUP1 00001cb9: DUP5 00001cba: DUP2 00001cbb: MSTORE 00001cbc: PUSH1 0x20 00001cbe: ADD 00001cbf: DUP1 00001cc0: PUSH1 0x20 00001cc2: ADD 00001cc3: DUP1 00001cc4: PUSH1 0x20 00001cc6: ADD 00001cc7: DUP4 00001cc8: DUP2 00001cc9: SUB 00001cca: DUP4 00001ccb: MSTORE 00001ccc: DUP6 00001ccd: DUP2 00001cce: DUP2 00001ccf: MLOAD 00001cd0: DUP2 00001cd1: MSTORE 00001cd2: PUSH1 0x20 00001cd4: ADD 00001cd5: SWAP2 00001cd6: POP 00001cd7: DUP1 00001cd8: MLOAD 00001cd9: SWAP1 00001cda: PUSH1 0x20 00001cdc: ADD 00001cdd: SWAP1 00001cde: DUP1 00001cdf: DUP4 00001ce0: DUP4 00001ce1: PUSH1 0x00 00001ce3: JUMPDEST 00001ce4: DUP4 00001ce5: DUP2 00001ce6: LT 00001ce7: ISZERO 00001ce8: PUSH2 0x1cfb 00001ceb: JUMPI 00001cec: DUP2 00001ced: DUP2 00001cee: ADD 00001cef: MLOAD 00001cf0: DUP4 00001cf1: DUP3 00001cf2: ADD 00001cf3: MSTORE 00001cf4: PUSH1 0x20 00001cf6: ADD 00001cf7: PUSH2 0x1ce3 00001cfa: JUMP 00001cfb: JUMPDEST 00001cfc: POP 00001cfd: POP 00001cfe: POP 00001cff: POP 00001d00: SWAP1 00001d01: POP 00001d02: SWAP1 00001d03: DUP2 00001d04: ADD 00001d05: SWAP1 00001d06: PUSH1 0x1f 00001d08: AND 00001d09: DUP1 00001d0a: ISZERO 00001d0b: PUSH2 0x1d28 00001d0e: JUMPI 00001d0f: DUP1 00001d10: DUP3 00001d11: SUB 00001d12: DUP1 00001d13: MLOAD 00001d14: PUSH1 0x01 00001d16: DUP4 00001d17: PUSH1 0x20 00001d19: SUB 00001d1a: PUSH2 0x0100 00001d1d: EXP 00001d1e: SUB 00001d1f: NOT 00001d20: AND 00001d21: DUP2 00001d22: MSTORE 00001d23: PUSH1 0x20 00001d25: ADD 00001d26: SWAP2 00001d27: POP 00001d28: JUMPDEST 00001d29: POP 00001d2a: DUP4 00001d2b: DUP2 00001d2c: SUB 00001d2d: DUP3 00001d2e: MSTORE 00001d2f: DUP5 00001d30: MLOAD 00001d31: DUP2 00001d32: MSTORE 00001d33: DUP5 00001d34: MLOAD 00001d35: PUSH1 0x20 00001d37: SWAP2 00001d38: DUP3 00001d39: ADD 00001d3a: SWAP2 00001d3b: DUP7 00001d3c: ADD 00001d3d: SWAP1 00001d3e: DUP1 00001d3f: DUP4 00001d40: DUP4 00001d41: PUSH1 0x00 00001d43: JUMPDEST 00001d44: DUP4 00001d45: DUP2 00001d46: LT 00001d47: ISZERO 00001d48: PUSH2 0x1d5b 00001d4b: JUMPI 00001d4c: DUP2 00001d4d: DUP2 00001d4e: ADD 00001d4f: MLOAD 00001d50: DUP4 00001d51: DUP3 00001d52: ADD 00001d53: MSTORE 00001d54: PUSH1 0x20 00001d56: ADD 00001d57: PUSH2 0x1d43 00001d5a: JUMP 00001d5b: JUMPDEST 00001d5c: POP 00001d5d: POP 00001d5e: POP 00001d5f: POP 00001d60: SWAP1 00001d61: POP 00001d62: SWAP1 00001d63: DUP2 00001d64: ADD 00001d65: SWAP1 00001d66: PUSH1 0x1f 00001d68: AND 00001d69: DUP1 00001d6a: ISZERO 00001d6b: PUSH2 0x1d88 00001d6e: JUMPI 00001d6f: DUP1 00001d70: DUP3 00001d71: SUB 00001d72: DUP1 00001d73: MLOAD 00001d74: PUSH1 0x01 00001d76: DUP4 00001d77: PUSH1 0x20 00001d79: SUB 00001d7a: PUSH2 0x0100 00001d7d: EXP 00001d7e: SUB 00001d7f: NOT 00001d80: AND 00001d81: DUP2 00001d82: MSTORE 00001d83: PUSH1 0x20 00001d85: ADD 00001d86: SWAP2 00001d87: POP 00001d88: JUMPDEST 00001d89: POP 00001d8a: SWAP6 00001d8b: POP 00001d8c: POP 00001d8d: POP 00001d8e: POP 00001d8f: POP 00001d90: POP 00001d91: PUSH1 0x40 00001d93: MLOAD 00001d94: DUP1 00001d95: SWAP2 00001d96: SUB 00001d97: SWAP1 00001d98: LOG1 00001d99: PUSH1 0x40 00001d9b: DUP1 00001d9c: MLOAD 00001d9d: PUSH4 0x292c56eb 00001da2: PUSH1 0xe2 00001da4: SHL 00001da5: DUP2 00001da6: MSTORE 00001da7: PUSH1 0x01 00001da9: PUSH1 0x04 00001dab: DUP3 00001dac: ADD 00001dad: MSTORE 00001dae: SWAP1 00001daf: MLOAD 00001db0: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17 00001dc5: SWAP2 00001dc6: PUSH4 0xa4b15bac 00001dcb: SWAP2 00001dcc: PUSH1 0x24 00001dce: DUP1 00001dcf: DUP4 00001dd0: ADD 00001dd1: SWAP3 00001dd2: PUSH1 0x00 00001dd4: SWAP3 00001dd5: SWAP2 00001dd6: SWAP1 00001dd7: DUP3 00001dd8: SWAP1 00001dd9: SUB 00001dda: ADD 00001ddb: DUP2 00001ddc: DUP7 00001ddd: DUP1 00001dde: EXTCODESIZE 00001ddf: ISZERO 00001de0: DUP1 00001de1: ISZERO 00001de2: PUSH2 0x1dea 00001de5: JUMPI 00001de6: PUSH1 0x00 00001de8: DUP1 00001de9: REVERT 00001dea: JUMPDEST 00001deb: POP 00001dec: GAS 00001ded: DELEGATECALL 00001dee: ISZERO 00001def: DUP1 00001df0: ISZERO 00001df1: PUSH2 0x1dfe 00001df4: JUMPI 00001df5: RETURNDATASIZE 00001df6: PUSH1 0x00 00001df8: DUP1 00001df9: RETURNDATACOPY 00001dfa: RETURNDATASIZE 00001dfb: PUSH1 0x00 00001dfd: REVERT 00001dfe: JUMPDEST 00001dff: POP 00001e00: POP 00001e01: POP 00001e02: POP 00001e03: POP 00001e04: PUSH1 0x00 00001e06: SLOAD 00001e07: DUP2 00001e08: EQ 00001e09: PUSH2 0x1e59 00001e0c: JUMPI 00001e0d: PUSH1 0x40 00001e0f: DUP1 00001e10: MLOAD 00001e11: PUSH3 0x461bcd 00001e15: PUSH1 0xe5 00001e17: SHL 00001e18: DUP2 00001e19: MSTORE 00001e1a: PUSH1 0x20 00001e1c: PUSH1 0x04 00001e1e: DUP3 00001e1f: ADD 00001e20: MSTORE 00001e21: PUSH1 0x1f 00001e23: PUSH1 0x24 00001e25: DUP3 00001e26: ADD 00001e27: MSTORE 00001e28: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00001e49: PUSH1 0x44 00001e4b: DUP3 00001e4c: ADD 00001e4d: MSTORE 00001e4e: SWAP1 00001e4f: MLOAD 00001e50: SWAP1 00001e51: DUP2 00001e52: SWAP1 00001e53: SUB 00001e54: PUSH1 0x64 00001e56: ADD 00001e57: SWAP1 00001e58: REVERT 00001e59: JUMPDEST 00001e5a: POP 00001e5b: POP 00001e5c: POP 00001e5d: POP 00001e5e: POP 00001e5f: POP 00001e60: JUMP 00001e61: JUMPDEST 00001e62: PUSH1 0x1a 00001e64: SLOAD 00001e65: PUSH1 0x40 00001e67: DUP1 00001e68: MLOAD 00001e69: PUSH4 0x6557eccf 00001e6e: PUSH1 0xe0 00001e70: SHL 00001e71: DUP2 00001e72: MSTORE 00001e73: ADDRESS 00001e74: PUSH1 0x04 00001e76: DUP3 00001e77: ADD 00001e78: MSTORE 00001e79: SWAP1 00001e7a: MLOAD 00001e7b: CALLER 00001e7c: SWAP3 00001e7d: PUSH1 0x01 00001e7f: PUSH1 0x01 00001e81: PUSH1 0xa0 00001e83: SHL 00001e84: SUB 00001e85: AND 00001e86: SWAP2 00001e87: PUSH4 0x6557eccf 00001e8c: SWAP2 00001e8d: PUSH1 0x24 00001e8f: DUP1 00001e90: DUP4 00001e91: ADD 00001e92: SWAP3 00001e93: PUSH1 0x20 00001e95: SWAP3 00001e96: SWAP2 00001e97: SWAP1 00001e98: DUP3 00001e99: SWAP1 00001e9a: SUB 00001e9b: ADD 00001e9c: DUP2 00001e9d: DUP7 00001e9e: DUP1 00001e9f: EXTCODESIZE 00001ea0: ISZERO 00001ea1: DUP1 00001ea2: ISZERO 00001ea3: PUSH2 0x1eab 00001ea6: JUMPI 00001ea7: PUSH1 0x00 00001ea9: DUP1 00001eaa: REVERT 00001eab: JUMPDEST 00001eac: POP 00001ead: GAS 00001eae: STATICCALL 00001eaf: ISZERO 00001eb0: DUP1 00001eb1: ISZERO 00001eb2: PUSH2 0x1ebf 00001eb5: JUMPI 00001eb6: RETURNDATASIZE 00001eb7: PUSH1 0x00 00001eb9: DUP1 00001eba: RETURNDATACOPY 00001ebb: RETURNDATASIZE 00001ebc: PUSH1 0x00 00001ebe: REVERT 00001ebf: JUMPDEST 00001ec0: POP 00001ec1: POP 00001ec2: POP 00001ec3: POP 00001ec4: PUSH1 0x40 00001ec6: MLOAD 00001ec7: RETURNDATASIZE 00001ec8: PUSH1 0x20 00001eca: DUP2 00001ecb: LT 00001ecc: ISZERO 00001ecd: PUSH2 0x1ed5 00001ed0: JUMPI 00001ed1: PUSH1 0x00 00001ed3: DUP1 00001ed4: REVERT 00001ed5: JUMPDEST 00001ed6: POP 00001ed7: MLOAD 00001ed8: PUSH1 0x01 00001eda: PUSH1 0x01 00001edc: PUSH1 0xa0 00001ede: SHL 00001edf: SUB 00001ee0: AND 00001ee1: EQ 00001ee2: PUSH2 0x1f23 00001ee5: JUMPI 00001ee6: PUSH1 0x40 00001ee8: DUP1 00001ee9: MLOAD 00001eea: PUSH3 0x461bcd 00001eee: PUSH1 0xe5 00001ef0: SHL 00001ef1: DUP2 00001ef2: MSTORE 00001ef3: PUSH1 0x20 00001ef5: PUSH1 0x04 00001ef7: DUP3 00001ef8: ADD 00001ef9: MSTORE 00001efa: PUSH1 0x0e 00001efc: PUSH1 0x24 00001efe: DUP3 00001eff: ADD 00001f00: MSTORE 00001f01: PUSH14 0x139bdd08185d5d1a1bdc9a5e9959 00001f10: PUSH1 0x92 00001f12: SHL 00001f13: PUSH1 0x44 00001f15: DUP3 00001f16: ADD 00001f17: MSTORE 00001f18: SWAP1 00001f19: MLOAD 00001f1a: SWAP1 00001f1b: DUP2 00001f1c: SWAP1 00001f1d: SUB 00001f1e: PUSH1 0x64 00001f20: ADD 00001f21: SWAP1 00001f22: REVERT 00001f23: JUMPDEST 00001f24: PUSH1 0x19 00001f26: DUP1 00001f27: SLOAD 00001f28: PUSH1 0x01 00001f2a: DUP2 00001f2b: ADD 00001f2c: DUP3 00001f2d: SSTORE 00001f2e: PUSH1 0x00 00001f30: SWAP2 00001f31: SWAP1 00001f32: SWAP2 00001f33: MSTORE 00001f34: PUSH32 0x944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695 00001f55: ADD 00001f56: DUP1 00001f57: SLOAD 00001f58: PUSH1 0x01 00001f5a: PUSH1 0x01 00001f5c: PUSH1 0xa0 00001f5e: SHL 00001f5f: SUB 00001f60: NOT 00001f61: AND 00001f62: PUSH1 0x01 00001f64: PUSH1 0x01 00001f66: PUSH1 0xa0 00001f68: SHL 00001f69: SUB 00001f6a: SWAP3 00001f6b: SWAP1 00001f6c: SWAP3 00001f6d: AND 00001f6e: SWAP2 00001f6f: SWAP1 00001f70: SWAP2 00001f71: OR 00001f72: SWAP1 00001f73: SSTORE 00001f74: JUMP 00001f75: JUMPDEST 00001f76: PUSH1 0x23 00001f78: SLOAD 00001f79: DUP2 00001f7a: JUMP 00001f7b: JUMPDEST 00001f7c: PUSH1 0x1d 00001f7e: SLOAD 00001f7f: DUP2 00001f80: JUMP 00001f81: JUMPDEST 00001f82: PUSH1 0x00 00001f84: PUSH2 0x0f84 00001f87: PUSH1 0x0b 00001f89: DUP4 00001f8a: PUSH4 0xffffffff 00001f8f: PUSH2 0x35f9 00001f92: AND 00001f93: JUMP 00001f94: JUMPDEST 00001f95: PUSH1 0x07 00001f97: SLOAD 00001f98: PUSH1 0x1b 00001f9a: SLOAD 00001f9b: PUSH1 0x40 00001f9d: DUP1 00001f9e: MLOAD 00001f9f: PUSH4 0xafff33ef 00001fa4: PUSH1 0xe0 00001fa6: SHL 00001fa7: DUP2 00001fa8: MSTORE 00001fa9: CALLER 00001faa: PUSH1 0x04 00001fac: DUP3 00001fad: ADD 00001fae: MSTORE 00001faf: ADDRESS 00001fb0: PUSH1 0x24 00001fb2: DUP3 00001fb3: ADD 00001fb4: MSTORE 00001fb5: SWAP1 00001fb6: MLOAD 00001fb7: PUSH1 0x00 00001fb9: SWAP4 00001fba: PUSH2 0x2029 00001fbd: SWAP4 00001fbe: SWAP1 00001fbf: SWAP3 00001fc0: PUSH1 0x01 00001fc2: PUSH1 0x01 00001fc4: PUSH1 0xa0 00001fc6: SHL 00001fc7: SUB 00001fc8: SWAP1 00001fc9: SWAP2 00001fca: AND 00001fcb: SWAP2 00001fcc: PUSH4 0xafff33ef 00001fd1: SWAP2 00001fd2: PUSH1 0x44 00001fd4: DUP1 00001fd5: DUP3 00001fd6: ADD 00001fd7: SWAP3 00001fd8: PUSH1 0x20 00001fda: SWAP3 00001fdb: SWAP1 00001fdc: SWAP2 00001fdd: SWAP1 00001fde: DUP3 00001fdf: SWAP1 00001fe0: SUB 00001fe1: ADD 00001fe2: DUP2 00001fe3: DUP7 00001fe4: DUP1 00001fe5: EXTCODESIZE 00001fe6: ISZERO 00001fe7: DUP1 00001fe8: ISZERO 00001fe9: PUSH2 0x1ff1 00001fec: JUMPI 00001fed: PUSH1 0x00 00001fef: DUP1 00001ff0: REVERT 00001ff1: JUMPDEST 00001ff2: POP 00001ff3: GAS 00001ff4: STATICCALL 00001ff5: ISZERO 00001ff6: DUP1 00001ff7: ISZERO 00001ff8: PUSH2 0x2005 00001ffb: JUMPI 00001ffc: RETURNDATASIZE 00001ffd: PUSH1 0x00 00001fff: DUP1 00002000: RETURNDATACOPY 00002001: RETURNDATASIZE 00002002: PUSH1 0x00 00002004: REVERT 00002005: JUMPDEST 00002006: POP 00002007: POP 00002008: POP 00002009: POP 0000200a: PUSH1 0x40 0000200c: MLOAD 0000200d: RETURNDATASIZE 0000200e: PUSH1 0x20 00002010: DUP2 00002011: LT 00002012: ISZERO 00002013: PUSH2 0x201b 00002016: JUMPI 00002017: PUSH1 0x00 00002019: DUP1 0000201a: REVERT 0000201b: JUMPDEST 0000201c: POP 0000201d: MLOAD 0000201e: SWAP1 0000201f: PUSH4 0xffffffff 00002024: PUSH2 0x3628 00002027: AND 00002028: JUMP 00002029: JUMPDEST 0000202a: PUSH1 0x40 0000202c: DUP1 0000202d: MLOAD 0000202e: PUSH4 0x3edbb527 00002033: PUSH1 0xe2 00002035: SHL 00002036: DUP2 00002037: MSTORE 00002038: PUSH1 0x01 0000203a: PUSH1 0x04 0000203c: DUP3 0000203d: ADD 0000203e: MSTORE 0000203f: PUSH1 0x24 00002041: DUP2 00002042: ADD 00002043: DUP6 00002044: SWAP1 00002045: MSTORE 00002046: PUSH1 0x44 00002048: DUP2 00002049: ADD 0000204a: DUP4 0000204b: SWAP1 0000204c: MSTORE 0000204d: SWAP1 0000204e: MLOAD 0000204f: SWAP2 00002050: SWAP3 00002051: POP 00002052: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17 00002067: SWAP2 00002068: PUSH4 0xfb6ed49c 0000206d: SWAP2 0000206e: PUSH1 0x64 00002070: DUP1 00002071: DUP3 00002072: ADD 00002073: SWAP3 00002074: PUSH1 0x00 00002076: SWAP3 00002077: SWAP1 00002078: SWAP2 00002079: SWAP1 0000207a: DUP3 0000207b: SWAP1 0000207c: SUB 0000207d: ADD 0000207e: DUP2 0000207f: DUP7 00002080: DUP1 00002081: EXTCODESIZE 00002082: ISZERO 00002083: DUP1 00002084: ISZERO 00002085: PUSH2 0x208d 00002088: JUMPI 00002089: PUSH1 0x00 0000208b: DUP1 0000208c: REVERT 0000208d: JUMPDEST 0000208e: POP 0000208f: GAS 00002090: DELEGATECALL 00002091: ISZERO 00002092: DUP1 00002093: ISZERO 00002094: PUSH2 0x1e59 00002097: JUMPI 00002098: RETURNDATASIZE 00002099: PUSH1 0x00 0000209b: DUP1 0000209c: RETURNDATACOPY 0000209d: RETURNDATASIZE 0000209e: PUSH1 0x00 000020a0: REVERT 000020a1: JUMPDEST 000020a2: PUSH1 0x29 000020a4: SLOAD 000020a5: DUP2 000020a6: JUMP 000020a7: JUMPDEST 000020a8: PUSH2 0x2114 000020ab: CALLER 000020ac: PUSH1 0x19 000020ae: DUP1 000020af: SLOAD 000020b0: DUP1 000020b1: PUSH1 0x20 000020b3: MUL 000020b4: PUSH1 0x20 000020b6: ADD 000020b7: PUSH1 0x40 000020b9: MLOAD 000020ba: SWAP1 000020bb: DUP2 000020bc: ADD 000020bd: PUSH1 0x40 000020bf: MSTORE 000020c0: DUP1 000020c1: SWAP3 000020c2: SWAP2 000020c3: SWAP1 000020c4: DUP2 000020c5: DUP2 000020c6: MSTORE 000020c7: PUSH1 0x20 000020c9: ADD 000020ca: DUP3 000020cb: DUP1 000020cc: SLOAD 000020cd: DUP1 000020ce: ISZERO 000020cf: PUSH2 0x2101 000020d2: JUMPI 000020d3: PUSH1 0x20 000020d5: MUL 000020d6: DUP3 000020d7: ADD 000020d8: SWAP2 000020d9: SWAP1 000020da: PUSH1 0x00 000020dc: MSTORE 000020dd: PUSH1 0x20 000020df: PUSH1 0x00 000020e1: KECCAK256 000020e2: SWAP1 000020e3: JUMPDEST 000020e4: DUP2 000020e5: SLOAD 000020e6: PUSH1 0x01 000020e8: PUSH1 0x01 000020ea: PUSH1 0xa0 000020ec: SHL 000020ed: SUB 000020ee: AND 000020ef: DUP2 000020f0: MSTORE 000020f1: PUSH1 0x01 000020f3: SWAP1 000020f4: SWAP2 000020f5: ADD 000020f6: SWAP1 000020f7: PUSH1 0x20 000020f9: ADD 000020fa: DUP1 000020fb: DUP4 000020fc: GT 000020fd: PUSH2 0x20e3 00002100: JUMPI 00002101: JUMPDEST 00002102: POP 00002103: POP 00002104: POP 00002105: POP 00002106: POP 00002107: PUSH2 0x366a 0000210a: SWAP1 0000210b: SWAP2 0000210c: SWAP1 0000210d: PUSH4 0xffffffff 00002112: AND 00002113: JUMP 00002114: JUMPDEST 00002115: PUSH2 0x2165 00002118: JUMPI 00002119: PUSH1 0x40 0000211b: DUP1 0000211c: MLOAD 0000211d: PUSH3 0x461bcd 00002121: PUSH1 0xe5 00002123: SHL 00002124: DUP2 00002125: MSTORE 00002126: PUSH1 0x20 00002128: PUSH1 0x04 0000212a: DUP3 0000212b: ADD 0000212c: DUP2 0000212d: SWAP1 0000212e: MSTORE 0000212f: PUSH1 0x24 00002131: DUP3 00002132: ADD 00002133: MSTORE 00002134: PUSH32 0x43616c6c6572206973206e6f742061207365727669636520636f6e7472616374 00002155: PUSH1 0x44 00002157: DUP3 00002158: ADD 00002159: MSTORE 0000215a: SWAP1 0000215b: MLOAD 0000215c: SWAP1 0000215d: DUP2 0000215e: SWAP1 0000215f: SUB 00002160: PUSH1 0x64 00002162: ADD 00002163: SWAP1 00002164: REVERT 00002165: JUMPDEST 00002166: PUSH1 0x00 00002168: PUSH2 0x2186 0000216b: PUSH2 0x2172 0000216e: PUSH2 0x15bb 00002171: JUMP 00002172: JUMPDEST 00002173: PUSH2 0x217a 00002176: PUSH2 0x2aef 00002179: JUMP 0000217a: JUMPDEST 0000217b: SWAP1 0000217c: PUSH4 0xffffffff 00002181: PUSH2 0x36c0 00002184: AND 00002185: JUMP 00002186: JUMPDEST 00002187: SWAP1 00002188: POP 00002189: DUP1 0000218a: CALLVALUE 0000218b: LT 0000218c: ISZERO 0000218d: PUSH2 0x21dd 00002190: JUMPI 00002191: PUSH1 0x40 00002193: DUP1 00002194: MLOAD 00002195: PUSH3 0x461bcd 00002199: PUSH1 0xe5 0000219b: SHL 0000219c: DUP2 0000219d: MSTORE 0000219e: PUSH1 0x20 000021a0: PUSH1 0x04 000021a2: DUP3 000021a3: ADD 000021a4: MSTORE 000021a5: PUSH1 0x1a 000021a7: PUSH1 0x24 000021a9: DUP3 000021aa: ADD 000021ab: MSTORE 000021ac: PUSH32 0x496e73756666696369656e74206e657720656e74727920666565000000000000 000021cd: PUSH1 0x44 000021cf: DUP3 000021d0: ADD 000021d1: MSTORE 000021d2: SWAP1 000021d3: MLOAD 000021d4: SWAP1 000021d5: DUP2 000021d6: SWAP1 000021d7: SUB 000021d8: PUSH1 0x64 000021da: ADD 000021db: SWAP1 000021dc: REVERT 000021dd: JUMPDEST 000021de: PUSH1 0x00 000021e0: PUSH2 0x21ef 000021e3: CALLVALUE 000021e4: DUP4 000021e5: PUSH4 0xffffffff 000021ea: PUSH2 0x371a 000021ed: AND 000021ee: JUMP 000021ef: JUMPDEST 000021f0: SWAP1 000021f1: POP 000021f2: PUSH2 0x21fe 000021f5: DUP5 000021f6: DUP5 000021f7: CALLER 000021f8: DUP6 000021f9: DUP6 000021fa: PUSH2 0x316f 000021fd: JUMP 000021fe: JUMPDEST 000021ff: POP 00002200: POP 00002201: POP 00002202: POP 00002203: JUMP 00002204: JUMPDEST 00002205: PUSH1 0x00 00002207: PUSH1 0x0b 00002209: PUSH1 0x06 0000220b: ADD 0000220c: DUP3 0000220d: PUSH1 0x40 0000220f: MLOAD 00002210: DUP1 00002211: DUP3 00002212: DUP1 00002213: MLOAD 00002214: SWAP1 00002215: PUSH1 0x20 00002217: ADD 00002218: SWAP1 00002219: DUP1 0000221a: DUP4 0000221b: DUP4 0000221c: JUMPDEST 0000221d: PUSH1 0x20 0000221f: DUP4 00002220: LT 00002221: PUSH2 0x223b 00002224: JUMPI 00002225: DUP1 00002226: MLOAD 00002227: DUP3 00002228: MSTORE 00002229: PUSH1 0x1f 0000222b: NOT 0000222c: SWAP1 0000222d: SWAP3 0000222e: ADD 0000222f: SWAP2 00002230: PUSH1 0x20 00002232: SWAP2 00002233: DUP3 00002234: ADD 00002235: SWAP2 00002236: ADD 00002237: PUSH2 0x221c 0000223a: JUMP 0000223b: JUMPDEST 0000223c: MLOAD 0000223d: DUP2 0000223e: MLOAD 0000223f: PUSH1 0x20 00002241: SWAP4 00002242: DUP5 00002243: SUB 00002244: PUSH2 0x0100 00002247: EXP 00002248: PUSH1 0x00 0000224a: NOT 0000224b: ADD 0000224c: DUP1 0000224d: NOT 0000224e: SWAP1 0000224f: SWAP3 00002250: AND 00002251: SWAP2 00002252: AND 00002253: OR 00002254: SWAP1 00002255: MSTORE 00002256: SWAP3 00002257: ADD 00002258: SWAP5 00002259: DUP6 0000225a: MSTORE 0000225b: POP 0000225c: PUSH1 0x40 0000225e: MLOAD 0000225f: SWAP4 00002260: DUP5 00002261: SWAP1 00002262: SUB 00002263: ADD 00002264: SWAP1 00002265: SWAP3 00002266: KECCAK256 00002267: SLOAD 00002268: SWAP5 00002269: SWAP4 0000226a: POP 0000226b: POP 0000226c: POP 0000226d: POP 0000226e: JUMP 0000226f: JUMPDEST 00002270: PUSH1 0x40 00002272: DUP1 00002273: MLOAD 00002274: PUSH1 0x01 00002276: PUSH3 0x0f258b 0000227a: PUSH1 0xe0 0000227c: SHL 0000227d: SUB 0000227e: NOT 0000227f: DUP2 00002280: MSTORE 00002281: PUSH1 0x0b 00002283: PUSH1 0x04 00002285: DUP3 00002286: ADD 00002287: MSTORE 00002288: SWAP1 00002289: MLOAD 0000228a: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 0000229f: SWAP2 000022a0: PUSH4 0xfff0da75 000022a5: SWAP2 000022a6: PUSH1 0x24 000022a8: DUP1 000022a9: DUP4 000022aa: ADD 000022ab: SWAP3 000022ac: PUSH1 0x00 000022ae: SWAP3 000022af: SWAP2 000022b0: SWAP1 000022b1: DUP3 000022b2: SWAP1 000022b3: SUB 000022b4: ADD 000022b5: DUP2 000022b6: DUP7 000022b7: DUP1 000022b8: EXTCODESIZE 000022b9: ISZERO 000022ba: DUP1 000022bb: ISZERO 000022bc: PUSH2 0x22c4 000022bf: JUMPI 000022c0: PUSH1 0x00 000022c2: DUP1 000022c3: REVERT 000022c4: JUMPDEST 000022c5: POP 000022c6: GAS 000022c7: DELEGATECALL 000022c8: ISZERO 000022c9: DUP1 000022ca: ISZERO 000022cb: PUSH2 0x22d8 000022ce: JUMPI 000022cf: RETURNDATASIZE 000022d0: PUSH1 0x00 000022d2: DUP1 000022d3: RETURNDATACOPY 000022d4: RETURNDATASIZE 000022d5: PUSH1 0x00 000022d7: REVERT 000022d8: JUMPDEST 000022d9: POP 000022da: POP 000022db: POP 000022dc: POP 000022dd: PUSH2 0x22e4 000022e0: PUSH2 0x2ab8 000022e3: JUMP 000022e4: JUMPDEST 000022e5: ISZERO 000022e6: PUSH2 0x2325 000022e9: JUMPI 000022ea: PUSH1 0x40 000022ec: DUP1 000022ed: MLOAD 000022ee: PUSH3 0x461bcd 000022f2: PUSH1 0xe5 000022f4: SHL 000022f5: DUP2 000022f6: MSTORE 000022f7: PUSH1 0x20 000022f9: PUSH1 0x04 000022fb: DUP3 000022fc: ADD 000022fd: MSTORE 000022fe: PUSH1 0x0c 00002300: PUSH1 0x24 00002302: DUP3 00002303: ADD 00002304: MSTORE 00002305: PUSH12 0x11dc9bdd5c1cc8195e1a5cdd 00002312: PUSH1 0xa2 00002314: SHL 00002315: PUSH1 0x44 00002317: DUP3 00002318: ADD 00002319: MSTORE 0000231a: SWAP1 0000231b: MLOAD 0000231c: SWAP1 0000231d: DUP2 0000231e: SWAP1 0000231f: SUB 00002320: PUSH1 0x64 00002322: ADD 00002323: SWAP1 00002324: REVERT 00002325: JUMPDEST 00002326: PUSH1 0x40 00002328: DUP1 00002329: MLOAD 0000232a: PUSH4 0x292c56eb 0000232f: PUSH1 0xe2 00002331: SHL 00002332: DUP2 00002333: MSTORE 00002334: PUSH1 0x01 00002336: PUSH1 0x04 00002338: DUP3 00002339: ADD 0000233a: MSTORE 0000233b: SWAP1 0000233c: MLOAD 0000233d: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17 00002352: SWAP2 00002353: PUSH4 0xa4b15bac 00002358: SWAP2 00002359: PUSH1 0x24 0000235b: DUP1 0000235c: DUP4 0000235d: ADD 0000235e: SWAP3 0000235f: PUSH1 0x00 00002361: SWAP3 00002362: SWAP2 00002363: SWAP1 00002364: DUP3 00002365: SWAP1 00002366: SUB 00002367: ADD 00002368: DUP2 00002369: DUP7 0000236a: DUP1 0000236b: EXTCODESIZE 0000236c: ISZERO 0000236d: DUP1 0000236e: ISZERO 0000236f: PUSH2 0x2377 00002372: JUMPI 00002373: PUSH1 0x00 00002375: DUP1 00002376: REVERT 00002377: JUMPDEST 00002378: POP 00002379: GAS 0000237a: DELEGATECALL 0000237b: ISZERO 0000237c: DUP1 0000237d: ISZERO 0000237e: PUSH2 0x238b 00002381: JUMPI 00002382: RETURNDATASIZE 00002383: PUSH1 0x00 00002385: DUP1 00002386: RETURNDATACOPY 00002387: RETURNDATASIZE 00002388: PUSH1 0x00 0000238a: REVERT 0000238b: JUMPDEST 0000238c: POP 0000238d: POP 0000238e: PUSH1 0x19 00002390: DUP1 00002391: SLOAD 00002392: SWAP1 00002393: SWAP3 00002394: POP 00002395: PUSH2 0x23a6 00002398: SWAP2 00002399: POP 0000239a: PUSH1 0x01 0000239c: PUSH4 0xffffffff 000023a1: PUSH2 0x371a 000023a4: AND 000023a5: JUMP 000023a6: JUMPDEST 000023a7: DUP2 000023a8: SLOAD 000023a9: DUP2 000023aa: LT 000023ab: PUSH2 0x23b0 000023ae: JUMPI 000023af: INVALID 000023b0: JUMPDEST 000023b1: PUSH1 0x00 000023b3: SWAP2 000023b4: DUP3 000023b5: MSTORE 000023b6: PUSH1 0x20 000023b8: SWAP1 000023b9: SWAP2 000023ba: KECCAK256 000023bb: ADD 000023bc: SLOAD 000023bd: PUSH1 0x27 000023bf: DUP1 000023c0: SLOAD 000023c1: PUSH1 0x01 000023c3: PUSH1 0x01 000023c5: PUSH1 0xa0 000023c7: SHL 000023c8: SUB 000023c9: NOT 000023ca: AND 000023cb: PUSH1 0x01 000023cd: PUSH1 0x01 000023cf: PUSH1 0xa0 000023d1: SHL 000023d2: SUB 000023d3: SWAP1 000023d4: SWAP3 000023d5: AND 000023d6: SWAP2 000023d7: SWAP1 000023d8: SWAP2 000023d9: OR 000023da: SWAP1 000023db: SSTORE 000023dc: PUSH2 0x2405 000023df: PUSH32 0x4574c8c75d6e88acd28f7e467dac97b5c60c3838d9dad993900bdf402152228e 00002400: CALLVALUE 00002401: PUSH2 0x375c 00002404: JUMP 00002405: JUMPDEST 00002406: JUMP 00002407: JUMPDEST 00002408: PUSH1 0x00 0000240a: DUP1 0000240b: SLOAD 0000240c: PUSH1 0x01 0000240e: ADD 0000240f: SWAP1 00002410: DUP2 00002411: SWAP1 00002412: SSTORE 00002413: PUSH2 0x241a 00002416: PUSH2 0x17c8 00002419: JUMP 0000241a: JUMPDEST 0000241b: PUSH2 0x2461 0000241e: JUMPI 0000241f: PUSH1 0x40 00002421: DUP1 00002422: MLOAD 00002423: PUSH3 0x461bcd 00002427: PUSH1 0xe5 00002429: SHL 0000242a: DUP2 0000242b: MSTORE 0000242c: PUSH1 0x20 0000242e: PUSH1 0x04 00002430: DUP3 00002431: ADD 00002432: MSTORE 00002433: PUSH1 0x13 00002435: PUSH1 0x24 00002437: DUP3 00002438: ADD 00002439: MSTORE 0000243a: PUSH19 0x115b9d1c9e481dd85cc81cdd589b5a5d1d1959 0000244e: PUSH1 0x6a 00002450: SHL 00002451: PUSH1 0x44 00002453: DUP3 00002454: ADD 00002455: MSTORE 00002456: SWAP1 00002457: MLOAD 00002458: SWAP1 00002459: DUP2 0000245a: SWAP1 0000245b: SUB 0000245c: PUSH1 0x64 0000245e: ADD 0000245f: SWAP1 00002460: REVERT 00002461: JUMPDEST 00002462: PUSH2 0x2469 00002465: PUSH2 0x3152 00002468: JUMP 00002469: JUMPDEST 0000246a: ISZERO 0000246b: PUSH2 0x24ad 0000246e: JUMPI 0000246f: PUSH1 0x40 00002471: DUP1 00002472: MLOAD 00002473: PUSH3 0x461bcd 00002477: PUSH1 0xe5 00002479: SHL 0000247a: DUP2 0000247b: MSTORE 0000247c: PUSH1 0x20 0000247e: PUSH1 0x04 00002480: DUP3 00002481: ADD 00002482: MSTORE 00002483: PUSH1 0x0f 00002485: PUSH1 0x24 00002487: DUP3 00002488: ADD 00002489: MSTORE 0000248a: PUSH15 0x115b9d1c9e481d1a5b5959081bdd5d 0000249a: PUSH1 0x8a 0000249c: SHL 0000249d: PUSH1 0x44 0000249f: DUP3 000024a0: ADD 000024a1: MSTORE 000024a2: SWAP1 000024a3: MLOAD 000024a4: SWAP1 000024a5: DUP2 000024a6: SWAP1 000024a7: SUB 000024a8: PUSH1 0x64 000024aa: ADD 000024ab: SWAP1 000024ac: REVERT 000024ad: JUMPDEST 000024ae: PUSH1 0x60 000024b0: PUSH2 0x24c5 000024b3: PUSH1 0x2a 000024b5: SLOAD 000024b6: PUSH1 0x0b 000024b8: PUSH2 0x39af 000024bb: SWAP1 000024bc: SWAP2 000024bd: SWAP1 000024be: PUSH4 0xffffffff 000024c3: AND 000024c4: JUMP 000024c5: JUMPDEST 000024c6: SWAP1 000024c7: POP 000024c8: PUSH20 0xa10ad2570ea7b93d19fdae6bd7189ff4929bc747 000024dd: PUSH4 0xde8f50a1 000024e2: DUP3 000024e3: PUSH1 0x2b 000024e5: DUP7 000024e6: PUSH1 0x40 000024e8: MLOAD 000024e9: DUP5 000024ea: PUSH4 0xffffffff 000024ef: AND 000024f0: PUSH1 0xe0 000024f2: SHL 000024f3: DUP2 000024f4: MSTORE 000024f5: PUSH1 0x04 000024f7: ADD 000024f8: DUP1 000024f9: DUP1 000024fa: PUSH1 0x20 000024fc: ADD 000024fd: DUP1 000024fe: PUSH1 0x20 00002500: ADD 00002501: DUP1 00002502: PUSH1 0x20 00002504: ADD 00002505: DUP5 00002506: DUP2 00002507: SUB 00002508: DUP5 00002509: MSTORE 0000250a: DUP8 0000250b: DUP2 0000250c: DUP2 0000250d: MLOAD 0000250e: DUP2 0000250f: MSTORE 00002510: PUSH1 0x20 00002512: ADD 00002513: SWAP2 00002514: POP 00002515: DUP1 00002516: MLOAD 00002517: SWAP1 00002518: PUSH1 0x20 0000251a: ADD 0000251b: SWAP1 0000251c: DUP1 0000251d: DUP4 0000251e: DUP4 0000251f: PUSH1 0x00 00002521: JUMPDEST 00002522: DUP4 00002523: DUP2 00002524: LT 00002525: ISZERO 00002526: PUSH2 0x2539 00002529: JUMPI 0000252a: DUP2 0000252b: DUP2 0000252c: ADD 0000252d: MLOAD 0000252e: DUP4 0000252f: DUP3 00002530: ADD 00002531: MSTORE 00002532: PUSH1 0x20 00002534: ADD 00002535: PUSH2 0x2521 00002538: JUMP 00002539: JUMPDEST 0000253a: POP 0000253b: POP 0000253c: POP 0000253d: POP 0000253e: SWAP1 0000253f: POP 00002540: SWAP1 00002541: DUP2 00002542: ADD 00002543: SWAP1 00002544: PUSH1 0x1f 00002546: AND 00002547: DUP1 00002548: ISZERO 00002549: PUSH2 0x2566 0000254c: JUMPI 0000254d: DUP1 0000254e: DUP3 0000254f: SUB 00002550: DUP1 00002551: MLOAD 00002552: PUSH1 0x01 00002554: DUP4 00002555: PUSH1 0x20 00002557: SUB 00002558: PUSH2 0x0100 0000255b: EXP 0000255c: SUB 0000255d: NOT 0000255e: AND 0000255f: DUP2 00002560: MSTORE 00002561: PUSH1 0x20 00002563: ADD 00002564: SWAP2 00002565: POP 00002566: JUMPDEST 00002567: POP 00002568: DUP5 00002569: DUP2 0000256a: SUB 0000256b: DUP4 0000256c: MSTORE 0000256d: DUP7 0000256e: SLOAD 0000256f: PUSH1 0x02 00002571: PUSH1 0x00 00002573: NOT 00002574: PUSH2 0x0100 00002577: PUSH1 0x01 00002579: DUP5 0000257a: AND 0000257b: ISZERO 0000257c: MUL 0000257d: ADD 0000257e: SWAP1 0000257f: SWAP2 00002580: AND 00002581: DIV 00002582: DUP1 00002583: DUP3 00002584: MSTORE 00002585: PUSH1 0x20 00002587: SWAP1 00002588: SWAP2 00002589: ADD 0000258a: SWAP1 0000258b: DUP8 0000258c: SWAP1 0000258d: DUP1 0000258e: ISZERO 0000258f: PUSH2 0x25d9 00002592: JUMPI 00002593: DUP1 00002594: PUSH1 0x1f 00002596: LT 00002597: PUSH2 0x25ae 0000259a: JUMPI 0000259b: PUSH2 0x0100 0000259e: DUP1 0000259f: DUP4 000025a0: SLOAD 000025a1: DIV 000025a2: MUL 000025a3: DUP4 000025a4: MSTORE 000025a5: SWAP2 000025a6: PUSH1 0x20 000025a8: ADD 000025a9: SWAP2 000025aa: PUSH2 0x25d9 000025ad: JUMP 000025ae: JUMPDEST 000025af: DUP3 000025b0: ADD 000025b1: SWAP2 000025b2: SWAP1 000025b3: PUSH1 0x00 000025b5: MSTORE 000025b6: PUSH1 0x20 000025b8: PUSH1 0x00 000025ba: KECCAK256 000025bb: SWAP1 000025bc: JUMPDEST 000025bd: DUP2 000025be: SLOAD 000025bf: DUP2 000025c0: MSTORE 000025c1: SWAP1 000025c2: PUSH1 0x01 000025c4: ADD 000025c5: SWAP1 000025c6: PUSH1 0x20 000025c8: ADD 000025c9: DUP1 000025ca: DUP4 000025cb: GT 000025cc: PUSH2 0x25bc 000025cf: JUMPI 000025d0: DUP3 000025d1: SWAP1 000025d2: SUB 000025d3: PUSH1 0x1f 000025d5: AND 000025d6: DUP3 000025d7: ADD 000025d8: SWAP2 000025d9: JUMPDEST 000025da: POP 000025db: POP 000025dc: DUP5 000025dd: DUP2 000025de: SUB 000025df: DUP3 000025e0: MSTORE 000025e1: DUP6 000025e2: MLOAD 000025e3: DUP2 000025e4: MSTORE 000025e5: DUP6 000025e6: MLOAD 000025e7: PUSH1 0x20 000025e9: SWAP2 000025ea: DUP3 000025eb: ADD 000025ec: SWAP2 000025ed: DUP8 000025ee: ADD 000025ef: SWAP1 000025f0: DUP1 000025f1: DUP4 000025f2: DUP4 000025f3: PUSH1 0x00 000025f5: JUMPDEST 000025f6: DUP4 000025f7: DUP2 000025f8: LT 000025f9: ISZERO 000025fa: PUSH2 0x260d 000025fd: JUMPI 000025fe: DUP2 000025ff: DUP2 00002600: ADD 00002601: MLOAD 00002602: DUP4 00002603: DUP3 00002604: ADD 00002605: MSTORE 00002606: PUSH1 0x20 00002608: ADD 00002609: PUSH2 0x25f5 0000260c: JUMP 0000260d: JUMPDEST 0000260e: POP 0000260f: POP 00002610: POP 00002611: POP 00002612: SWAP1 00002613: POP 00002614: SWAP1 00002615: DUP2 00002616: ADD 00002617: SWAP1 00002618: PUSH1 0x1f 0000261a: AND 0000261b: DUP1 0000261c: ISZERO 0000261d: PUSH2 0x263a 00002620: JUMPI 00002621: DUP1 00002622: DUP3 00002623: SUB 00002624: DUP1 00002625: MLOAD 00002626: PUSH1 0x01 00002628: DUP4 00002629: PUSH1 0x20 0000262b: SUB 0000262c: PUSH2 0x0100 0000262f: EXP 00002630: SUB 00002631: NOT 00002632: AND 00002633: DUP2 00002634: MSTORE 00002635: PUSH1 0x20 00002637: ADD 00002638: SWAP2 00002639: POP 0000263a: JUMPDEST 0000263b: POP 0000263c: SWAP7 0000263d: POP 0000263e: POP 0000263f: POP 00002640: POP 00002641: POP 00002642: POP 00002643: POP 00002644: PUSH1 0x20 00002646: PUSH1 0x40 00002648: MLOAD 00002649: DUP1 0000264a: DUP4 0000264b: SUB 0000264c: DUP2 0000264d: DUP7 0000264e: DUP1 0000264f: EXTCODESIZE 00002650: ISZERO 00002651: DUP1 00002652: ISZERO 00002653: PUSH2 0x265b 00002656: JUMPI 00002657: PUSH1 0x00 00002659: DUP1 0000265a: REVERT 0000265b: JUMPDEST 0000265c: POP 0000265d: GAS 0000265e: DELEGATECALL 0000265f: ISZERO 00002660: DUP1 00002661: ISZERO 00002662: PUSH2 0x266f 00002665: JUMPI 00002666: RETURNDATASIZE 00002667: PUSH1 0x00 00002669: DUP1 0000266a: RETURNDATACOPY 0000266b: RETURNDATASIZE 0000266c: PUSH1 0x00 0000266e: REVERT 0000266f: JUMPDEST 00002670: POP 00002671: POP 00002672: POP 00002673: POP 00002674: PUSH1 0x40 00002676: MLOAD 00002677: RETURNDATASIZE 00002678: PUSH1 0x20 0000267a: DUP2 0000267b: LT 0000267c: ISZERO 0000267d: PUSH2 0x2685 00002680: JUMPI 00002681: PUSH1 0x00 00002683: DUP1 00002684: REVERT 00002685: JUMPDEST 00002686: POP 00002687: MLOAD 00002688: PUSH2 0x26cc 0000268b: JUMPI 0000268c: PUSH1 0x40 0000268e: DUP1 0000268f: MLOAD 00002690: PUSH3 0x461bcd 00002694: PUSH1 0xe5 00002696: SHL 00002697: DUP2 00002698: MSTORE 00002699: PUSH1 0x20 0000269b: PUSH1 0x04 0000269d: DUP3 0000269e: ADD 0000269f: MSTORE 000026a0: PUSH1 0x11 000026a2: PUSH1 0x24 000026a4: DUP3 000026a5: ADD 000026a6: MSTORE 000026a7: PUSH17 0x496e76616c6964207369676e6174757265 000026b9: PUSH1 0x78 000026bb: SHL 000026bc: PUSH1 0x44 000026be: DUP3 000026bf: ADD 000026c0: MSTORE 000026c1: SWAP1 000026c2: MLOAD 000026c3: SWAP1 000026c4: DUP2 000026c5: SWAP1 000026c6: SUB 000026c7: PUSH1 0x64 000026c9: ADD 000026ca: SWAP1 000026cb: REVERT 000026cc: JUMPDEST 000026cd: PUSH1 0x40 000026cf: MLOAD 000026d0: PUSH32 0x8711cae111460cf9bde0d890f0dc09abcb8851e39bf020f406e53e86394cdbd7 000026f1: SWAP1 000026f2: PUSH1 0x00 000026f4: SWAP1 000026f5: LOG1 000026f6: PUSH1 0x2e 000026f8: SLOAD 000026f9: PUSH1 0x25 000026fb: SLOAD 000026fc: PUSH1 0x01 000026fe: PUSH1 0x01 00002700: PUSH1 0xa0 00002702: SHL 00002703: SUB 00002704: SWAP1 00002705: SWAP2 00002706: AND 00002707: SWAP1 00002708: PUSH2 0x2719 0000270b: SWAP1 0000270c: PUSH2 0x9c40 0000270f: PUSH4 0xffffffff 00002714: PUSH2 0x36c0 00002717: AND 00002718: JUMP 00002719: JUMPDEST 0000271a: PUSH1 0x28 0000271c: SLOAD 0000271d: PUSH1 0x40 0000271f: MLOAD 00002720: PUSH1 0x24 00002722: DUP2 00002723: ADD 00002724: DUP3 00002725: DUP2 00002726: MSTORE 00002727: CALLER 00002728: PUSH1 0x64 0000272a: DUP4 0000272b: ADD 0000272c: DUP2 0000272d: SWAP1 0000272e: MSTORE 0000272f: PUSH1 0x60 00002731: PUSH1 0x44 00002733: DUP5 00002734: ADD 00002735: SWAP1 00002736: DUP2 00002737: MSTORE 00002738: DUP10 00002739: MLOAD 0000273a: PUSH1 0x84 0000273c: DUP6 0000273d: ADD 0000273e: MSTORE 0000273f: DUP10 00002740: MLOAD 00002741: DUP11 00002742: SWAP5 00002743: SWAP3 00002744: SWAP4 00002745: SWAP3 00002746: PUSH1 0xa4 00002748: ADD 00002749: SWAP1 0000274a: PUSH1 0x20 0000274c: DUP7 0000274d: ADD 0000274e: SWAP1 0000274f: DUP1 00002750: DUP4 00002751: DUP4 00002752: PUSH1 0x00 00002754: JUMPDEST 00002755: DUP4 00002756: DUP2 00002757: LT 00002758: ISZERO 00002759: PUSH2 0x276c 0000275c: JUMPI 0000275d: DUP2 0000275e: DUP2 0000275f: ADD 00002760: MLOAD 00002761: DUP4 00002762: DUP3 00002763: ADD 00002764: MSTORE 00002765: PUSH1 0x20 00002767: ADD 00002768: PUSH2 0x2754 0000276b: JUMP 0000276c: JUMPDEST 0000276d: POP 0000276e: POP 0000276f: POP 00002770: POP 00002771: SWAP1 00002772: POP 00002773: SWAP1 00002774: DUP2 00002775: ADD 00002776: SWAP1 00002777: PUSH1 0x1f 00002779: AND 0000277a: DUP1 0000277b: ISZERO 0000277c: PUSH2 0x2799 0000277f: JUMPI 00002780: DUP1 00002781: DUP3 00002782: SUB 00002783: DUP1 00002784: MLOAD 00002785: PUSH1 0x01 00002787: DUP4 00002788: PUSH1 0x20 0000278a: SUB 0000278b: PUSH2 0x0100 0000278e: EXP 0000278f: SUB 00002790: NOT 00002791: AND 00002792: DUP2 00002793: MSTORE 00002794: PUSH1 0x20 00002796: ADD 00002797: SWAP2 00002798: POP 00002799: JUMPDEST 0000279a: POP 0000279b: PUSH1 0x40 0000279d: DUP1 0000279e: MLOAD 0000279f: PUSH1 0x1f 000027a1: NOT 000027a2: DUP2 000027a3: DUP5 000027a4: SUB 000027a5: ADD 000027a6: DUP2 000027a7: MSTORE 000027a8: SWAP2 000027a9: DUP2 000027aa: MSTORE 000027ab: PUSH1 0x20 000027ad: DUP3 000027ae: ADD 000027af: DUP1 000027b0: MLOAD 000027b1: PUSH1 0x01 000027b3: PUSH1 0x01 000027b5: PUSH1 0xe0 000027b7: SHL 000027b8: SUB 000027b9: AND 000027ba: PUSH4 0xef7284e3 000027bf: PUSH1 0xe0 000027c1: SHL 000027c2: OR 000027c3: DUP2 000027c4: MSTORE 000027c5: SWAP1 000027c6: MLOAD 000027c7: DUP3 000027c8: MLOAD 000027c9: SWAP3 000027ca: SWAP8 000027cb: POP 000027cc: SWAP6 000027cd: POP 000027ce: DUP6 000027cf: SWAP5 000027d0: POP 000027d1: SWAP3 000027d2: POP 000027d3: SWAP1 000027d4: POP 000027d5: DUP1 000027d6: DUP4 000027d7: DUP4 000027d8: JUMPDEST 000027d9: PUSH1 0x20 000027db: DUP4 000027dc: LT 000027dd: PUSH2 0x27f7 000027e0: JUMPI 000027e1: DUP1 000027e2: MLOAD 000027e3: DUP3 000027e4: MSTORE 000027e5: PUSH1 0x1f 000027e7: NOT 000027e8: SWAP1 000027e9: SWAP3 000027ea: ADD 000027eb: SWAP2 000027ec: PUSH1 0x20 000027ee: SWAP2 000027ef: DUP3 000027f0: ADD 000027f1: SWAP2 000027f2: ADD 000027f3: PUSH2 0x27d8 000027f6: JUMP 000027f7: JUMPDEST 000027f8: PUSH1 0x01 000027fa: DUP4 000027fb: PUSH1 0x20 000027fd: SUB 000027fe: PUSH2 0x0100 00002801: EXP 00002802: SUB 00002803: DUP1 00002804: NOT 00002805: DUP3 00002806: MLOAD 00002807: AND 00002808: DUP2 00002809: DUP5 0000280a: MLOAD 0000280b: AND 0000280c: DUP1 0000280d: DUP3 0000280e: OR 0000280f: DUP6 00002810: MSTORE 00002811: POP 00002812: POP 00002813: POP 00002814: POP 00002815: POP 00002816: POP 00002817: SWAP1 00002818: POP 00002819: ADD 0000281a: SWAP2 0000281b: POP 0000281c: POP 0000281d: PUSH1 0x00 0000281f: PUSH1 0x40 00002821: MLOAD 00002822: DUP1 00002823: DUP4 00002824: SUB 00002825: DUP2 00002826: PUSH1 0x00 00002828: DUP8 00002829: DUP8 0000282a: CALL 0000282b: SWAP3 0000282c: POP 0000282d: POP 0000282e: POP 0000282f: RETURNDATASIZE 00002830: DUP1 00002831: PUSH1 0x00 00002833: DUP2 00002834: EQ 00002835: PUSH2 0x285a 00002838: JUMPI 00002839: PUSH1 0x40 0000283b: MLOAD 0000283c: SWAP2 0000283d: POP 0000283e: PUSH1 0x1f 00002840: NOT 00002841: PUSH1 0x3f 00002843: RETURNDATASIZE 00002844: ADD 00002845: AND 00002846: DUP3 00002847: ADD 00002848: PUSH1 0x40 0000284a: MSTORE 0000284b: RETURNDATASIZE 0000284c: DUP3 0000284d: MSTORE 0000284e: RETURNDATASIZE 0000284f: PUSH1 0x00 00002851: PUSH1 0x20 00002853: DUP5 00002854: ADD 00002855: RETURNDATACOPY 00002856: PUSH2 0x285f 00002859: JUMP 0000285a: JUMPDEST 0000285b: PUSH1 0x60 0000285d: SWAP2 0000285e: POP 0000285f: JUMPDEST 00002860: POP 00002861: POP 00002862: PUSH1 0x2d 00002864: SLOAD 00002865: ISZERO 00002866: SWAP1 00002867: POP 00002868: PUSH2 0x287b 0000286b: JUMPI 0000286c: DUP3 0000286d: MLOAD 0000286e: PUSH1 0x20 00002870: DUP5 00002871: ADD 00002872: KECCAK256 00002873: PUSH2 0x287b 00002876: SWAP1 00002877: PUSH2 0x3a60 0000287a: JUMP 0000287b: JUMPDEST 0000287c: PUSH1 0x00 0000287e: DUP1 0000287f: PUSH1 0x00 00002881: PUSH2 0x2888 00002884: PUSH2 0x3da4 00002887: JUMP 00002888: JUMPDEST 00002889: SWAP2 0000288a: SWAP5 0000288b: POP 0000288c: SWAP3 0000288d: POP 0000288e: SWAP1 0000288f: POP 00002890: PUSH2 0x28a1 00002893: PUSH1 0x0b 00002895: DUP6 00002896: DUP6 00002897: PUSH4 0xffffffff 0000289c: PUSH2 0x3f27 0000289f: AND 000028a0: JUMP 000028a1: JUMPDEST 000028a2: PUSH1 0x1b 000028a4: SLOAD 000028a5: PUSH1 0x40 000028a7: DUP1 000028a8: MLOAD 000028a9: PUSH4 0xba7bffd3 000028ae: PUSH1 0xe0 000028b0: SHL 000028b1: DUP2 000028b2: MSTORE 000028b3: CALLER 000028b4: PUSH1 0x04 000028b6: DUP3 000028b7: ADD 000028b8: MSTORE 000028b9: SWAP1 000028ba: MLOAD 000028bb: PUSH1 0x01 000028bd: PUSH1 0x01 000028bf: PUSH1 0xa0 000028c1: SHL 000028c2: SUB 000028c3: SWAP1 000028c4: SWAP3 000028c5: AND 000028c6: SWAP2 000028c7: PUSH4 0xba7bffd3 000028cc: SWAP2 000028cd: PUSH1 0x24 000028cf: DUP1 000028d0: DUP3 000028d1: ADD 000028d2: SWAP3 000028d3: PUSH1 0x20 000028d5: SWAP3 000028d6: SWAP1 000028d7: SWAP2 000028d8: SWAP1 000028d9: DUP3 000028da: SWAP1 000028db: SUB 000028dc: ADD 000028dd: DUP2 000028de: DUP7 000028df: DUP1 000028e0: EXTCODESIZE 000028e1: ISZERO 000028e2: DUP1 000028e3: ISZERO 000028e4: PUSH2 0x28ec 000028e7: JUMPI 000028e8: PUSH1 0x00 000028ea: DUP1 000028eb: REVERT 000028ec: JUMPDEST 000028ed: POP 000028ee: GAS 000028ef: STATICCALL 000028f0: ISZERO 000028f1: DUP1 000028f2: ISZERO 000028f3: PUSH2 0x2900 000028f6: JUMPI 000028f7: RETURNDATASIZE 000028f8: PUSH1 0x00 000028fa: DUP1 000028fb: RETURNDATACOPY 000028fc: RETURNDATASIZE 000028fd: PUSH1 0x00 000028ff: REVERT 00002900: JUMPDEST 00002901: POP 00002902: POP 00002903: POP 00002904: POP 00002905: PUSH1 0x40 00002907: MLOAD 00002908: RETURNDATASIZE 00002909: PUSH1 0x20 0000290b: DUP2 0000290c: LT 0000290d: ISZERO 0000290e: PUSH2 0x2916 00002911: JUMPI 00002912: PUSH1 0x00 00002914: DUP1 00002915: REVERT 00002916: JUMPDEST 00002917: POP 00002918: MLOAD 00002919: PUSH1 0x40 0000291b: MLOAD 0000291c: PUSH1 0x01 0000291e: PUSH1 0x01 00002920: PUSH1 0xa0 00002922: SHL 00002923: SUB 00002924: SWAP1 00002925: SWAP2 00002926: AND 00002927: SWAP1 00002928: DUP4 00002929: SWAP1 0000292a: PUSH1 0x00 0000292c: DUP2 0000292d: DUP2 0000292e: DUP2 0000292f: DUP6 00002930: DUP8 00002931: GAS 00002932: CALL 00002933: SWAP3 00002934: POP 00002935: POP 00002936: POP 00002937: RETURNDATASIZE 00002938: DUP1 00002939: PUSH1 0x00 0000293b: DUP2 0000293c: EQ 0000293d: PUSH2 0x2962 00002940: JUMPI 00002941: PUSH1 0x40 00002943: MLOAD 00002944: SWAP2 00002945: POP 00002946: PUSH1 0x1f 00002948: NOT 00002949: PUSH1 0x3f 0000294b: RETURNDATASIZE 0000294c: ADD 0000294d: AND 0000294e: DUP3 0000294f: ADD 00002950: PUSH1 0x40 00002952: MSTORE 00002953: RETURNDATASIZE 00002954: DUP3 00002955: MSTORE 00002956: RETURNDATASIZE 00002957: PUSH1 0x00 00002959: PUSH1 0x20 0000295b: DUP5 0000295c: ADD 0000295d: RETURNDATACOPY 0000295e: PUSH2 0x2967 00002961: JUMP 00002962: JUMPDEST 00002963: PUSH1 0x60 00002965: SWAP2 00002966: POP 00002967: JUMPDEST 00002968: POP 00002969: POP 0000296a: DUP2 0000296b: ISZERO 0000296c: SWAP1 0000296d: POP 0000296e: PUSH2 0x2a46 00002971: JUMPI 00002972: PUSH1 0x2e 00002974: SLOAD 00002975: PUSH1 0x40 00002977: DUP1 00002978: MLOAD 00002979: PUSH1 0x04 0000297b: DUP2 0000297c: MSTORE 0000297d: PUSH1 0x24 0000297f: DUP2 00002980: ADD 00002981: DUP3 00002982: MSTORE 00002983: PUSH1 0x20 00002985: DUP2 00002986: ADD 00002987: DUP1 00002988: MLOAD 00002989: PUSH1 0x01 0000298b: PUSH1 0x01 0000298d: PUSH1 0xe0 0000298f: SHL 00002990: SUB 00002991: AND 00002992: PUSH4 0x08f40b77 00002997: PUSH1 0xe1 00002999: SHL 0000299a: OR 0000299b: DUP2 0000299c: MSTORE 0000299d: SWAP2 0000299e: MLOAD 0000299f: DUP2 000029a0: MLOAD 000029a1: PUSH1 0x01 000029a3: PUSH1 0x01 000029a5: PUSH1 0xa0 000029a7: SHL 000029a8: SUB 000029a9: SWAP1 000029aa: SWAP5 000029ab: AND 000029ac: SWAP4 000029ad: PUSH2 0x88b8 000029b0: SWAP4 000029b1: DUP7 000029b2: SWAP4 000029b3: SWAP3 000029b4: SWAP2 000029b5: DUP3 000029b6: SWAP2 000029b7: SWAP1 000029b8: DUP1 000029b9: DUP4 000029ba: DUP4 000029bb: JUMPDEST 000029bc: PUSH1 0x20 000029be: DUP4 000029bf: LT 000029c0: PUSH2 0x29da 000029c3: JUMPI 000029c4: DUP1 000029c5: MLOAD 000029c6: DUP3 000029c7: MSTORE 000029c8: PUSH1 0x1f 000029ca: NOT 000029cb: SWAP1 000029cc: SWAP3 000029cd: ADD 000029ce: SWAP2 000029cf: PUSH1 0x20 000029d1: SWAP2 000029d2: DUP3 000029d3: ADD 000029d4: SWAP2 000029d5: ADD 000029d6: PUSH2 0x29bb 000029d9: JUMP 000029da: JUMPDEST 000029db: PUSH1 0x01 000029dd: DUP4 000029de: PUSH1 0x20 000029e0: SUB 000029e1: PUSH2 0x0100 000029e4: EXP 000029e5: SUB 000029e6: DUP1 000029e7: NOT 000029e8: DUP3 000029e9: MLOAD 000029ea: AND 000029eb: DUP2 000029ec: DUP5 000029ed: MLOAD 000029ee: AND 000029ef: DUP1 000029f0: DUP3 000029f1: OR 000029f2: DUP6 000029f3: MSTORE 000029f4: POP 000029f5: POP 000029f6: POP 000029f7: POP 000029f8: POP 000029f9: POP 000029fa: SWAP1 000029fb: POP 000029fc: ADD 000029fd: SWAP2 000029fe: POP 000029ff: POP 00002a00: PUSH1 0x00 00002a02: PUSH1 0x40 00002a04: MLOAD 00002a05: DUP1 00002a06: DUP4 00002a07: SUB 00002a08: DUP2 00002a09: DUP6 00002a0a: DUP9 00002a0b: DUP9 00002a0c: CALL 00002a0d: SWAP4 00002a0e: POP 00002a0f: POP 00002a10: POP 00002a11: POP 00002a12: RETURNDATASIZE 00002a13: DUP1 00002a14: PUSH1 0x00 00002a16: DUP2 00002a17: EQ 00002a18: PUSH2 0x2a3d 00002a1b: JUMPI 00002a1c: PUSH1 0x40 00002a1e: MLOAD 00002a1f: SWAP2 00002a20: POP 00002a21: PUSH1 0x1f 00002a23: NOT 00002a24: PUSH1 0x3f 00002a26: RETURNDATASIZE 00002a27: ADD 00002a28: AND 00002a29: DUP3 00002a2a: ADD 00002a2b: PUSH1 0x40 00002a2d: MSTORE 00002a2e: RETURNDATASIZE 00002a2f: DUP3 00002a30: MSTORE 00002a31: RETURNDATASIZE 00002a32: PUSH1 0x00 00002a34: PUSH1 0x20 00002a36: DUP5 00002a37: ADD 00002a38: RETURNDATACOPY 00002a39: PUSH2 0x2a42 00002a3c: JUMP 00002a3d: JUMPDEST 00002a3e: PUSH1 0x60 00002a40: SWAP2 00002a41: POP 00002a42: JUMPDEST 00002a43: POP 00002a44: POP 00002a45: POP 00002a46: JUMPDEST 00002a47: PUSH1 0x00 00002a49: PUSH1 0x29 00002a4b: DUP2 00002a4c: SWAP1 00002a4d: SSTORE 00002a4e: POP 00002a4f: POP 00002a50: POP 00002a51: POP 00002a52: POP 00002a53: PUSH1 0x00 00002a55: SLOAD 00002a56: DUP2 00002a57: EQ 00002a58: PUSH2 0x2aa8 00002a5b: JUMPI 00002a5c: PUSH1 0x40 00002a5e: DUP1 00002a5f: MLOAD 00002a60: PUSH3 0x461bcd 00002a64: PUSH1 0xe5 00002a66: SHL 00002a67: DUP2 00002a68: MSTORE 00002a69: PUSH1 0x20 00002a6b: PUSH1 0x04 00002a6d: DUP3 00002a6e: ADD 00002a6f: MSTORE 00002a70: PUSH1 0x1f 00002a72: PUSH1 0x24 00002a74: DUP3 00002a75: ADD 00002a76: MSTORE 00002a77: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00002a98: PUSH1 0x44 00002a9a: DUP3 00002a9b: ADD 00002a9c: MSTORE 00002a9d: SWAP1 00002a9e: MLOAD 00002a9f: SWAP1 00002aa0: DUP2 00002aa1: SWAP1 00002aa2: SUB 00002aa3: PUSH1 0x64 00002aa5: ADD 00002aa6: SWAP1 00002aa7: REVERT 00002aa8: JUMPDEST 00002aa9: POP 00002aaa: POP 00002aab: JUMP 00002aac: JUMPDEST 00002aad: PUSH1 0x26 00002aaf: SLOAD 00002ab0: DUP2 00002ab1: JUMP 00002ab2: JUMPDEST 00002ab3: PUSH1 0x22 00002ab5: SLOAD 00002ab6: DUP2 00002ab7: JUMP 00002ab8: JUMPDEST 00002ab9: PUSH1 0x00 00002abb: PUSH2 0x15d4 00002abe: PUSH1 0x0b 00002ac0: PUSH2 0x3ffe 00002ac3: JUMP 00002ac4: JUMPDEST 00002ac5: PUSH1 0x00 00002ac7: PUSH2 0x15d4 00002aca: PUSH1 0x1e 00002acc: SLOAD 00002acd: PUSH2 0x2ae3 00002ad0: PUSH1 0x25 00002ad2: SLOAD 00002ad3: PUSH1 0x24 00002ad5: SLOAD 00002ad6: PUSH2 0x36c0 00002ad9: SWAP1 00002ada: SWAP2 00002adb: SWAP1 00002adc: PUSH4 0xffffffff 00002ae1: AND 00002ae2: JUMP 00002ae3: JUMPDEST 00002ae4: SWAP1 00002ae5: PUSH4 0xffffffff 00002aea: PUSH2 0x33ab 00002aed: AND 00002aee: JUMP 00002aef: JUMPDEST 00002af0: PUSH1 0x00 00002af2: PUSH2 0x15d4 00002af5: PUSH1 0x1f 00002af7: SLOAD 00002af8: PUSH1 0x1d 00002afa: SLOAD 00002afb: PUSH2 0x33ab 00002afe: SWAP1 00002aff: SWAP2 00002b00: SWAP1 00002b01: PUSH4 0xffffffff 00002b06: AND 00002b07: JUMP 00002b08: JUMPDEST 00002b09: PUSH1 0x1c 00002b0b: PUSH1 0x00 00002b0d: SWAP1 00002b0e: SLOAD 00002b0f: SWAP1 00002b10: PUSH2 0x0100 00002b13: EXP 00002b14: SWAP1 00002b15: DIV 00002b16: PUSH1 0x01 00002b18: PUSH1 0x01 00002b1a: PUSH1 0xa0 00002b1c: SHL 00002b1d: SUB 00002b1e: AND 00002b1f: PUSH1 0x01 00002b21: PUSH1 0x01 00002b23: PUSH1 0xa0 00002b25: SHL 00002b26: SUB 00002b27: AND 00002b28: PUSH4 0xfe173b97 00002b2d: PUSH1 0x40 00002b2f: MLOAD 00002b30: DUP2 00002b31: PUSH4 0xffffffff 00002b36: AND 00002b37: PUSH1 0xe0 00002b39: SHL 00002b3a: DUP2 00002b3b: MSTORE 00002b3c: PUSH1 0x04 00002b3e: ADD 00002b3f: PUSH1 0x20 00002b41: PUSH1 0x40 00002b43: MLOAD 00002b44: DUP1 00002b45: DUP4 00002b46: SUB 00002b47: DUP2 00002b48: DUP7 00002b49: DUP1 00002b4a: EXTCODESIZE 00002b4b: ISZERO 00002b4c: DUP1 00002b4d: ISZERO 00002b4e: PUSH2 0x2b56 00002b51: JUMPI 00002b52: PUSH1 0x00 00002b54: DUP1 00002b55: REVERT 00002b56: JUMPDEST 00002b57: POP 00002b58: GAS 00002b59: STATICCALL 00002b5a: ISZERO 00002b5b: DUP1 00002b5c: ISZERO 00002b5d: PUSH2 0x2b6a 00002b60: JUMPI 00002b61: RETURNDATASIZE 00002b62: PUSH1 0x00 00002b64: DUP1 00002b65: RETURNDATACOPY 00002b66: RETURNDATASIZE 00002b67: PUSH1 0x00 00002b69: REVERT 00002b6a: JUMPDEST 00002b6b: POP 00002b6c: POP 00002b6d: POP 00002b6e: POP 00002b6f: PUSH1 0x40 00002b71: MLOAD 00002b72: RETURNDATASIZE 00002b73: PUSH1 0x20 00002b75: DUP2 00002b76: LT 00002b77: ISZERO 00002b78: PUSH2 0x2b80 00002b7b: JUMPI 00002b7c: PUSH1 0x00 00002b7e: DUP1 00002b7f: REVERT 00002b80: JUMPDEST 00002b81: POP 00002b82: MLOAD 00002b83: PUSH1 0x1e 00002b85: SSTORE 00002b86: JUMP 00002b87: JUMPDEST 00002b88: PUSH2 0x2bf2 00002b8b: CALLER 00002b8c: PUSH1 0x19 00002b8e: DUP1 00002b8f: SLOAD 00002b90: DUP1 00002b91: PUSH1 0x20 00002b93: MUL 00002b94: PUSH1 0x20 00002b96: ADD 00002b97: PUSH1 0x40 00002b99: MLOAD 00002b9a: SWAP1 00002b9b: DUP2 00002b9c: ADD 00002b9d: PUSH1 0x40 00002b9f: MSTORE 00002ba0: DUP1 00002ba1: SWAP3 00002ba2: SWAP2 00002ba3: SWAP1 00002ba4: DUP2 00002ba5: DUP2 00002ba6: MSTORE 00002ba7: PUSH1 0x20 00002ba9: ADD 00002baa: DUP3 00002bab: DUP1 00002bac: SLOAD 00002bad: DUP1 00002bae: ISZERO 00002baf: PUSH2 0x2101 00002bb2: JUMPI 00002bb3: PUSH1 0x20 00002bb5: MUL 00002bb6: DUP3 00002bb7: ADD 00002bb8: SWAP2 00002bb9: SWAP1 00002bba: PUSH1 0x00 00002bbc: MSTORE 00002bbd: PUSH1 0x20 00002bbf: PUSH1 0x00 00002bc1: KECCAK256 00002bc2: SWAP1 00002bc3: DUP2 00002bc4: SLOAD 00002bc5: PUSH1 0x01 00002bc7: PUSH1 0x01 00002bc9: PUSH1 0xa0 00002bcb: SHL 00002bcc: SUB 00002bcd: AND 00002bce: DUP2 00002bcf: MSTORE 00002bd0: PUSH1 0x01 00002bd2: SWAP1 00002bd3: SWAP2 00002bd4: ADD 00002bd5: SWAP1 00002bd6: PUSH1 0x20 00002bd8: ADD 00002bd9: DUP1 00002bda: DUP4 00002bdb: GT 00002bdc: PUSH2 0x20e3 00002bdf: JUMPI 00002be0: POP 00002be1: POP 00002be2: POP 00002be3: POP 00002be4: POP 00002be5: PUSH2 0x366a 00002be8: SWAP1 00002be9: SWAP2 00002bea: SWAP1 00002beb: PUSH4 0xffffffff 00002bf0: AND 00002bf1: JUMP 00002bf2: JUMPDEST 00002bf3: PUSH2 0x2c43 00002bf6: JUMPI 00002bf7: PUSH1 0x40 00002bf9: DUP1 00002bfa: MLOAD 00002bfb: PUSH3 0x461bcd 00002bff: PUSH1 0xe5 00002c01: SHL 00002c02: DUP2 00002c03: MSTORE 00002c04: PUSH1 0x20 00002c06: PUSH1 0x04 00002c08: DUP3 00002c09: ADD 00002c0a: DUP2 00002c0b: SWAP1 00002c0c: MSTORE 00002c0d: PUSH1 0x24 00002c0f: DUP3 00002c10: ADD 00002c11: MSTORE 00002c12: PUSH32 0x43616c6c6572206973206e6f742061207365727669636520636f6e7472616374 00002c33: PUSH1 0x44 00002c35: DUP3 00002c36: ADD 00002c37: MSTORE 00002c38: SWAP1 00002c39: MLOAD 00002c3a: SWAP1 00002c3b: DUP2 00002c3c: SWAP1 00002c3d: SUB 00002c3e: PUSH1 0x64 00002c40: ADD 00002c41: SWAP1 00002c42: REVERT 00002c43: JUMPDEST 00002c44: PUSH1 0x00 00002c46: PUSH2 0x2c5c 00002c49: PUSH1 0x1e 00002c4b: SLOAD 00002c4c: PUSH1 0x25 00002c4e: SLOAD 00002c4f: PUSH2 0x33ab 00002c52: SWAP1 00002c53: SWAP2 00002c54: SWAP1 00002c55: PUSH4 0xffffffff 00002c5a: AND 00002c5b: JUMP 00002c5c: JUMPDEST 00002c5d: PUSH1 0x27 00002c5f: DUP1 00002c60: SLOAD 00002c61: PUSH1 0x01 00002c63: PUSH1 0x01 00002c65: PUSH1 0xa0 00002c67: SHL 00002c68: SUB 00002c69: NOT 00002c6a: AND 00002c6b: CALLER 00002c6c: OR 00002c6d: SWAP1 00002c6e: SSTORE 00002c6f: SWAP1 00002c70: POP 00002c71: PUSH2 0x2c89 00002c74: DUP4 00002c75: PUSH2 0x2c84 00002c78: CALLVALUE 00002c79: DUP5 00002c7a: PUSH4 0xffffffff 00002c7f: PUSH2 0x371a 00002c82: AND 00002c83: JUMP 00002c84: JUMPDEST 00002c85: PUSH2 0x375c 00002c88: JUMP 00002c89: JUMPDEST 00002c8a: PUSH1 0x1b 00002c8c: SLOAD 00002c8d: PUSH1 0x40 00002c8f: DUP1 00002c90: MLOAD 00002c91: PUSH4 0xba7bffd3 00002c96: PUSH1 0xe0 00002c98: SHL 00002c99: DUP2 00002c9a: MSTORE 00002c9b: PUSH1 0x01 00002c9d: PUSH1 0x01 00002c9f: PUSH1 0xa0 00002ca1: SHL 00002ca2: SUB 00002ca3: DUP6 00002ca4: DUP2 00002ca5: AND 00002ca6: PUSH1 0x04 00002ca8: DUP4 00002ca9: ADD 00002caa: MSTORE 00002cab: SWAP2 00002cac: MLOAD 00002cad: PUSH1 0x00 00002caf: SWAP4 00002cb0: SWAP3 00002cb1: SWAP1 00002cb2: SWAP3 00002cb3: AND 00002cb4: SWAP2 00002cb5: PUSH4 0xba7bffd3 00002cba: SWAP2 00002cbb: PUSH1 0x24 00002cbd: DUP1 00002cbe: DUP3 00002cbf: ADD 00002cc0: SWAP3 00002cc1: PUSH1 0x20 00002cc3: SWAP3 00002cc4: SWAP1 00002cc5: SWAP2 00002cc6: SWAP1 00002cc7: DUP3 00002cc8: SWAP1 00002cc9: SUB 00002cca: ADD 00002ccb: DUP2 00002ccc: DUP7 00002ccd: DUP1 00002cce: EXTCODESIZE 00002ccf: ISZERO 00002cd0: DUP1 00002cd1: ISZERO 00002cd2: PUSH2 0x2cda 00002cd5: JUMPI 00002cd6: PUSH1 0x00 00002cd8: DUP1 00002cd9: REVERT 00002cda: JUMPDEST 00002cdb: POP 00002cdc: GAS 00002cdd: STATICCALL 00002cde: ISZERO 00002cdf: DUP1 00002ce0: ISZERO 00002ce1: PUSH2 0x2cee 00002ce4: JUMPI 00002ce5: RETURNDATASIZE 00002ce6: PUSH1 0x00 00002ce8: DUP1 00002ce9: RETURNDATACOPY 00002cea: RETURNDATASIZE 00002ceb: PUSH1 0x00 00002ced: REVERT 00002cee: JUMPDEST 00002cef: POP 00002cf0: POP 00002cf1: POP 00002cf2: POP 00002cf3: PUSH1 0x40 00002cf5: MLOAD 00002cf6: RETURNDATASIZE 00002cf7: PUSH1 0x20 00002cf9: DUP2 00002cfa: LT 00002cfb: ISZERO 00002cfc: PUSH2 0x2d04 00002cff: JUMPI 00002d00: PUSH1 0x00 00002d02: DUP1 00002d03: REVERT 00002d04: JUMPDEST 00002d05: POP 00002d06: MLOAD 00002d07: PUSH1 0x40 00002d09: MLOAD 00002d0a: PUSH1 0x01 00002d0c: PUSH1 0x01 00002d0e: PUSH1 0xa0 00002d10: SHL 00002d11: SUB 00002d12: SWAP1 00002d13: SWAP2 00002d14: AND 00002d15: SWAP1 00002d16: DUP4 00002d17: SWAP1 00002d18: PUSH1 0x00 00002d1a: DUP2 00002d1b: DUP2 00002d1c: DUP2 00002d1d: DUP6 00002d1e: DUP8 00002d1f: GAS 00002d20: CALL 00002d21: SWAP3 00002d22: POP 00002d23: POP 00002d24: POP 00002d25: RETURNDATASIZE 00002d26: DUP1 00002d27: PUSH1 0x00 00002d29: DUP2 00002d2a: EQ 00002d2b: PUSH2 0x2d50 00002d2e: JUMPI 00002d2f: PUSH1 0x40 00002d31: MLOAD 00002d32: SWAP2 00002d33: POP 00002d34: PUSH1 0x1f 00002d36: NOT 00002d37: PUSH1 0x3f 00002d39: RETURNDATASIZE 00002d3a: ADD 00002d3b: AND 00002d3c: DUP3 00002d3d: ADD 00002d3e: PUSH1 0x40 00002d40: MSTORE 00002d41: RETURNDATASIZE 00002d42: DUP3 00002d43: MSTORE 00002d44: RETURNDATASIZE 00002d45: PUSH1 0x00 00002d47: PUSH1 0x20 00002d49: DUP5 00002d4a: ADD 00002d4b: RETURNDATACOPY 00002d4c: PUSH2 0x2d55 00002d4f: JUMP 00002d50: JUMPDEST 00002d51: PUSH1 0x60 00002d53: SWAP2 00002d54: POP 00002d55: JUMPDEST 00002d56: POP 00002d57: POP 00002d58: SWAP1 00002d59: POP 00002d5a: DUP1 00002d5b: PUSH2 0x21fe 00002d5e: JUMPI 00002d5f: PUSH1 0x40 00002d61: MLOAD 00002d62: PUSH3 0x461bcd 00002d66: PUSH1 0xe5 00002d68: SHL 00002d69: DUP2 00002d6a: MSTORE 00002d6b: PUSH1 0x04 00002d6d: ADD 00002d6e: DUP1 00002d6f: DUP1 00002d70: PUSH1 0x20 00002d72: ADD 00002d73: DUP3 00002d74: DUP2 00002d75: SUB 00002d76: DUP3 00002d77: MSTORE 00002d78: PUSH1 0x24 00002d7a: DUP2 00002d7b: MSTORE 00002d7c: PUSH1 0x20 00002d7e: ADD 00002d7f: DUP1 00002d80: PUSH2 0x41f2 00002d83: PUSH1 0x24 00002d85: SWAP2 00002d86: CODECOPY 00002d87: PUSH1 0x40 00002d89: ADD 00002d8a: SWAP2 00002d8b: POP 00002d8c: POP 00002d8d: PUSH1 0x40 00002d8f: MLOAD 00002d90: DUP1 00002d91: SWAP2 00002d92: SUB 00002d93: SWAP1 00002d94: REVERT 00002d95: JUMPDEST 00002d96: PUSH1 0x04 00002d98: SLOAD 00002d99: SWAP1 00002d9a: JUMP 00002d9b: JUMPDEST 00002d9c: PUSH1 0x40 00002d9e: DUP1 00002d9f: MLOAD 00002da0: PUSH4 0xdc262703 00002da5: PUSH1 0xe0 00002da7: SHL 00002da8: DUP2 00002da9: MSTORE 00002daa: PUSH1 0x0b 00002dac: PUSH1 0x04 00002dae: DUP3 00002daf: ADD 00002db0: DUP2 00002db1: DUP2 00002db2: MSTORE 00002db3: PUSH1 0x24 00002db5: DUP4 00002db6: ADD 00002db7: SWAP4 00002db8: DUP5 00002db9: MSTORE 00002dba: DUP5 00002dbb: MLOAD 00002dbc: PUSH1 0x44 00002dbe: DUP5 00002dbf: ADD 00002dc0: MSTORE 00002dc1: DUP5 00002dc2: MLOAD 00002dc3: PUSH1 0x60 00002dc5: SWAP5 00002dc6: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 00002ddb: SWAP5 00002ddc: PUSH4 0xdc262703 00002de1: SWAP5 00002de2: SWAP4 00002de3: DUP9 00002de4: SWAP4 00002de5: SWAP1 00002de6: SWAP3 00002de7: SWAP2 00002de8: PUSH1 0x64 00002dea: ADD 00002deb: SWAP1 00002dec: PUSH1 0x20 00002dee: DUP6 00002def: ADD 00002df0: SWAP1 00002df1: DUP1 00002df2: DUP4 00002df3: DUP4 00002df4: PUSH1 0x00 00002df6: JUMPDEST 00002df7: DUP4 00002df8: DUP2 00002df9: LT 00002dfa: ISZERO 00002dfb: PUSH2 0x2e0e 00002dfe: JUMPI 00002dff: DUP2 00002e00: DUP2 00002e01: ADD 00002e02: MLOAD 00002e03: DUP4 00002e04: DUP3 00002e05: ADD 00002e06: MSTORE 00002e07: PUSH1 0x20 00002e09: ADD 00002e0a: PUSH2 0x2df6 00002e0d: JUMP 00002e0e: JUMPDEST 00002e0f: POP 00002e10: POP 00002e11: POP 00002e12: POP 00002e13: SWAP1 00002e14: POP 00002e15: SWAP1 00002e16: DUP2 00002e17: ADD 00002e18: SWAP1 00002e19: PUSH1 0x1f 00002e1b: AND 00002e1c: DUP1 00002e1d: ISZERO 00002e1e: PUSH2 0x2e3b 00002e21: JUMPI 00002e22: DUP1 00002e23: DUP3 00002e24: SUB 00002e25: DUP1 00002e26: MLOAD 00002e27: PUSH1 0x01 00002e29: DUP4 00002e2a: PUSH1 0x20 00002e2c: SUB 00002e2d: PUSH2 0x0100 00002e30: EXP 00002e31: SUB 00002e32: NOT 00002e33: AND 00002e34: DUP2 00002e35: MSTORE 00002e36: PUSH1 0x20 00002e38: ADD 00002e39: SWAP2 00002e3a: POP 00002e3b: JUMPDEST 00002e3c: POP 00002e3d: SWAP4 00002e3e: POP 00002e3f: POP 00002e40: POP 00002e41: POP 00002e42: PUSH1 0x00 00002e44: PUSH1 0x40 00002e46: MLOAD 00002e47: DUP1 00002e48: DUP4 00002e49: SUB 00002e4a: DUP2 00002e4b: DUP7 00002e4c: DUP1 00002e4d: EXTCODESIZE 00002e4e: ISZERO 00002e4f: DUP1 00002e50: ISZERO 00002e51: PUSH2 0x2e59 00002e54: JUMPI 00002e55: PUSH1 0x00 00002e57: DUP1 00002e58: REVERT 00002e59: JUMPDEST 00002e5a: POP 00002e5b: GAS 00002e5c: DELEGATECALL 00002e5d: ISZERO 00002e5e: DUP1 00002e5f: ISZERO 00002e60: PUSH2 0x2e6d 00002e63: JUMPI 00002e64: RETURNDATASIZE 00002e65: PUSH1 0x00 00002e67: DUP1 00002e68: RETURNDATACOPY 00002e69: RETURNDATASIZE 00002e6a: PUSH1 0x00 00002e6c: REVERT 00002e6d: JUMPDEST 00002e6e: POP 00002e6f: POP 00002e70: POP 00002e71: POP 00002e72: PUSH1 0x40 00002e74: MLOAD 00002e75: RETURNDATASIZE 00002e76: PUSH1 0x00 00002e78: DUP3 00002e79: RETURNDATACOPY 00002e7a: PUSH1 0x1f 00002e7c: RETURNDATASIZE 00002e7d: SWAP1 00002e7e: DUP2 00002e7f: ADD 00002e80: PUSH1 0x1f 00002e82: NOT 00002e83: AND 00002e84: DUP3 00002e85: ADD 00002e86: PUSH1 0x40 00002e88: MSTORE 00002e89: PUSH1 0x20 00002e8b: DUP2 00002e8c: LT 00002e8d: ISZERO 00002e8e: PUSH2 0x2e96 00002e91: JUMPI 00002e92: PUSH1 0x00 00002e94: DUP1 00002e95: REVERT 00002e96: JUMPDEST 00002e97: DUP2 00002e98: ADD 00002e99: SWAP1 00002e9a: DUP1 00002e9b: DUP1 00002e9c: MLOAD 00002e9d: PUSH1 0x40 00002e9f: MLOAD 00002ea0: SWAP4 00002ea1: SWAP3 00002ea2: SWAP2 00002ea3: SWAP1 00002ea4: DUP5 00002ea5: PUSH1 0x01 00002ea7: PUSH1 0x20 00002ea9: SHL 00002eaa: DUP3 00002eab: GT 00002eac: ISZERO 00002ead: PUSH2 0x2eb5 00002eb0: JUMPI 00002eb1: PUSH1 0x00 00002eb3: DUP1 00002eb4: REVERT 00002eb5: JUMPDEST 00002eb6: SWAP1 00002eb7: DUP4 00002eb8: ADD 00002eb9: SWAP1 00002eba: PUSH1 0x20 00002ebc: DUP3 00002ebd: ADD 00002ebe: DUP6 00002ebf: DUP2 00002ec0: GT 00002ec1: ISZERO 00002ec2: PUSH2 0x2eca 00002ec5: JUMPI 00002ec6: PUSH1 0x00 00002ec8: DUP1 00002ec9: REVERT 00002eca: JUMPDEST 00002ecb: DUP3 00002ecc: MLOAD 00002ecd: DUP7 00002ece: PUSH1 0x20 00002ed0: DUP3 00002ed1: MUL 00002ed2: DUP4 00002ed3: ADD 00002ed4: GT 00002ed5: PUSH1 0x01 00002ed7: PUSH1 0x20 00002ed9: SHL 00002eda: DUP3 00002edb: GT 00002edc: OR 00002edd: ISZERO 00002ede: PUSH2 0x2ee6 00002ee1: JUMPI 00002ee2: PUSH1 0x00 00002ee4: DUP1 00002ee5: REVERT 00002ee6: JUMPDEST 00002ee7: DUP3 00002ee8: MSTORE 00002ee9: POP 00002eea: DUP2 00002eeb: MLOAD 00002eec: PUSH1 0x20 00002eee: SWAP2 00002eef: DUP3 00002ef0: ADD 00002ef1: SWAP3 00002ef2: DUP3 00002ef3: ADD 00002ef4: SWAP2 00002ef5: MUL 00002ef6: DUP1 00002ef7: DUP4 00002ef8: DUP4 00002ef9: PUSH1 0x00 00002efb: JUMPDEST 00002efc: DUP4 00002efd: DUP2 00002efe: LT 00002eff: ISZERO 00002f00: PUSH2 0x2f13 00002f03: JUMPI 00002f04: DUP2 00002f05: DUP2 00002f06: ADD 00002f07: MLOAD 00002f08: DUP4 00002f09: DUP3 00002f0a: ADD 00002f0b: MSTORE 00002f0c: PUSH1 0x20 00002f0e: ADD 00002f0f: PUSH2 0x2efb 00002f12: JUMP 00002f13: JUMPDEST 00002f14: POP 00002f15: POP 00002f16: POP 00002f17: POP 00002f18: SWAP1 00002f19: POP 00002f1a: ADD 00002f1b: PUSH1 0x40 00002f1d: MSTORE 00002f1e: POP 00002f1f: POP 00002f20: POP 00002f21: SWAP1 00002f22: POP 00002f23: SWAP2 00002f24: SWAP1 00002f25: POP 00002f26: JUMP 00002f27: JUMPDEST 00002f28: PUSH1 0x1e 00002f2a: SLOAD 00002f2b: DUP2 00002f2c: JUMP 00002f2d: JUMPDEST 00002f2e: PUSH1 0x0b 00002f30: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 00002f45: PUSH4 0x20bc2866 00002f4a: SWAP1 00002f4b: SWAP2 00002f4c: DUP5 00002f4d: DUP5 00002f4e: PUSH1 0x1b 00002f50: PUSH1 0x00 00002f52: SWAP1 00002f53: SLOAD 00002f54: SWAP1 00002f55: PUSH2 0x0100 00002f58: EXP 00002f59: SWAP1 00002f5a: DIV 00002f5b: PUSH1 0x01 00002f5d: PUSH1 0x01 00002f5f: PUSH1 0xa0 00002f61: SHL 00002f62: SUB 00002f63: AND 00002f64: PUSH1 0x01 00002f66: PUSH1 0x01 00002f68: PUSH1 0xa0 00002f6a: SHL 00002f6b: SUB 00002f6c: AND 00002f6d: PUSH4 0xec5ffac2 00002f72: PUSH1 0x40 00002f74: MLOAD 00002f75: DUP2 00002f76: PUSH4 0xffffffff 00002f7b: AND 00002f7c: PUSH1 0xe0 00002f7e: SHL 00002f7f: DUP2 00002f80: MSTORE 00002f81: PUSH1 0x04 00002f83: ADD 00002f84: PUSH1 0x20 00002f86: PUSH1 0x40 00002f88: MLOAD 00002f89: DUP1 00002f8a: DUP4 00002f8b: SUB 00002f8c: DUP2 00002f8d: DUP7 00002f8e: DUP1 00002f8f: EXTCODESIZE 00002f90: ISZERO 00002f91: DUP1 00002f92: ISZERO 00002f93: PUSH2 0x2f9b 00002f96: JUMPI 00002f97: PUSH1 0x00 00002f99: DUP1 00002f9a: REVERT 00002f9b: JUMPDEST 00002f9c: POP 00002f9d: GAS 00002f9e: STATICCALL 00002f9f: ISZERO 00002fa0: DUP1 00002fa1: ISZERO 00002fa2: PUSH2 0x2faf 00002fa5: JUMPI 00002fa6: RETURNDATASIZE 00002fa7: PUSH1 0x00 00002fa9: DUP1 00002faa: RETURNDATACOPY 00002fab: RETURNDATASIZE 00002fac: PUSH1 0x00 00002fae: REVERT 00002faf: JUMPDEST 00002fb0: POP 00002fb1: POP 00002fb2: POP 00002fb3: POP 00002fb4: PUSH1 0x40 00002fb6: MLOAD 00002fb7: RETURNDATASIZE 00002fb8: PUSH1 0x20 00002fba: DUP2 00002fbb: LT 00002fbc: ISZERO 00002fbd: PUSH2 0x2fc5 00002fc0: JUMPI 00002fc1: PUSH1 0x00 00002fc3: DUP1 00002fc4: REVERT 00002fc5: JUMPDEST 00002fc6: POP 00002fc7: MLOAD 00002fc8: PUSH1 0x40 00002fca: MLOAD 00002fcb: PUSH1 0x01 00002fcd: PUSH1 0x01 00002fcf: PUSH1 0xe0 00002fd1: SHL 00002fd2: SUB 00002fd3: NOT 00002fd4: PUSH1 0xe0 00002fd6: DUP8 00002fd7: SWAP1 00002fd8: SHL 00002fd9: AND 00002fda: DUP2 00002fdb: MSTORE 00002fdc: PUSH1 0x04 00002fde: DUP2 00002fdf: ADD 00002fe0: DUP6 00002fe1: DUP2 00002fe2: MSTORE 00002fe3: PUSH1 0x24 00002fe5: DUP3 00002fe6: ADD 00002fe7: DUP6 00002fe8: SWAP1 00002fe9: MSTORE 00002fea: PUSH1 0x64 00002fec: DUP3 00002fed: ADD 00002fee: DUP4 00002fef: SWAP1 00002ff0: MSTORE 00002ff1: PUSH1 0x80 00002ff3: PUSH1 0x44 00002ff5: DUP4 00002ff6: ADD 00002ff7: SWAP1 00002ff8: DUP2 00002ff9: MSTORE 00002ffa: DUP5 00002ffb: MLOAD 00002ffc: PUSH1 0x84 00002ffe: DUP5 00002fff: ADD 00003000: MSTORE 00003001: DUP5 00003002: MLOAD 00003003: SWAP2 00003004: SWAP3 00003005: SWAP1 00003006: SWAP2 00003007: PUSH1 0xa4 00003009: SWAP1 0000300a: SWAP2 0000300b: ADD 0000300c: SWAP1 0000300d: PUSH1 0x20 0000300f: DUP7 00003010: ADD 00003011: SWAP1 00003012: DUP1 00003013: DUP4 00003014: DUP4 00003015: PUSH1 0x00 00003017: JUMPDEST 00003018: DUP4 00003019: DUP2 0000301a: LT 0000301b: ISZERO 0000301c: PUSH2 0x302f 0000301f: JUMPI 00003020: DUP2 00003021: DUP2 00003022: ADD 00003023: MLOAD 00003024: DUP4 00003025: DUP3 00003026: ADD 00003027: MSTORE 00003028: PUSH1 0x20 0000302a: ADD 0000302b: PUSH2 0x3017 0000302e: JUMP 0000302f: JUMPDEST 00003030: POP 00003031: POP 00003032: POP 00003033: POP 00003034: SWAP1 00003035: POP 00003036: SWAP1 00003037: DUP2 00003038: ADD 00003039: SWAP1 0000303a: PUSH1 0x1f 0000303c: AND 0000303d: DUP1 0000303e: ISZERO 0000303f: PUSH2 0x305c 00003042: JUMPI 00003043: DUP1 00003044: DUP3 00003045: SUB 00003046: DUP1 00003047: MLOAD 00003048: PUSH1 0x01 0000304a: DUP4 0000304b: PUSH1 0x20 0000304d: SUB 0000304e: PUSH2 0x0100 00003051: EXP 00003052: SUB 00003053: NOT 00003054: AND 00003055: DUP2 00003056: MSTORE 00003057: PUSH1 0x20 00003059: ADD 0000305a: SWAP2 0000305b: POP 0000305c: JUMPDEST 0000305d: POP 0000305e: SWAP6 0000305f: POP 00003060: POP 00003061: POP 00003062: POP 00003063: POP 00003064: POP 00003065: PUSH1 0x00 00003067: PUSH1 0x40 00003069: MLOAD 0000306a: DUP1 0000306b: DUP4 0000306c: SUB 0000306d: DUP2 0000306e: DUP7 0000306f: DUP1 00003070: EXTCODESIZE 00003071: ISZERO 00003072: DUP1 00003073: ISZERO 00003074: PUSH2 0x307c 00003077: JUMPI 00003078: PUSH1 0x00 0000307a: DUP1 0000307b: REVERT 0000307c: JUMPDEST 0000307d: POP 0000307e: GAS 0000307f: DELEGATECALL 00003080: ISZERO 00003081: DUP1 00003082: ISZERO 00003083: PUSH2 0x3090 00003086: JUMPI 00003087: RETURNDATASIZE 00003088: PUSH1 0x00 0000308a: DUP1 0000308b: RETURNDATACOPY 0000308c: RETURNDATASIZE 0000308d: PUSH1 0x00 0000308f: REVERT 00003090: JUMPDEST 00003091: POP 00003092: POP 00003093: PUSH1 0x40 00003095: MLOAD 00003096: DUP5 00003097: SWAP3 00003098: POP 00003099: PUSH32 0x6124f28ae7240a98a8ad3410bcd1f3bb0a113fc9834d5bd16426f9e1bd698fde 000030ba: SWAP2 000030bb: POP 000030bc: PUSH1 0x00 000030be: SWAP1 000030bf: LOG2 000030c0: POP 000030c1: POP 000030c2: JUMP 000030c3: JUMPDEST 000030c4: PUSH1 0x13 000030c6: SLOAD 000030c7: SWAP1 000030c8: JUMP 000030c9: JUMPDEST 000030ca: PUSH1 0x60 000030cc: PUSH2 0x0f84 000030cf: PUSH1 0x0b 000030d1: DUP4 000030d2: PUSH4 0xffffffff 000030d7: PUSH2 0x39af 000030da: AND 000030db: JUMP 000030dc: JUMPDEST 000030dd: PUSH1 0x0e 000030df: SLOAD 000030e0: SWAP1 000030e1: JUMP 000030e2: JUMPDEST 000030e3: PUSH1 0x00 000030e5: DUP1 000030e6: DUP4 000030e7: PUSH1 0x02 000030e9: ADD 000030ea: DUP4 000030eb: PUSH1 0x40 000030ed: MLOAD 000030ee: DUP1 000030ef: DUP3 000030f0: DUP1 000030f1: MLOAD 000030f2: SWAP1 000030f3: PUSH1 0x20 000030f5: ADD 000030f6: SWAP1 000030f7: DUP1 000030f8: DUP4 000030f9: DUP4 000030fa: JUMPDEST 000030fb: PUSH1 0x20 000030fd: DUP4 000030fe: LT 000030ff: PUSH2 0x3119 00003102: JUMPI 00003103: DUP1 00003104: MLOAD 00003105: DUP3 00003106: MSTORE 00003107: PUSH1 0x1f 00003109: NOT 0000310a: SWAP1 0000310b: SWAP3 0000310c: ADD 0000310d: SWAP2 0000310e: PUSH1 0x20 00003110: SWAP2 00003111: DUP3 00003112: ADD 00003113: SWAP2 00003114: ADD 00003115: PUSH2 0x30fa 00003118: JUMP 00003119: JUMPDEST 0000311a: MLOAD 0000311b: DUP2 0000311c: MLOAD 0000311d: PUSH1 0x20 0000311f: SWAP4 00003120: DUP5 00003121: SUB 00003122: PUSH2 0x0100 00003125: EXP 00003126: PUSH1 0x00 00003128: NOT 00003129: ADD 0000312a: DUP1 0000312b: NOT 0000312c: SWAP1 0000312d: SWAP3 0000312e: AND 0000312f: SWAP2 00003130: AND 00003131: OR 00003132: SWAP1 00003133: MSTORE 00003134: SWAP3 00003135: ADD 00003136: SWAP5 00003137: DUP6 00003138: MSTORE 00003139: POP 0000313a: PUSH1 0x40 0000313c: MLOAD 0000313d: SWAP4 0000313e: DUP5 0000313f: SWAP1 00003140: SUB 00003141: ADD 00003142: SWAP1 00003143: SWAP3 00003144: KECCAK256 00003145: SLOAD 00003146: SWAP3 00003147: SWAP1 00003148: SWAP3 00003149: GT 0000314a: SWAP6 0000314b: SWAP5 0000314c: POP 0000314d: POP 0000314e: POP 0000314f: POP 00003150: POP 00003151: JUMP 00003152: JUMPDEST 00003153: PUSH1 0x00 00003155: PUSH1 0x29 00003157: SLOAD 00003158: PUSH1 0x00 0000315a: EQ 0000315b: ISZERO 0000315c: DUP1 0000315d: ISZERO 0000315e: PUSH2 0x15d4 00003161: JUMPI 00003162: POP 00003163: POP 00003164: PUSH1 0x22 00003166: SLOAD 00003167: PUSH1 0x29 00003169: SLOAD 0000316a: ADD 0000316b: NUMBER 0000316c: GT 0000316d: SWAP1 0000316e: JUMP 0000316f: JUMPDEST 00003170: PUSH2 0x3177 00003173: PUSH2 0x17c8 00003176: JUMP 00003177: JUMPDEST 00003178: ISZERO 00003179: PUSH2 0x31ba 0000317c: JUMPI 0000317d: PUSH1 0x40 0000317f: DUP1 00003180: MLOAD 00003181: PUSH3 0x461bcd 00003185: PUSH1 0xe5 00003187: SHL 00003188: DUP2 00003189: MSTORE 0000318a: PUSH1 0x20 0000318c: PUSH1 0x04 0000318e: DUP3 0000318f: ADD 00003190: MSTORE 00003191: PUSH1 0x0e 00003193: PUSH1 0x24 00003195: DUP3 00003196: ADD 00003197: MSTORE 00003198: PUSH14 0x426561636f6e2069732062757379 000031a7: PUSH1 0x90 000031a9: SHL 000031aa: PUSH1 0x44 000031ac: DUP3 000031ad: ADD 000031ae: MSTORE 000031af: SWAP1 000031b0: MLOAD 000031b1: SWAP1 000031b2: DUP2 000031b3: SWAP1 000031b4: SUB 000031b5: PUSH1 0x64 000031b7: ADD 000031b8: SWAP1 000031b9: REVERT 000031ba: JUMPDEST 000031bb: DUP4 000031bc: MLOAD 000031bd: PUSH1 0x20 000031bf: DUP1 000031c0: DUP7 000031c1: ADD 000031c2: SWAP2 000031c3: SWAP1 000031c4: SWAP2 000031c5: KECCAK256 000031c6: PUSH1 0x40 000031c8: DUP1 000031c9: MLOAD 000031ca: PUSH4 0x1bf6b567 000031cf: PUSH1 0xe1 000031d1: SHL 000031d2: DUP2 000031d3: MSTORE 000031d4: PUSH1 0x0b 000031d6: PUSH1 0x04 000031d8: DUP3 000031d9: ADD 000031da: MSTORE 000031db: PUSH1 0x24 000031dd: DUP2 000031de: ADD 000031df: SWAP3 000031e0: SWAP1 000031e1: SWAP3 000031e2: MSTORE 000031e3: MLOAD 000031e4: PUSH1 0x00 000031e6: SWAP3 000031e7: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b 000031fc: SWAP3 000031fd: PUSH4 0x37ed6ace 00003202: SWAP3 00003203: PUSH1 0x44 00003205: DUP1 00003206: DUP4 00003207: ADD 00003208: SWAP4 00003209: SWAP3 0000320a: DUP3 0000320b: SWAP1 0000320c: SUB 0000320d: ADD 0000320e: DUP2 0000320f: DUP7 00003210: DUP1 00003211: EXTCODESIZE 00003212: ISZERO 00003213: DUP1 00003214: ISZERO 00003215: PUSH2 0x321d 00003218: JUMPI 00003219: PUSH1 0x00 0000321b: DUP1 0000321c: REVERT 0000321d: JUMPDEST 0000321e: POP 0000321f: GAS 00003220: DELEGATECALL 00003221: ISZERO 00003222: DUP1 00003223: ISZERO 00003224: PUSH2 0x3231 00003227: JUMPI 00003228: RETURNDATASIZE 00003229: PUSH1 0x00 0000322b: DUP1 0000322c: RETURNDATACOPY 0000322d: RETURNDATASIZE 0000322e: PUSH1 0x00 00003230: REVERT 00003231: JUMPDEST 00003232: POP 00003233: POP 00003234: POP 00003235: POP 00003236: PUSH1 0x40 00003238: MLOAD 00003239: RETURNDATASIZE 0000323a: PUSH1 0x20 0000323c: DUP2 0000323d: LT 0000323e: ISZERO 0000323f: PUSH2 0x3247 00003242: JUMPI 00003243: PUSH1 0x00 00003245: DUP1 00003246: REVERT 00003247: JUMPDEST 00003248: POP 00003249: MLOAD 0000324a: PUSH1 0x28 0000324c: DUP8 0000324d: SWAP1 0000324e: SSTORE 0000324f: NUMBER 00003250: PUSH1 0x29 00003252: SSTORE 00003253: PUSH1 0x2c 00003255: DUP5 00003256: SWAP1 00003257: SSTORE 00003258: PUSH1 0x2d 0000325a: DUP4 0000325b: SWAP1 0000325c: SSTORE 0000325d: PUSH1 0x2a 0000325f: DUP2 00003260: SWAP1 00003261: SSTORE 00003262: DUP6 00003263: MLOAD 00003264: SWAP1 00003265: SWAP2 00003266: POP 00003267: PUSH2 0x3277 0000326a: SWAP1 0000326b: PUSH1 0x2b 0000326d: SWAP1 0000326e: PUSH1 0x20 00003270: DUP9 00003271: ADD 00003272: SWAP1 00003273: PUSH2 0x4138 00003276: JUMP 00003277: JUMPDEST 00003278: POP 00003279: PUSH1 0x2e 0000327b: DUP1 0000327c: SLOAD 0000327d: PUSH1 0x01 0000327f: PUSH1 0x01 00003281: PUSH1 0xa0 00003283: SHL 00003284: SUB 00003285: NOT 00003286: AND 00003287: PUSH1 0x01 00003289: PUSH1 0x01 0000328b: PUSH1 0xa0 0000328d: SHL 0000328e: SUB 0000328f: DUP7 00003290: AND 00003291: OR 00003292: SWAP1 00003293: SSTORE 00003294: PUSH1 0x60 00003296: PUSH2 0x32a0 00003299: PUSH1 0x0b 0000329b: DUP4 0000329c: PUSH2 0x39af 0000329f: JUMP 000032a0: JUMPDEST 000032a1: SWAP1 000032a2: POP 000032a3: PUSH32 0xf3a8bf09e4f9146a48f9b91226985ac8d83d971beb4fc9ffdc569790e85a97e4 000032c4: DUP7 000032c5: DUP3 000032c6: PUSH1 0x40 000032c8: MLOAD 000032c9: DUP1 000032ca: DUP1 000032cb: PUSH1 0x20 000032cd: ADD 000032ce: DUP1 000032cf: PUSH1 0x20 000032d1: ADD 000032d2: DUP4 000032d3: DUP2 000032d4: SUB 000032d5: DUP4 000032d6: MSTORE 000032d7: DUP6 000032d8: DUP2 000032d9: DUP2 000032da: MLOAD 000032db: DUP2 000032dc: MSTORE 000032dd: PUSH1 0x20 000032df: ADD 000032e0: SWAP2 000032e1: POP 000032e2: DUP1 000032e3: MLOAD 000032e4: SWAP1 000032e5: PUSH1 0x20 000032e7: ADD 000032e8: SWAP1 000032e9: DUP1 000032ea: DUP4 000032eb: DUP4 000032ec: PUSH1 0x00 000032ee: JUMPDEST 000032ef: DUP4 000032f0: DUP2 000032f1: LT 000032f2: ISZERO 000032f3: PUSH2 0x3306 000032f6: JUMPI 000032f7: DUP2 000032f8: DUP2 000032f9: ADD 000032fa: MLOAD 000032fb: DUP4 000032fc: DUP3 000032fd: ADD 000032fe: MSTORE 000032ff: PUSH1 0x20 00003301: ADD 00003302: PUSH2 0x32ee 00003305: JUMP 00003306: JUMPDEST 00003307: POP 00003308: POP 00003309: POP 0000330a: POP 0000330b: SWAP1 0000330c: POP 0000330d: SWAP1 0000330e: DUP2 0000330f: ADD 00003310: SWAP1 00003311: PUSH1 0x1f 00003313: AND 00003314: DUP1 00003315: ISZERO 00003316: PUSH2 0x3333 00003319: JUMPI 0000331a: DUP1 0000331b: DUP3 0000331c: SUB 0000331d: DUP1 0000331e: MLOAD 0000331f: PUSH1 0x01 00003321: DUP4 00003322: PUSH1 0x20 00003324: SUB 00003325: PUSH2 0x0100 00003328: EXP 00003329: SUB 0000332a: NOT 0000332b: AND 0000332c: DUP2 0000332d: MSTORE 0000332e: PUSH1 0x20 00003330: ADD 00003331: SWAP2 00003332: POP 00003333: JUMPDEST 00003334: POP 00003335: DUP4 00003336: DUP2 00003337: SUB 00003338: DUP3 00003339: MSTORE 0000333a: DUP5 0000333b: MLOAD 0000333c: DUP2 0000333d: MSTORE 0000333e: DUP5 0000333f: MLOAD 00003340: PUSH1 0x20 00003342: SWAP2 00003343: DUP3 00003344: ADD 00003345: SWAP2 00003346: DUP7 00003347: ADD 00003348: SWAP1 00003349: DUP1 0000334a: DUP4 0000334b: DUP4 0000334c: PUSH1 0x00 0000334e: JUMPDEST 0000334f: DUP4 00003350: DUP2 00003351: LT 00003352: ISZERO 00003353: PUSH2 0x3366 00003356: JUMPI 00003357: DUP2 00003358: DUP2 00003359: ADD 0000335a: MLOAD 0000335b: DUP4 0000335c: DUP3 0000335d: ADD 0000335e: MSTORE 0000335f: PUSH1 0x20 00003361: ADD 00003362: PUSH2 0x334e 00003365: JUMP 00003366: JUMPDEST 00003367: POP 00003368: POP 00003369: POP 0000336a: POP 0000336b: SWAP1 0000336c: POP 0000336d: SWAP1 0000336e: DUP2 0000336f: ADD 00003370: SWAP1 00003371: PUSH1 0x1f 00003373: AND 00003374: DUP1 00003375: ISZERO 00003376: PUSH2 0x3393 00003379: JUMPI 0000337a: DUP1 0000337b: DUP3 0000337c: SUB 0000337d: DUP1 0000337e: MLOAD 0000337f: PUSH1 0x01 00003381: DUP4 00003382: PUSH1 0x20 00003384: SUB 00003385: PUSH2 0x0100 00003388: EXP 00003389: SUB 0000338a: NOT 0000338b: AND 0000338c: DUP2 0000338d: MSTORE 0000338e: PUSH1 0x20 00003390: ADD 00003391: SWAP2 00003392: POP 00003393: JUMPDEST 00003394: POP 00003395: SWAP5 00003396: POP 00003397: POP 00003398: POP 00003399: POP 0000339a: POP 0000339b: PUSH1 0x40 0000339d: MLOAD 0000339e: DUP1 0000339f: SWAP2 000033a0: SUB 000033a1: SWAP1 000033a2: LOG1 000033a3: POP 000033a4: POP 000033a5: POP 000033a6: POP 000033a7: POP 000033a8: POP 000033a9: POP 000033aa: JUMP 000033ab: JUMPDEST 000033ac: PUSH1 0x00 000033ae: DUP3 000033af: PUSH2 0x33ba 000033b2: JUMPI 000033b3: POP 000033b4: PUSH1 0x00 000033b6: PUSH2 0x0f84 000033b9: JUMP 000033ba: JUMPDEST 000033bb: DUP3 000033bc: DUP3 000033bd: MUL 000033be: DUP3 000033bf: DUP5 000033c0: DUP3 000033c1: DUP2 000033c2: PUSH2 0x33c7 000033c5: JUMPI 000033c6: INVALID 000033c7: JUMPDEST 000033c8: DIV 000033c9: EQ 000033ca: PUSH2 0x3404 000033cd: JUMPI 000033ce: PUSH1 0x40 000033d0: MLOAD 000033d1: PUSH3 0x461bcd 000033d5: PUSH1 0xe5 000033d7: SHL 000033d8: DUP2 000033d9: MSTORE 000033da: PUSH1 0x04 000033dc: ADD 000033dd: DUP1 000033de: DUP1 000033df: PUSH1 0x20 000033e1: ADD 000033e2: DUP3 000033e3: DUP2 000033e4: SUB 000033e5: DUP3 000033e6: MSTORE 000033e7: PUSH1 0x21 000033e9: DUP2 000033ea: MSTORE 000033eb: PUSH1 0x20 000033ed: ADD 000033ee: DUP1 000033ef: PUSH2 0x41d1 000033f2: PUSH1 0x21 000033f4: SWAP2 000033f5: CODECOPY 000033f6: PUSH1 0x40 000033f8: ADD 000033f9: SWAP2 000033fa: POP 000033fb: POP 000033fc: PUSH1 0x40 000033fe: MLOAD 000033ff: DUP1 00003400: SWAP2 00003401: SUB 00003402: SWAP1 00003403: REVERT 00003404: JUMPDEST 00003405: SWAP4 00003406: SWAP3 00003407: POP 00003408: POP 00003409: POP 0000340a: JUMP 0000340b: JUMPDEST 0000340c: PUSH1 0x1e 0000340e: SLOAD 0000340f: GASPRICE 00003410: ISZERO 00003411: DUP1 00003412: ISZERO 00003413: SWAP1 00003414: PUSH2 0x341e 00003417: JUMPI 00003418: POP 00003419: PUSH1 0x1e 0000341b: SLOAD 0000341c: GASPRICE 0000341d: LT 0000341e: JUMPDEST 0000341f: ISZERO 00003420: PUSH2 0x3426 00003423: JUMPI 00003424: POP 00003425: GASPRICE 00003426: JUMPDEST 00003427: PUSH1 0x24 00003429: SLOAD 0000342a: PUSH1 0x00 0000342c: SWAP1 0000342d: PUSH2 0x343c 00003430: SWAP1 00003431: DUP4 00003432: PUSH4 0xffffffff 00003437: PUSH2 0x33ab 0000343a: AND 0000343b: JUMP 0000343c: JUMPDEST 0000343d: PUSH1 0x1b 0000343f: SLOAD 00003440: PUSH1 0x40 00003442: DUP1 00003443: MLOAD 00003444: PUSH4 0xba7bffd3 00003449: PUSH1 0xe0 0000344b: SHL 0000344c: DUP2 0000344d: MSTORE 0000344e: CALLER 0000344f: PUSH1 0x04 00003451: DUP3 00003452: ADD 00003453: MSTORE 00003454: SWAP1 00003455: MLOAD 00003456: SWAP3 00003457: SWAP4 00003458: POP 00003459: PUSH1 0x00 0000345b: SWAP3 0000345c: PUSH1 0x01 0000345e: PUSH1 0x01 00003460: PUSH1 0xa0 00003462: SHL 00003463: SUB 00003464: SWAP1 00003465: SWAP3 00003466: AND 00003467: SWAP2 00003468: PUSH4 0xba7bffd3 0000346d: SWAP2 0000346e: PUSH1 0x24 00003470: DUP1 00003471: DUP3 00003472: ADD 00003473: SWAP3 00003474: PUSH1 0x20 00003476: SWAP3 00003477: SWAP1 00003478: SWAP2 00003479: SWAP1 0000347a: DUP3 0000347b: SWAP1 0000347c: SUB 0000347d: ADD 0000347e: DUP2 0000347f: DUP7 00003480: DUP1 00003481: EXTCODESIZE 00003482: ISZERO 00003483: DUP1 00003484: ISZERO 00003485: PUSH2 0x348d 00003488: JUMPI 00003489: PUSH1 0x00 0000348b: DUP1 0000348c: REVERT 0000348d: JUMPDEST 0000348e: POP 0000348f: GAS 00003490: STATICCALL 00003491: ISZERO 00003492: DUP1 00003493: ISZERO 00003494: PUSH2 0x34a1 00003497: JUMPI 00003498: RETURNDATASIZE 00003499: PUSH1 0x00 0000349b: DUP1 0000349c: RETURNDATACOPY 0000349d: RETURNDATASIZE 0000349e: PUSH1 0x00 000034a0: REVERT 000034a1: JUMPDEST 000034a2: POP 000034a3: POP 000034a4: POP 000034a5: POP 000034a6: PUSH1 0x40 000034a8: MLOAD 000034a9: RETURNDATASIZE 000034aa: PUSH1 0x20 000034ac: DUP2 000034ad: LT 000034ae: ISZERO 000034af: PUSH2 0x34b7 000034b2: JUMPI 000034b3: PUSH1 0x00 000034b5: DUP1 000034b6: REVERT 000034b7: JUMPDEST 000034b8: POP 000034b9: MLOAD 000034ba: PUSH1 0x26 000034bc: SLOAD 000034bd: SWAP1 000034be: SWAP2 000034bf: POP 000034c0: DUP3 000034c1: LT 000034c2: ISZERO 000034c3: PUSH2 0x35a4 000034c6: JUMPI 000034c7: PUSH1 0x26 000034c9: SLOAD 000034ca: PUSH1 0x00 000034cc: SWAP1 000034cd: PUSH2 0x34dc 000034d0: SWAP1 000034d1: DUP5 000034d2: PUSH4 0xffffffff 000034d7: PUSH2 0x371a 000034da: AND 000034db: JUMP 000034dc: JUMPDEST 000034dd: PUSH1 0x00 000034df: PUSH1 0x26 000034e1: DUP2 000034e2: SWAP1 000034e3: SSTORE 000034e4: PUSH1 0x40 000034e6: MLOAD 000034e7: SWAP2 000034e8: SWAP3 000034e9: POP 000034ea: PUSH1 0x01 000034ec: PUSH1 0x01 000034ee: PUSH1 0xa0 000034f0: SHL 000034f1: SUB 000034f2: DUP5 000034f3: AND 000034f4: SWAP2 000034f5: DUP6 000034f6: SWAP2 000034f7: DUP2 000034f8: DUP2 000034f9: DUP2 000034fa: DUP6 000034fb: DUP8 000034fc: GAS 000034fd: CALL 000034fe: SWAP3 000034ff: POP 00003500: POP 00003501: POP 00003502: RETURNDATASIZE 00003503: DUP1 00003504: PUSH1 0x00 00003506: DUP2 00003507: EQ 00003508: PUSH2 0x352d 0000350b: JUMPI 0000350c: PUSH1 0x40 0000350e: MLOAD 0000350f: SWAP2 00003510: POP 00003511: PUSH1 0x1f 00003513: NOT 00003514: PUSH1 0x3f 00003516: RETURNDATASIZE 00003517: ADD 00003518: AND 00003519: DUP3 0000351a: ADD 0000351b: PUSH1 0x40 0000351d: MSTORE 0000351e: RETURNDATASIZE 0000351f: DUP3 00003520: MSTORE 00003521: RETURNDATASIZE 00003522: PUSH1 0x00 00003524: PUSH1 0x20 00003526: DUP5 00003527: ADD 00003528: RETURNDATACOPY 00003529: PUSH2 0x3532 0000352c: JUMP 0000352d: JUMPDEST 0000352e: PUSH1 0x60 00003530: SWAP2 00003531: POP 00003532: JUMPDEST 00003533: POP 00003534: POP 00003535: POP 00003536: PUSH1 0x27 00003538: PUSH1 0x00 0000353a: SWAP1 0000353b: SLOAD 0000353c: SWAP1 0000353d: PUSH2 0x0100 00003540: EXP 00003541: SWAP1 00003542: DIV 00003543: PUSH1 0x01 00003545: PUSH1 0x01 00003547: PUSH1 0xa0 00003549: SHL 0000354a: SUB 0000354b: AND 0000354c: PUSH1 0x01 0000354e: PUSH1 0x01 00003550: PUSH1 0xa0 00003552: SHL 00003553: SUB 00003554: AND 00003555: PUSH4 0x4611b648 0000355a: DUP3 0000355b: PUSH1 0x40 0000355d: MLOAD 0000355e: DUP3 0000355f: PUSH4 0xffffffff 00003564: AND 00003565: PUSH1 0xe0 00003567: SHL 00003568: DUP2 00003569: MSTORE 0000356a: PUSH1 0x04 0000356c: ADD 0000356d: PUSH1 0x00 0000356f: PUSH1 0x40 00003571: MLOAD 00003572: DUP1 00003573: DUP4 00003574: SUB 00003575: DUP2 00003576: DUP6 00003577: DUP9 00003578: DUP1 00003579: EXTCODESIZE 0000357a: ISZERO 0000357b: DUP1 0000357c: ISZERO 0000357d: PUSH2 0x3585 00003580: JUMPI 00003581: PUSH1 0x00 00003583: DUP1 00003584: REVERT 00003585: JUMPDEST 00003586: POP 00003587: GAS 00003588: CALL 00003589: ISZERO 0000358a: DUP1 0000358b: ISZERO 0000358c: PUSH2 0x3599 0000358f: JUMPI 00003590: RETURNDATASIZE 00003591: PUSH1 0x00 00003593: DUP1 00003594: RETURNDATACOPY 00003595: RETURNDATASIZE 00003596: PUSH1 0x00 00003598: REVERT 00003599: JUMPDEST 0000359a: POP 0000359b: POP 0000359c: POP 0000359d: POP 0000359e: POP 0000359f: POP 000035a0: PUSH2 0x15b6 000035a3: JUMP 000035a4: JUMPDEST 000035a5: PUSH1 0x26 000035a7: DUP1 000035a8: SLOAD 000035a9: PUSH1 0x00 000035ab: SWAP2 000035ac: DUP3 000035ad: SWAP1 000035ae: SSTORE 000035af: PUSH1 0x40 000035b1: MLOAD 000035b2: SWAP1 000035b3: SWAP4 000035b4: POP 000035b5: PUSH1 0x01 000035b7: PUSH1 0x01 000035b9: PUSH1 0xa0 000035bb: SHL 000035bc: SUB 000035bd: DUP4 000035be: AND 000035bf: SWAP2 000035c0: DUP5 000035c1: SWAP2 000035c2: SWAP1 000035c3: DUP2 000035c4: DUP2 000035c5: DUP2 000035c6: DUP6 000035c7: DUP8 000035c8: GAS 000035c9: CALL 000035ca: SWAP3 000035cb: POP 000035cc: POP 000035cd: POP 000035ce: RETURNDATASIZE 000035cf: DUP1 000035d0: PUSH1 0x00 000035d2: DUP2 000035d3: EQ 000035d4: PUSH2 0x1e59 000035d7: JUMPI 000035d8: PUSH1 0x40 000035da: MLOAD 000035db: SWAP2 000035dc: POP 000035dd: PUSH1 0x1f 000035df: NOT 000035e0: PUSH1 0x3f 000035e2: RETURNDATASIZE 000035e3: ADD 000035e4: AND 000035e5: DUP3 000035e6: ADD 000035e7: PUSH1 0x40 000035e9: MSTORE 000035ea: RETURNDATASIZE 000035eb: DUP3 000035ec: MSTORE 000035ed: RETURNDATASIZE 000035ee: PUSH1 0x00 000035f0: PUSH1 0x20 000035f2: DUP5 000035f3: ADD 000035f4: RETURNDATACOPY 000035f5: PUSH2 0x1e59 000035f8: JUMP 000035f9: JUMPDEST 000035fa: PUSH1 0x00 000035fc: DUP3 000035fd: PUSH1 0x03 000035ff: ADD 00003600: DUP3 00003601: DUP2 00003602: SLOAD 00003603: DUP2 00003604: LT 00003605: PUSH2 0x360a 00003608: JUMPI 00003609: INVALID 0000360a: JUMPDEST 0000360b: PUSH1 0x00 0000360d: SWAP2 0000360e: DUP3 0000360f: MSTORE 00003610: PUSH1 0x20 00003612: SWAP1 00003613: SWAP2 00003614: KECCAK256 00003615: PUSH1 0x03 00003617: SWAP1 00003618: SWAP2 00003619: MUL 0000361a: ADD 0000361b: PUSH1 0x02 0000361d: ADD 0000361e: SLOAD 0000361f: PUSH1 0xff 00003621: AND 00003622: SWAP4 00003623: SWAP3 00003624: POP 00003625: POP 00003626: POP 00003627: JUMP 00003628: JUMPDEST 00003629: PUSH1 0x00 0000362b: PUSH2 0x3404 0000362e: DUP4 0000362f: DUP4 00003630: PUSH1 0x40 00003632: MLOAD 00003633: DUP1 00003634: PUSH1 0x40 00003636: ADD 00003637: PUSH1 0x40 00003639: MSTORE 0000363a: DUP1 0000363b: PUSH1 0x1a 0000363d: DUP2 0000363e: MSTORE 0000363f: PUSH1 0x20 00003641: ADD 00003642: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00003663: DUP2 00003664: MSTORE 00003665: POP 00003666: PUSH2 0x4025 00003669: JUMP 0000366a: JUMPDEST 0000366b: PUSH1 0x00 0000366d: DUP1 0000366e: JUMPDEST 0000366f: DUP4 00003670: MLOAD 00003671: DUP2 00003672: LT 00003673: ISZERO 00003674: PUSH2 0x36b6 00003677: JUMPI 00003678: DUP4 00003679: DUP2 0000367a: DUP2 0000367b: MLOAD 0000367c: DUP2 0000367d: LT 0000367e: PUSH2 0x3683 00003681: JUMPI 00003682: INVALID 00003683: JUMPDEST 00003684: PUSH1 0x20 00003686: MUL 00003687: PUSH1 0x20 00003689: ADD 0000368a: ADD 0000368b: MLOAD 0000368c: PUSH1 0x01 0000368e: PUSH1 0x01 00003690: PUSH1 0xa0 00003692: SHL 00003693: SUB 00003694: AND 00003695: DUP4 00003696: PUSH1 0x01 00003698: PUSH1 0x01 0000369a: PUSH1 0xa0 0000369c: SHL 0000369d: SUB 0000369e: AND 0000369f: EQ 000036a0: ISZERO 000036a1: PUSH2 0x36ae 000036a4: JUMPI 000036a5: PUSH1 0x01 000036a7: SWAP2 000036a8: POP 000036a9: POP 000036aa: PUSH2 0x0f84 000036ad: JUMP 000036ae: JUMPDEST 000036af: PUSH1 0x01 000036b1: ADD 000036b2: PUSH2 0x366e 000036b5: JUMP 000036b6: JUMPDEST 000036b7: POP 000036b8: PUSH1 0x00 000036ba: SWAP4 000036bb: SWAP3 000036bc: POP 000036bd: POP 000036be: POP 000036bf: JUMP 000036c0: JUMPDEST 000036c1: PUSH1 0x00 000036c3: DUP3 000036c4: DUP3 000036c5: ADD 000036c6: DUP4 000036c7: DUP2 000036c8: LT 000036c9: ISZERO 000036ca: PUSH2 0x3404 000036cd: JUMPI 000036ce: PUSH1 0x40 000036d0: DUP1 000036d1: MLOAD 000036d2: PUSH3 0x461bcd 000036d6: PUSH1 0xe5 000036d8: SHL 000036d9: DUP2 000036da: MSTORE 000036db: PUSH1 0x20 000036dd: PUSH1 0x04 000036df: DUP3 000036e0: ADD 000036e1: MSTORE 000036e2: PUSH1 0x1b 000036e4: PUSH1 0x24 000036e6: DUP3 000036e7: ADD 000036e8: MSTORE 000036e9: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 0000370a: PUSH1 0x44 0000370c: DUP3 0000370d: ADD 0000370e: MSTORE 0000370f: SWAP1 00003710: MLOAD 00003711: SWAP1 00003712: DUP2 00003713: SWAP1 00003714: SUB 00003715: PUSH1 0x64 00003717: ADD 00003718: SWAP1 00003719: REVERT 0000371a: JUMPDEST 0000371b: PUSH1 0x00 0000371d: PUSH2 0x3404 00003720: DUP4 00003721: DUP4 00003722: PUSH1 0x40 00003724: MLOAD 00003725: DUP1 00003726: PUSH1 0x40 00003728: ADD 00003729: PUSH1 0x40 0000372b: MSTORE 0000372c: DUP1 0000372d: PUSH1 0x1e 0000372f: DUP2 00003730: MSTORE 00003731: PUSH1 0x20 00003733: ADD 00003734: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00003755: DUP2 00003756: MSTORE 00003757: POP 00003758: PUSH2 0x40c7 0000375b: JUMP 0000375c: JUMPDEST 0000375d: PUSH1 0x24 0000375f: SLOAD 00003760: PUSH1 0x1e 00003762: SLOAD 00003763: PUSH2 0x3771 00003766: SWAP2 00003767: PUSH4 0xffffffff 0000376c: PUSH2 0x33ab 0000376f: AND 00003770: JUMP 00003771: JUMPDEST 00003772: DUP2 00003773: LT 00003774: ISZERO 00003775: PUSH2 0x37bc 00003778: JUMPI 00003779: PUSH1 0x40 0000377b: DUP1 0000377c: MLOAD 0000377d: PUSH3 0x461bcd 00003781: PUSH1 0xe5 00003783: SHL 00003784: DUP2 00003785: MSTORE 00003786: PUSH1 0x20 00003788: PUSH1 0x04 0000378a: DUP3 0000378b: ADD 0000378c: MSTORE 0000378d: PUSH1 0x14 0000378f: PUSH1 0x24 00003791: DUP3 00003792: ADD 00003793: MSTORE 00003794: PUSH20 0x496e73756666696369656e7420444b4720666565 000037a9: PUSH1 0x60 000037ab: SHL 000037ac: PUSH1 0x44 000037ae: DUP3 000037af: ADD 000037b0: MSTORE 000037b1: SWAP1 000037b2: MLOAD 000037b3: SWAP1 000037b4: DUP2 000037b5: SWAP1 000037b6: SUB 000037b7: PUSH1 0x64 000037b9: ADD 000037ba: SWAP1 000037bb: REVERT 000037bc: JUMPDEST 000037bd: PUSH2 0x37c4 000037c0: PUSH2 0x1152 000037c3: JUMP 000037c4: JUMPDEST 000037c5: PUSH2 0x3815 000037c8: JUMPI 000037c9: PUSH1 0x40 000037cb: DUP1 000037cc: MLOAD 000037cd: PUSH3 0x461bcd 000037d1: PUSH1 0xe5 000037d3: SHL 000037d4: DUP2 000037d5: MSTORE 000037d6: PUSH1 0x20 000037d8: PUSH1 0x04 000037da: DUP3 000037db: ADD 000037dc: MSTORE 000037dd: PUSH1 0x1b 000037df: PUSH1 0x24 000037e1: DUP3 000037e2: ADD 000037e3: MSTORE 000037e4: PUSH32 0x47726f75702073656c656374696f6e20696e2070726f67726573730000000000 00003805: PUSH1 0x44 00003807: DUP3 00003808: ADD 00003809: MSTORE 0000380a: SWAP1 0000380b: MLOAD 0000380c: SWAP1 0000380d: DUP2 0000380e: SWAP1 0000380f: SUB 00003810: PUSH1 0x64 00003812: ADD 00003813: SWAP1 00003814: REVERT 00003815: JUMPDEST 00003816: PUSH1 0x26 00003818: SLOAD 00003819: ISZERO 0000381a: PUSH2 0x3887 0000381d: JUMPI 0000381e: PUSH1 0x26 00003820: DUP1 00003821: SLOAD 00003822: PUSH1 0x00 00003824: SWAP2 00003825: DUP3 00003826: SWAP1 00003827: SSTORE 00003828: PUSH1 0x27 0000382a: SLOAD 0000382b: PUSH1 0x40 0000382d: DUP1 0000382e: MLOAD 0000382f: PUSH4 0x08c236c9 00003834: PUSH1 0xe3 00003836: SHL 00003837: DUP2 00003838: MSTORE 00003839: SWAP1 0000383a: MLOAD 0000383b: SWAP3 0000383c: SWAP4 0000383d: PUSH1 0x01 0000383f: PUSH1 0x01 00003841: PUSH1 0xa0 00003843: SHL 00003844: SUB 00003845: SWAP1 00003846: SWAP3 00003847: AND 00003848: SWAP3 00003849: PUSH4 0x4611b648 0000384e: SWAP3 0000384f: DUP6 00003850: SWAP3 00003851: PUSH1 0x04 00003853: DUP1 00003854: DUP3 00003855: ADD 00003856: SWAP4 00003857: SWAP2 00003858: DUP3 00003859: SWAP1 0000385a: SUB 0000385b: ADD 0000385c: DUP2 0000385d: DUP6 0000385e: DUP9 0000385f: DUP1 00003860: EXTCODESIZE 00003861: ISZERO 00003862: DUP1 00003863: ISZERO 00003864: PUSH2 0x386c 00003867: JUMPI 00003868: PUSH1 0x00 0000386a: DUP1 0000386b: REVERT 0000386c: JUMPDEST 0000386d: POP 0000386e: GAS 0000386f: CALL 00003870: ISZERO 00003871: DUP1 00003872: ISZERO 00003873: PUSH2 0x3880 00003876: JUMPI 00003877: RETURNDATASIZE 00003878: PUSH1 0x00 0000387a: DUP1 0000387b: RETURNDATACOPY 0000387c: RETURNDATASIZE 0000387d: PUSH1 0x00 0000387f: REVERT 00003880: JUMPDEST 00003881: POP 00003882: POP 00003883: POP 00003884: POP 00003885: POP 00003886: POP 00003887: JUMPDEST 00003888: PUSH1 0x1b 0000388a: PUSH1 0x00 0000388c: SWAP1 0000388d: SLOAD 0000388e: SWAP1 0000388f: PUSH2 0x0100 00003892: EXP 00003893: SWAP1 00003894: DIV 00003895: PUSH1 0x01 00003897: PUSH1 0x01 00003899: PUSH1 0xa0 0000389b: SHL 0000389c: SUB 0000389d: AND 0000389e: PUSH1 0x01 000038a0: PUSH1 0x01 000038a2: PUSH1 0xa0 000038a4: SHL 000038a5: SUB 000038a6: AND 000038a7: PUSH4 0xec5ffac2 000038ac: PUSH1 0x40 000038ae: MLOAD 000038af: DUP2 000038b0: PUSH4 0xffffffff 000038b5: AND 000038b6: PUSH1 0xe0 000038b8: SHL 000038b9: DUP2 000038ba: MSTORE 000038bb: PUSH1 0x04 000038bd: ADD 000038be: PUSH1 0x20 000038c0: PUSH1 0x40 000038c2: MLOAD 000038c3: DUP1 000038c4: DUP4 000038c5: SUB 000038c6: DUP2 000038c7: DUP7 000038c8: DUP1 000038c9: EXTCODESIZE 000038ca: ISZERO 000038cb: DUP1 000038cc: ISZERO 000038cd: PUSH2 0x38d5 000038d0: JUMPI 000038d1: PUSH1 0x00 000038d3: DUP1 000038d4: REVERT 000038d5: JUMPDEST 000038d6: POP 000038d7: GAS 000038d8: STATICCALL 000038d9: ISZERO 000038da: DUP1 000038db: ISZERO 000038dc: PUSH2 0x38e9 000038df: JUMPI 000038e0: RETURNDATASIZE 000038e1: PUSH1 0x00 000038e3: DUP1 000038e4: RETURNDATACOPY 000038e5: RETURNDATASIZE 000038e6: PUSH1 0x00 000038e8: REVERT 000038e9: JUMPDEST 000038ea: POP 000038eb: POP 000038ec: POP 000038ed: POP 000038ee: PUSH1 0x40 000038f0: MLOAD 000038f1: RETURNDATASIZE 000038f2: PUSH1 0x20 000038f4: DUP2 000038f5: LT 000038f6: ISZERO 000038f7: PUSH2 0x38ff 000038fa: JUMPI 000038fb: PUSH1 0x00 000038fd: DUP1 000038fe: REVERT 000038ff: JUMPDEST 00003900: POP 00003901: MLOAD 00003902: PUSH1 0x07 00003904: SSTORE 00003905: PUSH1 0x40 00003907: DUP1 00003908: MLOAD 00003909: PUSH4 0x52f9b3b9 0000390e: PUSH1 0xe0 00003910: SHL 00003911: DUP2 00003912: MSTORE 00003913: PUSH1 0x01 00003915: PUSH1 0x04 00003917: DUP3 00003918: ADD 00003919: MSTORE 0000391a: PUSH1 0x24 0000391c: DUP2 0000391d: ADD 0000391e: DUP5 0000391f: SWAP1 00003920: MSTORE 00003921: SWAP1 00003922: MLOAD 00003923: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17 00003938: SWAP2 00003939: PUSH4 0x52f9b3b9 0000393e: SWAP2 0000393f: PUSH1 0x44 00003941: DUP1 00003942: DUP4 00003943: ADD 00003944: SWAP3 00003945: PUSH1 0x00 00003947: SWAP3 00003948: SWAP2 00003949: SWAP1 0000394a: DUP3 0000394b: SWAP1 0000394c: SUB 0000394d: ADD 0000394e: DUP2 0000394f: DUP7 00003950: DUP1 00003951: EXTCODESIZE 00003952: ISZERO 00003953: DUP1 00003954: ISZERO 00003955: PUSH2 0x395d 00003958: JUMPI 00003959: PUSH1 0x00 0000395b: DUP1 0000395c: REVERT 0000395d: JUMPDEST 0000395e: POP 0000395f: GAS 00003960: DELEGATECALL 00003961: ISZERO 00003962: DUP1 00003963: ISZERO 00003964: PUSH2 0x3971 00003967: JUMPI 00003968: RETURNDATASIZE 00003969: PUSH1 0x00 0000396b: DUP1 0000396c: RETURNDATACOPY 0000396d: RETURNDATASIZE 0000396e: PUSH1 0x00 00003970: REVERT 00003971: JUMPDEST 00003972: POP 00003973: POP 00003974: PUSH1 0x40 00003976: DUP1 00003977: MLOAD 00003978: DUP6 00003979: DUP2 0000397a: MSTORE 0000397b: SWAP1 0000397c: MLOAD 0000397d: PUSH32 0x0769b89b6dbd96af3cdebccc7b68ce1e4ae748abc3e6b19a73b8b58460c57a94 0000399e: SWAP4 0000399f: POP 000039a0: SWAP1 000039a1: DUP2 000039a2: SWAP1 000039a3: SUB 000039a4: PUSH1 0x20 000039a6: ADD 000039a7: SWAP2 000039a8: POP 000039a9: LOG1 000039aa: PUSH1 0x26 000039ac: SSTORE 000039ad: POP 000039ae: JUMP 000039af: JUMPDEST 000039b0: PUSH1 0x60 000039b2: DUP3 000039b3: PUSH1 0x03 000039b5: ADD 000039b6: DUP3 000039b7: DUP2 000039b8: SLOAD 000039b9: DUP2 000039ba: LT 000039bb: PUSH2 0x39c0 000039be: JUMPI 000039bf: INVALID 000039c0: JUMPDEST 000039c1: PUSH1 0x00 000039c3: SWAP2 000039c4: DUP3 000039c5: MSTORE 000039c6: PUSH1 0x20 000039c8: SWAP2 000039c9: DUP3 000039ca: SWAP1 000039cb: KECCAK256 000039cc: PUSH1 0x03 000039ce: SWAP1 000039cf: SWAP2 000039d0: MUL 000039d1: ADD 000039d2: DUP1 000039d3: SLOAD 000039d4: PUSH1 0x40 000039d6: DUP1 000039d7: MLOAD 000039d8: PUSH1 0x1f 000039da: PUSH1 0x02 000039dc: PUSH1 0x00 000039de: NOT 000039df: PUSH2 0x0100 000039e2: PUSH1 0x01 000039e4: DUP8 000039e5: AND 000039e6: ISZERO 000039e7: MUL 000039e8: ADD 000039e9: SWAP1 000039ea: SWAP5 000039eb: AND 000039ec: SWAP4 000039ed: SWAP1 000039ee: SWAP4 000039ef: DIV 000039f0: SWAP3 000039f1: DUP4 000039f2: ADD 000039f3: DUP6 000039f4: SWAP1 000039f5: DIV 000039f6: DUP6 000039f7: MUL 000039f8: DUP2 000039f9: ADD 000039fa: DUP6 000039fb: ADD 000039fc: SWAP1 000039fd: SWAP2 000039fe: MSTORE 000039ff: DUP2 00003a00: DUP2 00003a01: MSTORE 00003a02: SWAP3 00003a03: DUP4 00003a04: ADD 00003a05: DUP3 00003a06: DUP3 00003a07: DUP1 00003a08: ISZERO 00003a09: PUSH2 0x3a53 00003a0c: JUMPI 00003a0d: DUP1 00003a0e: PUSH1 0x1f 00003a10: LT 00003a11: PUSH2 0x3a28 00003a14: JUMPI 00003a15: PUSH2 0x0100 00003a18: DUP1 00003a19: DUP4 00003a1a: SLOAD 00003a1b: DIV 00003a1c: MUL 00003a1d: DUP4 00003a1e: MSTORE 00003a1f: SWAP2 00003a20: PUSH1 0x20 00003a22: ADD 00003a23: SWAP2 00003a24: PUSH2 0x3a53 00003a27: JUMP 00003a28: JUMPDEST 00003a29: DUP3 00003a2a: ADD 00003a2b: SWAP2 00003a2c: SWAP1 00003a2d: PUSH1 0x00 00003a2f: MSTORE 00003a30: PUSH1 0x20 00003a32: PUSH1 0x00 00003a34: KECCAK256 00003a35: SWAP1 00003a36: JUMPDEST 00003a37: DUP2 00003a38: SLOAD 00003a39: DUP2 00003a3a: MSTORE 00003a3b: SWAP1 00003a3c: PUSH1 0x01 00003a3e: ADD 00003a3f: SWAP1 00003a40: PUSH1 0x20 00003a42: ADD 00003a43: DUP1 00003a44: DUP4 00003a45: GT 00003a46: PUSH2 0x3a36 00003a49: JUMPI 00003a4a: DUP3 00003a4b: SWAP1 00003a4c: SUB 00003a4d: PUSH1 0x1f 00003a4f: AND 00003a50: DUP3 00003a51: ADD 00003a52: SWAP2 00003a53: JUMPDEST 00003a54: POP 00003a55: POP 00003a56: POP 00003a57: POP 00003a58: POP 00003a59: SWAP1 00003a5a: POP 00003a5b: SWAP3 00003a5c: SWAP2 00003a5d: POP 00003a5e: POP 00003a5f: JUMP 00003a60: JUMPDEST 00003a61: PUSH1 0x00 00003a63: PUSH2 0x3a79 00003a66: PUSH1 0x1e 00003a68: SLOAD 00003a69: PUSH1 0x2d 00003a6b: SLOAD 00003a6c: PUSH2 0x3628 00003a6f: SWAP1 00003a70: SWAP2 00003a71: SWAP1 00003a72: PUSH4 0xffffffff 00003a77: AND 00003a78: JUMP 00003a79: JUMPDEST 00003a7a: SWAP1 00003a7b: POP 00003a7c: PUSH3 0x1e8480 00003a80: DUP2 00003a81: GT 00003a82: PUSH2 0x3a8b 00003a85: JUMPI 00003a86: DUP1 00003a87: PUSH2 0x3a90 00003a8a: JUMP 00003a8b: JUMPDEST 00003a8c: PUSH3 0x1e8480 00003a90: JUMPDEST 00003a91: PUSH1 0x2e 00003a93: SLOAD 00003a94: PUSH1 0x28 00003a96: SLOAD 00003a97: PUSH1 0x40 00003a99: DUP1 00003a9a: MLOAD 00003a9b: PUSH1 0x24 00003a9d: DUP1 00003a9e: DUP3 00003a9f: ADD 00003aa0: SWAP4 00003aa1: SWAP1 00003aa2: SWAP4 00003aa3: MSTORE 00003aa4: DUP2 00003aa5: MLOAD 00003aa6: DUP1 00003aa7: DUP3 00003aa8: SUB 00003aa9: SWAP1 00003aaa: SWAP4 00003aab: ADD 00003aac: DUP4 00003aad: MSTORE 00003aae: PUSH1 0x44 00003ab0: ADD 00003ab1: DUP2 00003ab2: MSTORE 00003ab3: PUSH1 0x20 00003ab5: DUP3 00003ab6: ADD 00003ab7: DUP1 00003ab8: MLOAD 00003ab9: PUSH1 0x01 00003abb: PUSH1 0x01 00003abd: PUSH1 0xe0 00003abf: SHL 00003ac0: SUB 00003ac1: AND 00003ac2: PUSH4 0x03f6a739 00003ac7: PUSH1 0xe2 00003ac9: SHL 00003aca: OR 00003acb: DUP2 00003acc: MSTORE 00003acd: SWAP1 00003ace: MLOAD 00003acf: DUP3 00003ad0: MLOAD 00003ad1: SWAP5 00003ad2: SWAP6 00003ad3: POP 00003ad4: PUSH1 0x60 00003ad6: SWAP5 00003ad7: PUSH1 0x01 00003ad9: PUSH1 0x01 00003adb: PUSH1 0xa0 00003add: SHL 00003ade: SUB 00003adf: SWAP1 00003ae0: SWAP5 00003ae1: AND 00003ae2: SWAP4 00003ae3: PUSH2 0x9c40 00003ae6: SWAP4 00003ae7: SWAP3 00003ae8: DUP3 00003ae9: SWAP2 00003aea: DUP1 00003aeb: DUP4 00003aec: DUP4 00003aed: JUMPDEST 00003aee: PUSH1 0x20 00003af0: DUP4 00003af1: LT 00003af2: PUSH2 0x3b0c 00003af5: JUMPI 00003af6: DUP1 00003af7: MLOAD 00003af8: DUP3 00003af9: MSTORE 00003afa: PUSH1 0x1f 00003afc: NOT 00003afd: SWAP1 00003afe: SWAP3 00003aff: ADD 00003b00: SWAP2 00003b01: PUSH1 0x20 00003b03: SWAP2 00003b04: DUP3 00003b05: ADD 00003b06: SWAP2 00003b07: ADD 00003b08: PUSH2 0x3aed 00003b0b: JUMP 00003b0c: JUMPDEST 00003b0d: PUSH1 0x01 00003b0f: DUP4 00003b10: PUSH1 0x20 00003b12: SUB 00003b13: PUSH2 0x0100 00003b16: EXP 00003b17: SUB 00003b18: DUP1 00003b19: NOT 00003b1a: DUP3 00003b1b: MLOAD 00003b1c: AND 00003b1d: DUP2 00003b1e: DUP5 00003b1f: MLOAD 00003b20: AND 00003b21: DUP1 00003b22: DUP3 00003b23: OR 00003b24: DUP6 00003b25: MSTORE 00003b26: POP 00003b27: POP 00003b28: POP 00003b29: POP 00003b2a: POP 00003b2b: POP 00003b2c: SWAP1 00003b2d: POP 00003b2e: ADD 00003b2f: SWAP2 00003b30: POP 00003b31: POP 00003b32: PUSH1 0x00 00003b34: PUSH1 0x40 00003b36: MLOAD 00003b37: DUP1 00003b38: DUP4 00003b39: SUB 00003b3a: DUP2 00003b3b: PUSH1 0x00 00003b3d: DUP8 00003b3e: DUP8 00003b3f: CALL 00003b40: SWAP3 00003b41: POP 00003b42: POP 00003b43: POP 00003b44: RETURNDATASIZE 00003b45: DUP1 00003b46: PUSH1 0x00 00003b48: DUP2 00003b49: EQ 00003b4a: PUSH2 0x3b6f 00003b4d: JUMPI 00003b4e: PUSH1 0x40 00003b50: MLOAD 00003b51: SWAP2 00003b52: POP 00003b53: PUSH1 0x1f 00003b55: NOT 00003b56: PUSH1 0x3f 00003b58: RETURNDATASIZE 00003b59: ADD 00003b5a: AND 00003b5b: DUP3 00003b5c: ADD 00003b5d: PUSH1 0x40 00003b5f: MSTORE 00003b60: RETURNDATASIZE 00003b61: DUP3 00003b62: MSTORE 00003b63: RETURNDATASIZE 00003b64: PUSH1 0x00 00003b66: PUSH1 0x20 00003b68: DUP5 00003b69: ADD 00003b6a: RETURNDATACOPY 00003b6b: PUSH2 0x3b74 00003b6e: JUMP 00003b6f: JUMPDEST 00003b70: PUSH1 0x60 00003b72: SWAP2 00003b73: POP 00003b74: JUMPDEST 00003b75: POP 00003b76: SWAP2 00003b77: POP 00003b78: PUSH1 0x00 00003b7a: SWAP1 00003b7b: POP 00003b7c: GAS 00003b7d: PUSH1 0x2e 00003b7f: SLOAD 00003b80: PUSH1 0x28 00003b82: SLOAD 00003b83: PUSH1 0x40 00003b85: DUP1 00003b86: MLOAD 00003b87: PUSH1 0x24 00003b89: DUP2 00003b8a: ADD 00003b8b: SWAP3 00003b8c: SWAP1 00003b8d: SWAP3 00003b8e: MSTORE 00003b8f: PUSH1 0x44 00003b91: DUP1 00003b92: DUP4 00003b93: ADD 00003b94: DUP10 00003b95: SWAP1 00003b96: MSTORE 00003b97: DUP2 00003b98: MLOAD 00003b99: DUP1 00003b9a: DUP5 00003b9b: SUB 00003b9c: SWAP1 00003b9d: SWAP2 00003b9e: ADD 00003b9f: DUP2 00003ba0: MSTORE 00003ba1: PUSH1 0x64 00003ba3: SWAP1 00003ba4: SWAP3 00003ba5: ADD 00003ba6: DUP2 00003ba7: MSTORE 00003ba8: PUSH1 0x20 00003baa: DUP3 00003bab: ADD 00003bac: DUP1 00003bad: MLOAD 00003bae: PUSH1 0x01 00003bb0: PUSH1 0x01 00003bb2: PUSH1 0xe0 00003bb4: SHL 00003bb5: SUB 00003bb6: AND 00003bb7: PUSH4 0xfc3fcec7 00003bbc: PUSH1 0xe0 00003bbe: SHL 00003bbf: OR 00003bc0: DUP2 00003bc1: MSTORE 00003bc2: SWAP1 00003bc3: MLOAD 00003bc4: DUP3 00003bc5: MLOAD 00003bc6: SWAP5 00003bc7: SWAP6 00003bc8: POP 00003bc9: PUSH1 0x01 00003bcb: PUSH1 0x01 00003bcd: PUSH1 0xa0 00003bcf: SHL 00003bd0: SUB 00003bd1: SWAP1 00003bd2: SWAP4 00003bd3: AND 00003bd4: SWAP4 00003bd5: DUP8 00003bd6: SWAP4 00003bd7: SWAP2 00003bd8: DUP3 00003bd9: SWAP2 00003bda: DUP1 00003bdb: DUP4 00003bdc: DUP4 00003bdd: JUMPDEST 00003bde: PUSH1 0x20 00003be0: DUP4 00003be1: LT 00003be2: PUSH2 0x3bfc 00003be5: JUMPI 00003be6: DUP1 00003be7: MLOAD 00003be8: DUP3 00003be9: MSTORE 00003bea: PUSH1 0x1f 00003bec: NOT 00003bed: SWAP1 00003bee: SWAP3 00003bef: ADD 00003bf0: SWAP2 00003bf1: PUSH1 0x20 00003bf3: SWAP2 00003bf4: DUP3 00003bf5: ADD 00003bf6: SWAP2 00003bf7: ADD 00003bf8: PUSH2 0x3bdd 00003bfb: JUMP 00003bfc: JUMPDEST 00003bfd: PUSH1 0x01 00003bff: DUP4 00003c00: PUSH1 0x20 00003c02: SUB 00003c03: PUSH2 0x0100 00003c06: EXP 00003c07: SUB 00003c08: DUP1 00003c09: NOT 00003c0a: DUP3 00003c0b: MLOAD 00003c0c: AND 00003c0d: DUP2 00003c0e: DUP5 00003c0f: MLOAD 00003c10: AND 00003c11: DUP1 00003c12: DUP3 00003c13: OR 00003c14: DUP6 00003c15: MSTORE 00003c16: POP 00003c17: POP 00003c18: POP 00003c19: POP 00003c1a: POP 00003c1b: POP 00003c1c: SWAP1 00003c1d: POP 00003c1e: ADD 00003c1f: SWAP2 00003c20: POP 00003c21: POP 00003c22: PUSH1 0x00 00003c24: PUSH1 0x40 00003c26: MLOAD 00003c27: DUP1 00003c28: DUP4 00003c29: SUB 00003c2a: DUP2 00003c2b: PUSH1 0x00 00003c2d: DUP8 00003c2e: DUP8 00003c2f: CALL 00003c30: SWAP3 00003c31: POP 00003c32: POP 00003c33: POP 00003c34: RETURNDATASIZE 00003c35: DUP1 00003c36: PUSH1 0x00 00003c38: DUP2 00003c39: EQ 00003c3a: PUSH2 0x3c5f 00003c3d: JUMPI 00003c3e: PUSH1 0x40 00003c40: MLOAD 00003c41: SWAP2 00003c42: POP 00003c43: PUSH1 0x1f 00003c45: NOT 00003c46: PUSH1 0x3f 00003c48: RETURNDATASIZE 00003c49: ADD 00003c4a: AND 00003c4b: DUP3 00003c4c: ADD 00003c4d: PUSH1 0x40 00003c4f: MSTORE 00003c50: RETURNDATASIZE 00003c51: DUP3 00003c52: MSTORE 00003c53: RETURNDATASIZE 00003c54: PUSH1 0x00 00003c56: PUSH1 0x20 00003c58: DUP5 00003c59: ADD 00003c5a: RETURNDATACOPY 00003c5b: PUSH2 0x3c64 00003c5e: JUMP 00003c5f: JUMPDEST 00003c60: PUSH1 0x60 00003c62: SWAP2 00003c63: POP 00003c64: JUMPDEST 00003c65: POP 00003c66: POP 00003c67: POP 00003c68: PUSH1 0x00 00003c6a: GAS 00003c6b: SWAP1 00003c6c: POP 00003c6d: PUSH1 0x00 00003c6f: PUSH2 0x3c7e 00003c72: DUP4 00003c73: DUP4 00003c74: PUSH4 0xffffffff 00003c79: PUSH2 0x371a 00003c7c: AND 00003c7d: JUMP 00003c7e: JUMPDEST 00003c7f: SWAP1 00003c80: POP 00003c81: PUSH20 0x9b4e397a79ed197d5f8a835613a4326903faa3d2 00003c96: PUSH4 0x46a50089 00003c9b: PUSH1 0x1b 00003c9d: PUSH1 0x00 00003c9f: SWAP1 00003ca0: SLOAD 00003ca1: SWAP1 00003ca2: PUSH2 0x0100 00003ca5: EXP 00003ca6: SWAP1 00003ca7: DIV 00003ca8: PUSH1 0x01 00003caa: PUSH1 0x01 00003cac: PUSH1 0xa0 00003cae: SHL 00003caf: SUB 00003cb0: AND 00003cb1: PUSH1 0x1e 00003cb3: SLOAD 00003cb4: DUP9 00003cb5: DUP6 00003cb6: PUSH1 0x2d 00003cb8: SLOAD 00003cb9: DUP11 00003cba: PUSH1 0x40 00003cbc: MLOAD 00003cbd: DUP8 00003cbe: PUSH4 0xffffffff 00003cc3: AND 00003cc4: PUSH1 0xe0 00003cc6: SHL 00003cc7: DUP2 00003cc8: MSTORE 00003cc9: PUSH1 0x04 00003ccb: ADD 00003ccc: DUP1 00003ccd: DUP8 00003cce: PUSH1 0x01 00003cd0: PUSH1 0x01 00003cd2: PUSH1 0xa0 00003cd4: SHL 00003cd5: SUB 00003cd6: AND 00003cd7: PUSH1 0x01 00003cd9: PUSH1 0x01 00003cdb: PUSH1 0xa0 00003cdd: SHL 00003cde: SUB 00003cdf: AND 00003ce0: DUP2 00003ce1: MSTORE 00003ce2: PUSH1 0x20 00003ce4: ADD 00003ce5: DUP7 00003ce6: DUP2 00003ce7: MSTORE 00003ce8: PUSH1 0x20 00003cea: ADD 00003ceb: DUP6 00003cec: DUP2 00003ced: MSTORE 00003cee: PUSH1 0x20 00003cf0: ADD 00003cf1: DUP5 00003cf2: DUP2 00003cf3: MSTORE 00003cf4: PUSH1 0x20 00003cf6: ADD 00003cf7: DUP4 00003cf8: DUP2 00003cf9: MSTORE 00003cfa: PUSH1 0x20 00003cfc: ADD 00003cfd: DUP1 00003cfe: PUSH1 0x20 00003d00: ADD 00003d01: DUP3 00003d02: DUP2 00003d03: SUB 00003d04: DUP3 00003d05: MSTORE 00003d06: DUP4 00003d07: DUP2 00003d08: DUP2 00003d09: MLOAD 00003d0a: DUP2 00003d0b: MSTORE 00003d0c: PUSH1 0x20 00003d0e: ADD 00003d0f: SWAP2 00003d10: POP 00003d11: DUP1 00003d12: MLOAD 00003d13: SWAP1 00003d14: PUSH1 0x20 00003d16: ADD 00003d17: SWAP1 00003d18: DUP1 00003d19: DUP4 00003d1a: DUP4 00003d1b: PUSH1 0x00 00003d1d: JUMPDEST 00003d1e: DUP4 00003d1f: DUP2 00003d20: LT 00003d21: ISZERO 00003d22: PUSH2 0x3d35 00003d25: JUMPI 00003d26: DUP2 00003d27: DUP2 00003d28: ADD 00003d29: MLOAD 00003d2a: DUP4 00003d2b: DUP3 00003d2c: ADD 00003d2d: MSTORE 00003d2e: PUSH1 0x20 00003d30: ADD 00003d31: PUSH2 0x3d1d 00003d34: JUMP 00003d35: JUMPDEST 00003d36: POP 00003d37: POP 00003d38: POP 00003d39: POP 00003d3a: SWAP1 00003d3b: POP 00003d3c: SWAP1 00003d3d: DUP2 00003d3e: ADD 00003d3f: SWAP1 00003d40: PUSH1 0x1f 00003d42: AND 00003d43: DUP1 00003d44: ISZERO 00003d45: PUSH2 0x3d62 00003d48: JUMPI 00003d49: DUP1 00003d4a: DUP3 00003d4b: SUB 00003d4c: DUP1 00003d4d: MLOAD 00003d4e: PUSH1 0x01 00003d50: DUP4 00003d51: PUSH1 0x20 00003d53: SUB 00003d54: PUSH2 0x0100 00003d57: EXP 00003d58: SUB 00003d59: NOT 00003d5a: AND 00003d5b: DUP2 00003d5c: MSTORE 00003d5d: PUSH1 0x20 00003d5f: ADD 00003d60: SWAP2 00003d61: POP 00003d62: JUMPDEST 00003d63: POP 00003d64: SWAP8 00003d65: POP 00003d66: POP 00003d67: POP 00003d68: POP 00003d69: POP 00003d6a: POP 00003d6b: POP 00003d6c: POP 00003d6d: PUSH1 0x00 00003d6f: PUSH1 0x40 00003d71: MLOAD 00003d72: DUP1 00003d73: DUP4 00003d74: SUB 00003d75: DUP2 00003d76: DUP7 00003d77: DUP1 00003d78: EXTCODESIZE 00003d79: ISZERO 00003d7a: DUP1 00003d7b: ISZERO 00003d7c: PUSH2 0x3d84 00003d7f: JUMPI 00003d80: PUSH1 0x00 00003d82: DUP1 00003d83: REVERT 00003d84: JUMPDEST 00003d85: POP 00003d86: GAS 00003d87: DELEGATECALL 00003d88: ISZERO 00003d89: DUP1 00003d8a: ISZERO 00003d8b: PUSH2 0x3d98 00003d8e: JUMPI 00003d8f: RETURNDATASIZE 00003d90: PUSH1 0x00 00003d92: DUP1 00003d93: RETURNDATACOPY 00003d94: RETURNDATASIZE 00003d95: PUSH1 0x00 00003d97: REVERT 00003d98: JUMPDEST 00003d99: POP 00003d9a: POP 00003d9b: POP 00003d9c: POP 00003d9d: POP 00003d9e: POP 00003d9f: POP 00003da0: POP 00003da1: POP 00003da2: POP 00003da3: JUMP 00003da4: JUMPDEST 00003da5: PUSH1 0x00 00003da7: DUP1 00003da8: PUSH1 0x00 00003daa: DUP1 00003dab: PUSH7 0x2386f26fc10000 00003db3: SWAP1 00003db4: POP 00003db5: PUSH1 0x00 00003db7: PUSH20 0xc08dcc93130ab30987dd7fe64e011402bbe5fda6 00003dcc: PUSH4 0x8dfa4363 00003dd1: PUSH1 0x29 00003dd3: SLOAD 00003dd4: PUSH1 0x22 00003dd6: SLOAD 00003dd7: PUSH1 0x40 00003dd9: MLOAD 00003dda: DUP4 00003ddb: PUSH4 0xffffffff 00003de0: AND 00003de1: PUSH1 0xe0 00003de3: SHL 00003de4: DUP2 00003de5: MSTORE 00003de6: PUSH1 0x04 00003de8: ADD 00003de9: DUP1 00003dea: DUP4 00003deb: DUP2 00003dec: MSTORE 00003ded: PUSH1 0x20 00003def: ADD 00003df0: DUP3 00003df1: DUP2 00003df2: MSTORE 00003df3: PUSH1 0x20 00003df5: ADD 00003df6: SWAP3 00003df7: POP 00003df8: POP 00003df9: POP 00003dfa: PUSH1 0x20 00003dfc: PUSH1 0x40 00003dfe: MLOAD 00003dff: DUP1 00003e00: DUP4 00003e01: SUB 00003e02: DUP2 00003e03: DUP7 00003e04: DUP1 00003e05: EXTCODESIZE 00003e06: ISZERO 00003e07: DUP1 00003e08: ISZERO 00003e09: PUSH2 0x3e11 00003e0c: JUMPI 00003e0d: PUSH1 0x00 00003e0f: DUP1 00003e10: REVERT 00003e11: JUMPDEST 00003e12: POP 00003e13: GAS 00003e14: DELEGATECALL 00003e15: ISZERO 00003e16: DUP1 00003e17: ISZERO 00003e18: PUSH2 0x3e25 00003e1b: JUMPI 00003e1c: RETURNDATASIZE 00003e1d: PUSH1 0x00 00003e1f: DUP1 00003e20: RETURNDATACOPY 00003e21: RETURNDATASIZE 00003e22: PUSH1 0x00 00003e24: REVERT 00003e25: JUMPDEST 00003e26: POP 00003e27: POP 00003e28: POP 00003e29: POP 00003e2a: PUSH1 0x40 00003e2c: MLOAD 00003e2d: RETURNDATASIZE 00003e2e: PUSH1 0x20 00003e30: DUP2 00003e31: LT 00003e32: ISZERO 00003e33: PUSH2 0x3e3b 00003e36: JUMPI 00003e37: PUSH1 0x00 00003e39: DUP1 00003e3a: REVERT 00003e3b: JUMPDEST 00003e3c: POP 00003e3d: MLOAD 00003e3e: PUSH1 0x1d 00003e40: SLOAD 00003e41: SWAP1 00003e42: SWAP2 00003e43: POP 00003e44: PUSH2 0x3e65 00003e47: SWAP1 00003e48: DUP4 00003e49: SWAP1 00003e4a: PUSH2 0x3e59 00003e4d: SWAP1 00003e4e: DUP5 00003e4f: PUSH4 0xffffffff 00003e54: PUSH2 0x33ab 00003e57: AND 00003e58: JUMP 00003e59: JUMPDEST 00003e5a: SWAP1 00003e5b: PUSH4 0xffffffff 00003e60: PUSH2 0x3628 00003e63: AND 00003e64: JUMP 00003e65: JUMPDEST 00003e66: SWAP5 00003e67: POP 00003e68: PUSH1 0x00 00003e6a: PUSH2 0x3e8b 00003e6d: PUSH2 0x3e7c 00003e70: DUP5 00003e71: DUP5 00003e72: PUSH4 0xffffffff 00003e77: PUSH2 0x371a 00003e7a: AND 00003e7b: JUMP 00003e7c: JUMPDEST 00003e7d: PUSH1 0x1d 00003e7f: SLOAD 00003e80: SWAP1 00003e81: PUSH4 0xffffffff 00003e86: PUSH2 0x33ab 00003e89: AND 00003e8a: JUMP 00003e8b: JUMPDEST 00003e8c: SWAP1 00003e8d: POP 00003e8e: PUSH1 0x00 00003e90: PUSH2 0x3eb9 00003e93: DUP5 00003e94: PUSH2 0x3e59 00003e97: PUSH1 0x05 00003e99: PUSH2 0x3ead 00003e9c: PUSH1 0x1f 00003e9e: SLOAD 00003e9f: DUP8 00003ea0: PUSH2 0x33ab 00003ea3: SWAP1 00003ea4: SWAP2 00003ea5: SWAP1 00003ea6: PUSH4 0xffffffff 00003eab: AND 00003eac: JUMP 00003ead: JUMPDEST 00003eae: SWAP1 00003eaf: PUSH4 0xffffffff 00003eb4: PUSH2 0x4121 00003eb7: AND 00003eb8: JUMP 00003eb9: JUMPDEST 00003eba: SWAP1 00003ebb: POP 00003ebc: PUSH1 0x00 00003ebe: PUSH2 0x3ed7 00003ec1: PUSH2 0x3ec8 00003ec4: PUSH2 0x2aef 00003ec7: JUMP 00003ec8: JUMPDEST 00003ec9: PUSH1 0x2c 00003ecb: SLOAD 00003ecc: SWAP1 00003ecd: PUSH4 0xffffffff 00003ed2: PUSH2 0x371a 00003ed5: AND 00003ed6: JUMP 00003ed7: JUMPDEST 00003ed8: SWAP1 00003ed9: POP 00003eda: PUSH2 0x3ee9 00003edd: DUP2 00003ede: DUP4 00003edf: PUSH4 0xffffffff 00003ee4: PUSH2 0x36c0 00003ee7: AND 00003ee8: JUMP 00003ee9: JUMPDEST 00003eea: SWAP7 00003eeb: POP 00003eec: PUSH2 0x3f1b 00003eef: DUP3 00003ef0: PUSH2 0x3f0f 00003ef3: PUSH2 0x3f07 00003ef6: PUSH1 0x1f 00003ef8: SLOAD 00003ef9: DUP13 00003efa: PUSH2 0x33ab 00003efd: SWAP1 00003efe: SWAP2 00003eff: SWAP1 00003f00: PUSH4 0xffffffff 00003f05: AND 00003f06: JUMP 00003f07: JUMPDEST 00003f08: PUSH2 0x3f0f 00003f0b: PUSH2 0x2aef 00003f0e: JUMP 00003f0f: JUMPDEST 00003f10: SWAP1 00003f11: PUSH4 0xffffffff 00003f16: PUSH2 0x371a 00003f19: AND 00003f1a: JUMP 00003f1b: JUMPDEST 00003f1c: SWAP6 00003f1d: POP 00003f1e: POP 00003f1f: POP 00003f20: POP 00003f21: POP 00003f22: POP 00003f23: SWAP1 00003f24: SWAP2 00003f25: SWAP3 00003f26: JUMP 00003f27: JUMPDEST 00003f28: PUSH2 0x3f94 00003f2b: DUP2 00003f2c: DUP5 00003f2d: PUSH1 0x06 00003f2f: ADD 00003f30: DUP5 00003f31: PUSH1 0x40 00003f33: MLOAD 00003f34: DUP1 00003f35: DUP3 00003f36: DUP1 00003f37: MLOAD 00003f38: SWAP1 00003f39: PUSH1 0x20 00003f3b: ADD 00003f3c: SWAP1 00003f3d: DUP1 00003f3e: DUP4 00003f3f: DUP4 00003f40: JUMPDEST 00003f41: PUSH1 0x20 00003f43: DUP4 00003f44: LT 00003f45: PUSH2 0x3f5f 00003f48: JUMPI 00003f49: DUP1 00003f4a: MLOAD 00003f4b: DUP3 00003f4c: MSTORE 00003f4d: PUSH1 0x1f 00003f4f: NOT 00003f50: SWAP1 00003f51: SWAP3 00003f52: ADD 00003f53: SWAP2 00003f54: PUSH1 0x20 00003f56: SWAP2 00003f57: DUP3 00003f58: ADD 00003f59: SWAP2 00003f5a: ADD 00003f5b: PUSH2 0x3f40 00003f5e: JUMP 00003f5f: JUMPDEST 00003f60: MLOAD 00003f61: DUP2 00003f62: MLOAD 00003f63: PUSH1 0x20 00003f65: SWAP4 00003f66: DUP5 00003f67: SUB 00003f68: PUSH2 0x0100 00003f6b: EXP 00003f6c: PUSH1 0x00 00003f6e: NOT 00003f6f: ADD 00003f70: DUP1 00003f71: NOT 00003f72: SWAP1 00003f73: SWAP3 00003f74: AND 00003f75: SWAP2 00003f76: AND 00003f77: OR 00003f78: SWAP1 00003f79: MSTORE 00003f7a: SWAP3 00003f7b: ADD 00003f7c: SWAP5 00003f7d: DUP6 00003f7e: MSTORE 00003f7f: POP 00003f80: PUSH1 0x40 00003f82: MLOAD 00003f83: SWAP4 00003f84: DUP5 00003f85: SWAP1 00003f86: SUB 00003f87: ADD 00003f88: SWAP1 00003f89: SWAP3 00003f8a: KECCAK256 00003f8b: SLOAD 00003f8c: SWAP3 00003f8d: SWAP2 00003f8e: POP 00003f8f: POP 00003f90: PUSH2 0x36c0 00003f93: JUMP 00003f94: JUMPDEST 00003f95: DUP4 00003f96: PUSH1 0x06 00003f98: ADD 00003f99: DUP4 00003f9a: PUSH1 0x40 00003f9c: MLOAD 00003f9d: DUP1 00003f9e: DUP3 00003f9f: DUP1 00003fa0: MLOAD 00003fa1: SWAP1 00003fa2: PUSH1 0x20 00003fa4: ADD 00003fa5: SWAP1 00003fa6: DUP1 00003fa7: DUP4 00003fa8: DUP4 00003fa9: JUMPDEST 00003faa: PUSH1 0x20 00003fac: DUP4 00003fad: LT 00003fae: PUSH2 0x3fc8 00003fb1: JUMPI 00003fb2: DUP1 00003fb3: MLOAD 00003fb4: DUP3 00003fb5: MSTORE 00003fb6: PUSH1 0x1f 00003fb8: NOT 00003fb9: SWAP1 00003fba: SWAP3 00003fbb: ADD 00003fbc: SWAP2 00003fbd: PUSH1 0x20 00003fbf: SWAP2 00003fc0: DUP3 00003fc1: ADD 00003fc2: SWAP2 00003fc3: ADD 00003fc4: PUSH2 0x3fa9 00003fc7: JUMP 00003fc8: JUMPDEST 00003fc9: MLOAD 00003fca: DUP2 00003fcb: MLOAD 00003fcc: PUSH1 0x20 00003fce: SWAP4 00003fcf: DUP5 00003fd0: SUB 00003fd1: PUSH2 0x0100 00003fd4: EXP 00003fd5: PUSH1 0x00 00003fd7: NOT 00003fd8: ADD 00003fd9: DUP1 00003fda: NOT 00003fdb: SWAP1 00003fdc: SWAP3 00003fdd: AND 00003fde: SWAP2 00003fdf: AND 00003fe0: OR 00003fe1: SWAP1 00003fe2: MSTORE 00003fe3: SWAP3 00003fe4: ADD 00003fe5: SWAP5 00003fe6: DUP6 00003fe7: MSTORE 00003fe8: POP 00003fe9: PUSH1 0x40 00003feb: MLOAD 00003fec: SWAP4 00003fed: DUP5 00003fee: SWAP1 00003fef: SUB 00003ff0: ADD 00003ff1: SWAP1 00003ff2: SWAP3 00003ff3: KECCAK256 00003ff4: SWAP3 00003ff5: SWAP1 00003ff6: SWAP3 00003ff7: SSTORE 00003ff8: POP 00003ff9: POP 00003ffa: POP 00003ffb: POP 00003ffc: POP 00003ffd: JUMP 00003ffe: JUMPDEST 00003fff: PUSH1 0x04 00004001: DUP2 00004002: ADD 00004003: SLOAD 00004004: PUSH1 0x08 00004006: DUP3 00004007: ADD 00004008: SLOAD 00004009: PUSH1 0x03 0000400b: DUP4 0000400c: ADD 0000400d: SLOAD 0000400e: PUSH1 0x00 00004010: SWAP3 00004011: PUSH2 0x0f84 00004014: SWAP3 00004015: SWAP1 00004016: SWAP2 00004017: PUSH2 0x3f0f 0000401a: SWAP2 0000401b: PUSH4 0xffffffff 00004020: PUSH2 0x371a 00004023: AND 00004024: JUMP 00004025: JUMPDEST 00004026: PUSH1 0x00 00004028: DUP2 00004029: DUP4 0000402a: PUSH2 0x40b1 0000402d: JUMPI 0000402e: PUSH1 0x40 00004030: MLOAD 00004031: PUSH3 0x461bcd 00004035: PUSH1 0xe5 00004037: SHL 00004038: DUP2 00004039: MSTORE 0000403a: PUSH1 0x04 0000403c: ADD 0000403d: DUP1 0000403e: DUP1 0000403f: PUSH1 0x20 00004041: ADD 00004042: DUP3 00004043: DUP2 00004044: SUB 00004045: DUP3 00004046: MSTORE 00004047: DUP4 00004048: DUP2 00004049: DUP2 0000404a: MLOAD 0000404b: DUP2 0000404c: MSTORE 0000404d: PUSH1 0x20 0000404f: ADD 00004050: SWAP2 00004051: POP 00004052: DUP1 00004053: MLOAD 00004054: SWAP1 00004055: PUSH1 0x20 00004057: ADD 00004058: SWAP1 00004059: DUP1 0000405a: DUP4 0000405b: DUP4 0000405c: PUSH1 0x00 0000405e: JUMPDEST 0000405f: DUP4 00004060: DUP2 00004061: LT 00004062: ISZERO 00004063: PUSH2 0x4076 00004066: JUMPI 00004067: DUP2 00004068: DUP2 00004069: ADD 0000406a: MLOAD 0000406b: DUP4 0000406c: DUP3 0000406d: ADD 0000406e: MSTORE 0000406f: PUSH1 0x20 00004071: ADD 00004072: PUSH2 0x405e 00004075: JUMP 00004076: JUMPDEST 00004077: POP 00004078: POP 00004079: POP 0000407a: POP 0000407b: SWAP1 0000407c: POP 0000407d: SWAP1 0000407e: DUP2 0000407f: ADD 00004080: SWAP1 00004081: PUSH1 0x1f 00004083: AND 00004084: DUP1 00004085: ISZERO 00004086: PUSH2 0x40a3 00004089: JUMPI 0000408a: DUP1 0000408b: DUP3 0000408c: SUB 0000408d: DUP1 0000408e: MLOAD 0000408f: PUSH1 0x01 00004091: DUP4 00004092: PUSH1 0x20 00004094: SUB 00004095: PUSH2 0x0100 00004098: EXP 00004099: SUB 0000409a: NOT 0000409b: AND 0000409c: DUP2 0000409d: MSTORE 0000409e: PUSH1 0x20 000040a0: ADD 000040a1: SWAP2 000040a2: POP 000040a3: JUMPDEST 000040a4: POP 000040a5: SWAP3 000040a6: POP 000040a7: POP 000040a8: POP 000040a9: PUSH1 0x40 000040ab: MLOAD 000040ac: DUP1 000040ad: SWAP2 000040ae: SUB 000040af: SWAP1 000040b0: REVERT 000040b1: JUMPDEST 000040b2: POP 000040b3: PUSH1 0x00 000040b5: DUP4 000040b6: DUP6 000040b7: DUP2 000040b8: PUSH2 0x40bd 000040bb: JUMPI 000040bc: INVALID 000040bd: JUMPDEST 000040be: DIV 000040bf: SWAP6 000040c0: SWAP5 000040c1: POP 000040c2: POP 000040c3: POP 000040c4: POP 000040c5: POP 000040c6: JUMP 000040c7: JUMPDEST 000040c8: PUSH1 0x00 000040ca: DUP2 000040cb: DUP5 000040cc: DUP5 000040cd: GT 000040ce: ISZERO 000040cf: PUSH2 0x4119 000040d2: JUMPI 000040d3: PUSH1 0x40 000040d5: MLOAD 000040d6: PUSH3 0x461bcd 000040da: PUSH1 0xe5 000040dc: SHL 000040dd: DUP2 000040de: MSTORE 000040df: PUSH1 0x20 000040e1: PUSH1 0x04 000040e3: DUP3 000040e4: ADD 000040e5: DUP2 000040e6: DUP2 000040e7: MSTORE 000040e8: DUP4 000040e9: MLOAD 000040ea: PUSH1 0x24 000040ec: DUP5 000040ed: ADD 000040ee: MSTORE 000040ef: DUP4 000040f0: MLOAD 000040f1: SWAP1 000040f2: SWAP3 000040f3: DUP4 000040f4: SWAP3 000040f5: PUSH1 0x44 000040f7: SWAP1 000040f8: SWAP2 000040f9: ADD 000040fa: SWAP2 000040fb: SWAP1 000040fc: DUP6 000040fd: ADD 000040fe: SWAP1 000040ff: DUP1 00004100: DUP4 00004101: DUP4 00004102: PUSH1 0x00 00004104: DUP4 00004105: ISZERO 00004106: PUSH2 0x4076 00004109: JUMPI 0000410a: DUP2 0000410b: DUP2 0000410c: ADD 0000410d: MLOAD 0000410e: DUP4 0000410f: DUP3 00004110: ADD 00004111: MSTORE 00004112: PUSH1 0x20 00004114: ADD 00004115: PUSH2 0x405e 00004118: JUMP 00004119: JUMPDEST 0000411a: POP 0000411b: POP 0000411c: POP 0000411d: SWAP1 0000411e: SUB 0000411f: SWAP1 00004120: JUMP 00004121: JUMPDEST 00004122: PUSH1 0x00 00004124: PUSH2 0x3404 00004127: PUSH1 0x64 00004129: PUSH2 0x3e59 0000412c: DUP6 0000412d: DUP6 0000412e: PUSH4 0xffffffff 00004133: PUSH2 0x33ab 00004136: AND 00004137: JUMP 00004138: JUMPDEST 00004139: DUP3 0000413a: DUP1 0000413b: SLOAD 0000413c: PUSH1 0x01 0000413e: DUP2 0000413f: PUSH1 0x01 00004141: AND 00004142: ISZERO 00004143: PUSH2 0x0100 00004146: MUL 00004147: SUB 00004148: AND 00004149: PUSH1 0x02 0000414b: SWAP1 0000414c: DIV 0000414d: SWAP1 0000414e: PUSH1 0x00 00004150: MSTORE 00004151: PUSH1 0x20 00004153: PUSH1 0x00 00004155: KECCAK256 00004156: SWAP1 00004157: PUSH1 0x1f 00004159: ADD 0000415a: PUSH1 0x20 0000415c: SWAP1 0000415d: DIV 0000415e: DUP2 0000415f: ADD 00004160: SWAP3 00004161: DUP3 00004162: PUSH1 0x1f 00004164: LT 00004165: PUSH2 0x4179 00004168: JUMPI 00004169: DUP1 0000416a: MLOAD 0000416b: PUSH1 0xff 0000416d: NOT 0000416e: AND 0000416f: DUP4 00004170: DUP1 00004171: ADD 00004172: OR 00004173: DUP6 00004174: SSTORE 00004175: PUSH2 0x41a6 00004178: JUMP 00004179: JUMPDEST 0000417a: DUP3 0000417b: DUP1 0000417c: ADD 0000417d: PUSH1 0x01 0000417f: ADD 00004180: DUP6 00004181: SSTORE 00004182: DUP3 00004183: ISZERO 00004184: PUSH2 0x41a6 00004187: JUMPI 00004188: SWAP2 00004189: DUP3 0000418a: ADD 0000418b: JUMPDEST 0000418c: DUP3 0000418d: DUP2 0000418e: GT 0000418f: ISZERO 00004190: PUSH2 0x41a6 00004193: JUMPI 00004194: DUP3 00004195: MLOAD 00004196: DUP3 00004197: SSTORE 00004198: SWAP2 00004199: PUSH1 0x20 0000419b: ADD 0000419c: SWAP2 0000419d: SWAP1 0000419e: PUSH1 0x01 000041a0: ADD 000041a1: SWAP1 000041a2: PUSH2 0x418b 000041a5: JUMP 000041a6: JUMPDEST 000041a7: POP 000041a8: PUSH2 0x41b2 000041ab: SWAP3 000041ac: SWAP2 000041ad: POP 000041ae: PUSH2 0x41b6 000041b1: JUMP 000041b2: JUMPDEST 000041b3: POP 000041b4: SWAP1 000041b5: JUMP 000041b6: JUMPDEST 000041b7: PUSH2 0x0f6e 000041ba: SWAP2 000041bb: SWAP1 000041bc: JUMPDEST 000041bd: DUP1 000041be: DUP3 000041bf: GT 000041c0: ISZERO 000041c1: PUSH2 0x41b2 000041c4: JUMPI 000041c5: PUSH1 0x00 000041c7: DUP2 000041c8: SSTORE 000041c9: PUSH1 0x01 000041cb: ADD 000041cc: PUSH2 0x41bc 000041cf: JUMP 000041d0: INVALID 000041d1: MSTORE8 000041d2: PUSH2 0x6665 000041d5: UNKNOWN(0x4D) 000041d6: PUSH2 0x7468 000041d9: GASPRICE 000041da: KECCAK256 000041db: PUSH14 0x756c7469706c69636174696f6e20 000041ea: PUSH16 0x766572666c6f7747726f75702073656c 000041fb: PUSH6 0x6374696f6e20 00004202: PUSH19 0x65696d62757273656d656e74206661696c6564 00004216: LOG2 00004217: PUSH6 0x627a7a723158 0000421e: KECCAK256 0000421f: PUSH27 0x629fb1f01059c4affbe2beac32ada102cc0c255c006aa13f47d4a6 0000423b: UNKNOWN(0xEE) 0000423c: SIGNEXTEND 0000423d: RETURN 0000423e: UNKNOWN(0x0C) 0000423f: PUSH5 0x736f6c6343 00004245: STOP 00004246: SDIV 00004247: GT 00004248: STOP 00004249: ORIGIN
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | access_control | codex | Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves | 90 | no | — |
viewevidence_json{
"evidence": "`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder\u2019s allowance and assign themselves as grantee.",
"locations": [
"contracts/solidity/contracts/TokenGrant.sol:210",
"contracts/solidity/contracts/TokenGrant.sol:252"
],
"recommendation": "Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.",
"exploit_scenario": "1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim\u2019s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant."
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd12f5e69",
"selector": "0xd12f5e69",
"calldata_variants": [
"0xd12f5e69",
"0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1f4d632",
"selector": "0xe1f4d632",
"calldata_variants": [
"0xe1f4d632",
"0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe581ff74",
"selector": "0xe581ff74",
"calldata_variants": [
"0xe581ff74",
"0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb9488d3",
"selector": "0xeb9488d3",
"calldata_variants": [
"0xeb9488d3",
"0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef7c8f9c",
"selector": "0xef7c8f9c",
"calldata_variants": [
"0xef7c8f9c",
"0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfdd18b13",
"selector": "0xfdd18b13",
"calldata_variants": [
"0xfdd18b13",
"0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc300d058",
"selector": "0xc300d058",
"calldata_variants": [
"0xc300d058",
"0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4438946",
"selector": "0xc4438946",
"calldata_variants": [
"0xc4438946",
"0xc44389460000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 16969,
"type": "tx_origin_used"
}
]
}
|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0xc76af3beee414cf5bdf9ddaec8f562d77cae6d1cb5a7d820da2d416ce7659824
call_targets:
0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "sink_reached",
"attempts": 2,
"trace_id": "0xc76af3beee414cf5bdf9ddaec8f562d77cae6d1cb5a7d820da2d416ce7659824",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xeec3e1799f908e7d1f367c71d6f2abce5f63239b"
],
"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": "0xd12f5e69",
"selector": "0xd12f5e69",
"calldata_variants": [
"0xd12f5e69",
"0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1f4d632",
"selector": "0xe1f4d632",
"calldata_variants": [
"0xe1f4d632",
"0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe581ff74",
"selector": "0xe581ff74",
"calldata_variants": [
"0xe581ff74",
"0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb9488d3",
"selector": "0xeb9488d3",
"calldata_variants": [
"0xeb9488d3",
"0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef7c8f9c",
"selector": "0xef7c8f9c",
"calldata_variants": [
"0xef7c8f9c",
"0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfdd18b13",
"selector": "0xfdd18b13",
"calldata_variants": [
"0xfdd18b13",
"0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc300d058",
"selector": "0xc300d058",
"calldata_variants": [
"0xc300d058",
"0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4438946",
"selector": "0xc4438946",
"calldata_variants": [
"0xc4438946",
"0xc44389460000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3751,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 4165,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 4679,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 16969,
"type": "tx_origin_used"
}
],
"delegatecall_count": 19,
"untrusted_delegatecall_count": 19
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144
call_targets:
0xdf708431162ba247ddae362d2c919e0fbafcf9de
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xdf708431162ba247ddae362d2c919e0fbafcf9de"
],
"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": "0xd12f5e69",
"selector": "0xd12f5e69",
"calldata_variants": [
"0xd12f5e69",
"0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1f4d632",
"selector": "0xe1f4d632",
"calldata_variants": [
"0xe1f4d632",
"0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe581ff74",
"selector": "0xe581ff74",
"calldata_variants": [
"0xe581ff74",
"0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb9488d3",
"selector": "0xeb9488d3",
"calldata_variants": [
"0xeb9488d3",
"0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef7c8f9c",
"selector": "0xef7c8f9c",
"calldata_variants": [
"0xef7c8f9c",
"0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfdd18b13",
"selector": "0xfdd18b13",
"calldata_variants": [
"0xfdd18b13",
"0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc300d058",
"selector": "0xc300d058",
"calldata_variants": [
"0xc300d058",
"0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4438946",
"selector": "0xc4438946",
"calldata_variants": [
"0xc4438946",
"0xc44389460000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5205,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10282,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10546,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 11,
"guards_detected": [
{
"pc": 16969,
"type": "tx_origin_used"
}
]
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 19
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144
call_targets:
0xdf708431162ba247ddae362d2c919e0fbafcf9de
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xdf708431162ba247ddae362d2c919e0fbafcf9de"
],
"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": "0xd12f5e69",
"selector": "0xd12f5e69",
"calldata_variants": [
"0xd12f5e69",
"0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1f4d632",
"selector": "0xe1f4d632",
"calldata_variants": [
"0xe1f4d632",
"0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe581ff74",
"selector": "0xe581ff74",
"calldata_variants": [
"0xe581ff74",
"0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb9488d3",
"selector": "0xeb9488d3",
"calldata_variants": [
"0xeb9488d3",
"0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef7c8f9c",
"selector": "0xef7c8f9c",
"calldata_variants": [
"0xef7c8f9c",
"0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfdd18b13",
"selector": "0xfdd18b13",
"calldata_variants": [
"0xfdd18b13",
"0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc300d058",
"selector": "0xc300d058",
"calldata_variants": [
"0xc300d058",
"0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4438946",
"selector": "0xc4438946",
"calldata_variants": [
"0xc4438946",
"0xc44389460000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5205,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10282,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10546,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 11,
"guards_detected": [
{
"pc": 16969,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 11
}
|
| 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": 22
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 33
}
|