f76b99f1-db73-4dfa-bc73-036c64ae0326
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 |
|---|---|---|---|---|
| 30781 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 75682 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 75683 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 75684 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 75685 | capability.graph | complete | 1 / 3 | 1 week ago |
| 75686 | detector.run | complete | 1 / 3 | 1 week ago |
| 75687 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1242535] OpenAI Codex v0.77.0 (research preview)
[codex:1242535] --------
[codex:1242535] workdir: /tmp/codex-multi-6krxhzll
[codex:1242535] model: gpt-5.2-codex
[codex:1242535] provider: openai
[codex:1242535] approval: never
[codex:1242535] sandbox: read-only
[codex:1242535] reasoning effort: xhigh
[codex:1242535] reasoning summaries: auto
[codex:1242535] session id: 019b712b-d5cf-7bc2-aac3-b0564a3dfaf8
[codex:1242535] --------
[codex:1242535] user
[codex:1242535] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1242535] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1242535] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1242535]
[codex:1242535] Scope rules:
[codex:1242535] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1242535] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1242535]
[codex:1242535] Output MUST be valid JSON matching the provided schema.
[codex:1242535] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1242535] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1242535]
[codex:1242535] Output constraints (IMPORTANT):
[codex:1242535] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1242535] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1242535] mcp startup: no servers
[codex:1242535]
[codex:1242535] thinking
[codex:1242535] **Reviewing AUDIT_BUNDLE.txt contents**
[codex:1242535] exec
[codex:1242535] /bin/bash -lc ls in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535] AUDIT_BUNDLE.txt
[codex:1242535] codex-output-schema.json
[codex:1242535] contracts
[codex:1242535]
[codex:1242535] thinking
[codex:1242535] **Reading AUDIT_BUNDLE file**
[codex:1242535] exec
[codex:1242535] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1242535]
[codex:1242535] ================================================================================
[codex:1242535] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1242535] ================================================================================
[codex:1242535] // SPDX-License-Identifier: MIT
[codex:1242535] // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1242535]
[codex:1242535] pragma solidity ^0.8.20;
[codex:1242535]
[codex:1242535] import {Context} from "../utils/Context.sol";
[codex:1242535]
[codex:1242535] /**
[codex:1242535] * @dev Contract module which provides a basic access control mechanism, where
[codex:1242535] * there is an account (an owner) that can be granted exclusive access to
[codex:1242535] * specific functions.
[codex:1242535] *
[codex:1242535] * The initial owner is set to the address provided by the deployer. This can
[codex:1242535] * later be changed with {transferOwnership}.
[codex:1242535] *
[codex:1242535]
[codex:1242535] thinking
[codex:1242535] **Analyzing JPGDStaking contract for vulnerabilities**
[codex:1242535]
[codex:1242535] I'm auditing JPGDStaking focusing on risks like unchecked token transfer returns, access control, reentrancy, and potential accounting mismatches—especially around staking with fee-on-transfer tokens and owner privileges that may centralize risk. I'll refer to file line numbers for evidence to produce a detailed vulnerability report.
[codex:1242535] exec
[codex:1242535] /bin/bash -lc 'nl -ba contracts/contracts/JPGDStaking.sol' in /tmp/codex-multi-6krxhzll succeeded in 5ms:
[codex:1242535] 1 // SPDX-License-Identifier: GPL-3.0
[codex:1242535] 2 pragma solidity ^0.8.4;
[codex:1242535] 3
[codex:1242535] 4 import "@openzeppelin/contracts/access/Ownable.sol";
[codex:1242535] 5 import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1242535] 6 import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1242535] 7 import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1242535] 8 import "@openzeppelin/contracts/utils/Pausable.sol";
[codex:1242535] 9
[codex:1242535] 10 /// @title JPGD Staking
[codex:1242535] 11 /// @notice This contract allows users to stake their JPGD and get a share of the protocol's treasury.
[codex:1242535] 12 /// Staked JPGD can be withdrawn at any time before {snapshot} is called by the owner.
[codex:1242535] 13 /// After the {snapshot} call, the staked JPGD will be locked with a linear vesting schedule defined in {vestingSchedule}.
[codex:1242535] 14 /// The start of the vesting schedule is set during the first {increaseClaimableTokenAmount} call, which also distributes owner
[codex:1242535] 15 /// defined assets.
[codex:1242535] 16 /// The distribution can also happen in chunks, in which case {increaseClaimableTokenAmount} and {addClaimableToken} will
[codex:1242535] 17 /// be called more than once.
[codex:1242535] 18 contract JPGDStaking is Ownable, ReentrancyGuard, Pausable {
[codex:1242535] 19 using SafeERC20 for IERC20;
[codex:1242535] 20
[codex:1242535]
[codex:1242535]
[codex:1242535] thinking
[codex:1242535] **Assessing staking contract vulnerabilities**
[codex:1242535] thinking
[codex:1242535] **Preparing detailed findings and final JSON**
[codex:1242535]
[codex:1242535] I'll organize three findings: the medium-risk unchecked JPGD transfers with fee-on-transfer issues, the low-risk owner withdrawal privilege, and the low-risk owner-controlled vesting start lock. I'll carefully list evidence line numbers and craft a concise summary within a valid JSON object for output.
[codex:1242535] codex
[codex:1242535] {"no_findings":false,"summary":"Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.","findings":[{"severity":"medium","category":"other","title":"Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens","exploit_scenario":"If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency.","recommendation":"Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.","evidence":"`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.","locations":["contracts/contracts/JPGDStaking.sol:86","contracts/contracts/JPGDStaking.sol:88","contracts/contracts/JPGDStaking.sol:108","contracts/contracts/JPGDStaking.sol:166"]},{"severity":"low","category":"access_control","title":"Owner can withdraw any token, breaking solvency for stakers/claimants","exploit_scenario":"A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers.","recommendation":"Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.","evidence":"`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.","locations":["contracts/contracts/JPGDStaking.sol:228","contracts/contracts/JPGDStaking.sol:231","contracts/contracts/JPGDStaking.sol:232"]},{"severity":"low","category":"access_control","title":"Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot","exploit_scenario":"After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely.","recommendation":"Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.","evidence":"`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.","locations":["contracts/contracts/JPGDStaking.sol:153","contracts/contracts/JPGDStaking.sol:182","contracts/contracts/JPGDStaking.sol:213","contracts/contracts/JPGDStaking.sol:214"]}]}
[codex:1242535] tokens used
[codex:1242535] 24,247
[codex:1242535] {"no_findings":false,"summary":"Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.","findings":[{"severity":"medium","category":"other","title":"Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens","exploit_scenario":"If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency.","recommendation":"Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.","evidence":"`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.","locations":["contracts/contracts/JPGDStaking.sol:86","contracts/contracts/JPGDStaking.sol:88","contracts/contracts/JPGDStaking.sol:108","contracts/contracts/JPGDStaking.sol:166"]},{"severity":"low","category":"access_control","title":"Owner can withdraw any token, breaking solvency for stakers/claimants","exploit_scenario":"A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers.","recommendation":"Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.","evidence":"`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.","locations":["contracts/contracts/JPGDStaking.sol:228","contracts/contracts/JPGDStaking.sol:231","contracts/contracts/JPGDStaking.sol:232"]},{"severity":"low","category":"access_control","title":"Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot","exploit_scenario":"After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely.","recommendation":"Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.","evidence":"`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.","locations":["contracts/contracts/JPGDStaking.sol:153","contracts/contracts/JPGDStaking.sol:182","contracts/contracts/JPGDStaking.sol:213","contracts/contracts/JPGDStaking.sol:214"]}]}
{
"codex": {
"ran_at": "2025-12-30T21:33:20.428012+00:00",
"returncode": 0
},
"summary": "Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.",
"raw_final": {
"summary": "Found unsafe handling of JPGD transfers that can desync accounting plus privileged owner actions that can break solvency or lock vesting.",
"findings": [
{
"title": "Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens",
"category": "other",
"evidence": "`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.",
"severity": "medium",
"locations": [
"contracts/contracts/JPGDStaking.sol:86",
"contracts/contracts/JPGDStaking.sol:88",
"contracts/contracts/JPGDStaking.sol:108",
"contracts/contracts/JPGDStaking.sol:166"
],
"recommendation": "Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.",
"exploit_scenario": "If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency."
},
{
"title": "Owner can withdraw any token, breaking solvency for stakers/claimants",
"category": "access_control",
"evidence": "`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.",
"severity": "low",
"locations": [
"contracts/contracts/JPGDStaking.sol:228",
"contracts/contracts/JPGDStaking.sol:231",
"contracts/contracts/JPGDStaking.sol:232"
],
"recommendation": "Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.",
"exploit_scenario": "A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers."
},
{
"title": "Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot",
"category": "access_control",
"evidence": "`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.",
"severity": "low",
"locations": [
"contracts/contracts/JPGDStaking.sol:153",
"contracts/contracts/JPGDStaking.sol:182",
"contracts/contracts/JPGDStaking.sol:213",
"contracts/contracts/JPGDStaking.sol:214"
],
"recommendation": "Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.",
"exploit_scenario": "After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x0137 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x8da5cb5b 00000026: GT 00000027: PUSH2 0x00b8 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xb7f239a5 00000031: GT 00000032: PUSH2 0x007c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xb7f239a5 0000003c: EQ 0000003d: PUSH2 0x033c 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xc2ed2ef9 00000047: EQ 00000048: PUSH2 0x0358 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xd6f23503 00000052: EQ 00000053: PUSH2 0x0376 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xdf8de3e7 0000005d: EQ 0000005e: PUSH2 0x0394 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xf2fde38b 00000068: EQ 00000069: PUSH2 0x03b0 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xf7aa8057 00000073: EQ 00000074: PUSH2 0x03cc 00000077: JUMPI 00000078: PUSH2 0x0137 0000007b: JUMP 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x8da5cb5b 00000083: EQ 00000084: PUSH2 0x0286 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x9369198a 0000008e: EQ 0000008f: PUSH2 0x02a4 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x9e281a98 00000099: EQ 0000009a: PUSH2 0x02d4 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0xa7019cad 000000a4: EQ 000000a5: PUSH2 0x02f0 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0xadc9772e 000000af: EQ 000000b0: PUSH2 0x0320 000000b3: JUMPI 000000b4: PUSH2 0x0137 000000b7: JUMP 000000b8: JUMPDEST 000000b9: DUP1 000000ba: PUSH4 0x6678e55d 000000bf: GT 000000c0: PUSH2 0x00ff 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x6678e55d 000000ca: EQ 000000cb: PUSH2 0x01f6 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x6a3d1d2c 000000d5: EQ 000000d6: PUSH2 0x0214 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x715018a6 000000e0: EQ 000000e1: PUSH2 0x0230 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x73a874d0 000000eb: EQ 000000ec: PUSH2 0x023a 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x8381e182 000000f6: EQ 000000f7: PUSH2 0x026a 000000fa: JUMPI 000000fb: PUSH2 0x0137 000000fe: JUMP 000000ff: JUMPDEST 00000100: DUP1 00000101: PUSH4 0x0217ce49 00000106: EQ 00000107: PUSH2 0x013c 0000010a: JUMPI 0000010b: DUP1 0000010c: PUSH4 0x1d79aad8 00000111: EQ 00000112: PUSH2 0x016c 00000115: JUMPI 00000116: DUP1 00000117: PUSH4 0x4b680444 0000011c: EQ 0000011d: PUSH2 0x0188 00000120: JUMPI 00000121: DUP1 00000122: PUSH4 0x505a92f6 00000127: EQ 00000128: PUSH2 0x01a8 0000012b: JUMPI 0000012c: DUP1 0000012d: PUSH4 0x5c975abb 00000132: EQ 00000133: PUSH2 0x01d8 00000136: JUMPI 00000137: JUMPDEST 00000138: PUSH1 0x00 0000013a: DUP1 0000013b: REVERT 0000013c: JUMPDEST 0000013d: PUSH2 0x0156 00000140: PUSH1 0x04 00000142: DUP1 00000143: CALLDATASIZE 00000144: SUB 00000145: DUP2 00000146: ADD 00000147: SWAP1 00000148: PUSH2 0x0151 0000014b: SWAP2 0000014c: SWAP1 0000014d: PUSH2 0x1d29 00000150: JUMP 00000151: JUMPDEST 00000152: PUSH2 0x03e8 00000155: JUMP 00000156: JUMPDEST 00000157: PUSH1 0x40 00000159: MLOAD 0000015a: PUSH2 0x0163 0000015d: SWAP2 0000015e: SWAP1 0000015f: PUSH2 0x1dd5 00000162: JUMP 00000163: JUMPDEST 00000164: PUSH1 0x40 00000166: MLOAD 00000167: DUP1 00000168: SWAP2 00000169: SUB 0000016a: SWAP1 0000016b: RETURN 0000016c: JUMPDEST 0000016d: PUSH2 0x0186 00000170: PUSH1 0x04 00000172: DUP1 00000173: CALLDATASIZE 00000174: SUB 00000175: DUP2 00000176: ADD 00000177: SWAP1 00000178: PUSH2 0x0181 0000017b: SWAP2 0000017c: SWAP1 0000017d: PUSH2 0x1e32 00000180: JUMP 00000181: JUMPDEST 00000182: PUSH2 0x041b 00000185: JUMP 00000186: JUMPDEST 00000187: STOP 00000188: JUMPDEST 00000189: PUSH2 0x0190 0000018c: PUSH2 0x05e6 0000018f: JUMP 00000190: JUMPDEST 00000191: PUSH1 0x40 00000193: MLOAD 00000194: PUSH2 0x019f 00000197: SWAP4 00000198: SWAP3 00000199: SWAP2 0000019a: SWAP1 0000019b: PUSH2 0x1e81 0000019e: JUMP 0000019f: JUMPDEST 000001a0: PUSH1 0x40 000001a2: MLOAD 000001a3: DUP1 000001a4: SWAP2 000001a5: SUB 000001a6: SWAP1 000001a7: RETURN 000001a8: JUMPDEST 000001a9: PUSH2 0x01c2 000001ac: PUSH1 0x04 000001ae: DUP1 000001af: CALLDATASIZE 000001b0: SUB 000001b1: DUP2 000001b2: ADD 000001b3: SWAP1 000001b4: PUSH2 0x01bd 000001b7: SWAP2 000001b8: SWAP1 000001b9: PUSH2 0x1ef6 000001bc: JUMP 000001bd: JUMPDEST 000001be: PUSH2 0x0640 000001c1: JUMP 000001c2: JUMPDEST 000001c3: PUSH1 0x40 000001c5: MLOAD 000001c6: PUSH2 0x01cf 000001c9: SWAP2 000001ca: SWAP1 000001cb: PUSH2 0x1f32 000001ce: JUMP 000001cf: JUMPDEST 000001d0: PUSH1 0x40 000001d2: MLOAD 000001d3: DUP1 000001d4: SWAP2 000001d5: SUB 000001d6: SWAP1 000001d7: RETURN 000001d8: JUMPDEST 000001d9: PUSH2 0x01e0 000001dc: PUSH2 0x0658 000001df: JUMP 000001e0: JUMPDEST 000001e1: PUSH1 0x40 000001e3: MLOAD 000001e4: PUSH2 0x01ed 000001e7: SWAP2 000001e8: SWAP1 000001e9: PUSH2 0x1f68 000001ec: JUMP 000001ed: JUMPDEST 000001ee: PUSH1 0x40 000001f0: MLOAD 000001f1: DUP1 000001f2: SWAP2 000001f3: SUB 000001f4: SWAP1 000001f5: RETURN 000001f6: JUMPDEST 000001f7: PUSH2 0x01fe 000001fa: PUSH2 0x066f 000001fd: JUMP 000001fe: JUMPDEST 000001ff: PUSH1 0x40 00000201: MLOAD 00000202: PUSH2 0x020b 00000205: SWAP2 00000206: SWAP1 00000207: PUSH2 0x1f32 0000020a: JUMP 0000020b: JUMPDEST 0000020c: PUSH1 0x40 0000020e: MLOAD 0000020f: DUP1 00000210: SWAP2 00000211: SUB 00000212: SWAP1 00000213: RETURN 00000214: JUMPDEST 00000215: PUSH2 0x022e 00000218: PUSH1 0x04 0000021a: DUP1 0000021b: CALLDATASIZE 0000021c: SUB 0000021d: DUP2 0000021e: ADD 0000021f: SWAP1 00000220: PUSH2 0x0229 00000223: SWAP2 00000224: SWAP1 00000225: PUSH2 0x1ef6 00000228: JUMP 00000229: JUMPDEST 0000022a: PUSH2 0x0675 0000022d: JUMP 0000022e: JUMPDEST 0000022f: STOP 00000230: JUMPDEST 00000231: PUSH2 0x0238 00000234: PUSH2 0x078b 00000237: JUMP 00000238: JUMPDEST 00000239: STOP 0000023a: JUMPDEST 0000023b: PUSH2 0x0254 0000023e: PUSH1 0x04 00000240: DUP1 00000241: CALLDATASIZE 00000242: SUB 00000243: DUP2 00000244: ADD 00000245: SWAP1 00000246: PUSH2 0x024f 00000249: SWAP2 0000024a: SWAP1 0000024b: PUSH2 0x1f83 0000024e: JUMP 0000024f: JUMPDEST 00000250: PUSH2 0x079f 00000253: JUMP 00000254: JUMPDEST 00000255: PUSH1 0x40 00000257: MLOAD 00000258: PUSH2 0x0261 0000025b: SWAP2 0000025c: SWAP1 0000025d: PUSH2 0x1f32 00000260: JUMP 00000261: JUMPDEST 00000262: PUSH1 0x40 00000264: MLOAD 00000265: DUP1 00000266: SWAP2 00000267: SUB 00000268: SWAP1 00000269: RETURN 0000026a: JUMPDEST 0000026b: PUSH2 0x0284 0000026e: PUSH1 0x04 00000270: DUP1 00000271: CALLDATASIZE 00000272: SUB 00000273: DUP2 00000274: ADD 00000275: SWAP1 00000276: PUSH2 0x027f 00000279: SWAP2 0000027a: SWAP1 0000027b: PUSH2 0x1fc3 0000027e: JUMP 0000027f: JUMPDEST 00000280: PUSH2 0x07c4 00000283: JUMP 00000284: JUMPDEST 00000285: STOP 00000286: JUMPDEST 00000287: PUSH2 0x028e 0000028a: PUSH2 0x09ee 0000028d: JUMP 0000028e: JUMPDEST 0000028f: PUSH1 0x40 00000291: MLOAD 00000292: PUSH2 0x029b 00000295: SWAP2 00000296: SWAP1 00000297: PUSH2 0x2012 0000029a: JUMP 0000029b: JUMPDEST 0000029c: PUSH1 0x40 0000029e: MLOAD 0000029f: DUP1 000002a0: SWAP2 000002a1: SUB 000002a2: SWAP1 000002a3: RETURN 000002a4: JUMPDEST 000002a5: PUSH2 0x02be 000002a8: PUSH1 0x04 000002aa: DUP1 000002ab: CALLDATASIZE 000002ac: SUB 000002ad: DUP2 000002ae: ADD 000002af: SWAP1 000002b0: PUSH2 0x02b9 000002b3: SWAP2 000002b4: SWAP1 000002b5: PUSH2 0x1ef6 000002b8: JUMP 000002b9: JUMPDEST 000002ba: PUSH2 0x0a17 000002bd: JUMP 000002be: JUMPDEST 000002bf: PUSH1 0x40 000002c1: MLOAD 000002c2: PUSH2 0x02cb 000002c5: SWAP2 000002c6: SWAP1 000002c7: PUSH2 0x1f32 000002ca: JUMP 000002cb: JUMPDEST 000002cc: PUSH1 0x40 000002ce: MLOAD 000002cf: DUP1 000002d0: SWAP2 000002d1: SUB 000002d2: SWAP1 000002d3: RETURN 000002d4: JUMPDEST 000002d5: PUSH2 0x02ee 000002d8: PUSH1 0x04 000002da: DUP1 000002db: CALLDATASIZE 000002dc: SUB 000002dd: DUP2 000002de: ADD 000002df: SWAP1 000002e0: PUSH2 0x02e9 000002e3: SWAP2 000002e4: SWAP1 000002e5: PUSH2 0x206b 000002e8: JUMP 000002e9: JUMPDEST 000002ea: PUSH2 0x0a2f 000002ed: JUMP 000002ee: JUMPDEST 000002ef: STOP 000002f0: JUMPDEST 000002f1: PUSH2 0x030a 000002f4: PUSH1 0x04 000002f6: DUP1 000002f7: CALLDATASIZE 000002f8: SUB 000002f9: DUP2 000002fa: ADD 000002fb: SWAP1 000002fc: PUSH2 0x0305 000002ff: SWAP2 00000300: SWAP1 00000301: PUSH2 0x1d29 00000304: JUMP 00000305: JUMPDEST 00000306: PUSH2 0x0a66 00000309: JUMP 0000030a: JUMPDEST 0000030b: PUSH1 0x40 0000030d: MLOAD 0000030e: PUSH2 0x0317 00000311: SWAP2 00000312: SWAP1 00000313: PUSH2 0x1f32 00000316: JUMP 00000317: JUMPDEST 00000318: PUSH1 0x40 0000031a: MLOAD 0000031b: DUP1 0000031c: SWAP2 0000031d: SUB 0000031e: SWAP1 0000031f: RETURN 00000320: JUMPDEST 00000321: PUSH2 0x033a 00000324: PUSH1 0x04 00000326: DUP1 00000327: CALLDATASIZE 00000328: SUB 00000329: DUP2 0000032a: ADD 0000032b: SWAP1 0000032c: PUSH2 0x0335 0000032f: SWAP2 00000330: SWAP1 00000331: PUSH2 0x1f83 00000334: JUMP 00000335: JUMPDEST 00000336: PUSH2 0x0a7e 00000339: JUMP 0000033a: JUMPDEST 0000033b: STOP 0000033c: JUMPDEST 0000033d: PUSH2 0x0356 00000340: PUSH1 0x04 00000342: DUP1 00000343: CALLDATASIZE 00000344: SUB 00000345: DUP2 00000346: ADD 00000347: SWAP1 00000348: PUSH2 0x0351 0000034b: SWAP2 0000034c: SWAP1 0000034d: PUSH2 0x1ef6 00000350: JUMP 00000351: JUMPDEST 00000352: PUSH2 0x0c98 00000355: JUMP 00000356: JUMPDEST 00000357: STOP 00000358: JUMPDEST 00000359: PUSH2 0x0360 0000035c: PUSH2 0x1095 0000035f: JUMP 00000360: JUMPDEST 00000361: PUSH1 0x40 00000363: MLOAD 00000364: PUSH2 0x036d 00000367: SWAP2 00000368: SWAP1 00000369: PUSH2 0x1f32 0000036c: JUMP 0000036d: JUMPDEST 0000036e: PUSH1 0x40 00000370: MLOAD 00000371: DUP1 00000372: SWAP2 00000373: SUB 00000374: SWAP1 00000375: RETURN 00000376: JUMPDEST 00000377: PUSH2 0x037e 0000037a: PUSH2 0x109b 0000037d: JUMP 0000037e: JUMPDEST 0000037f: PUSH1 0x40 00000381: MLOAD 00000382: PUSH2 0x038b 00000385: SWAP2 00000386: SWAP1 00000387: PUSH2 0x1dd5 0000038a: JUMP 0000038b: JUMPDEST 0000038c: PUSH1 0x40 0000038e: MLOAD 0000038f: DUP1 00000390: SWAP2 00000391: SUB 00000392: SWAP1 00000393: RETURN 00000394: JUMPDEST 00000395: PUSH2 0x03ae 00000398: PUSH1 0x04 0000039a: DUP1 0000039b: CALLDATASIZE 0000039c: SUB 0000039d: DUP2 0000039e: ADD 0000039f: SWAP1 000003a0: PUSH2 0x03a9 000003a3: SWAP2 000003a4: SWAP1 000003a5: PUSH2 0x1ef6 000003a8: JUMP 000003a9: JUMPDEST 000003aa: PUSH2 0x10bf 000003ad: JUMP 000003ae: JUMPDEST 000003af: STOP 000003b0: JUMPDEST 000003b1: PUSH2 0x03ca 000003b4: PUSH1 0x04 000003b6: DUP1 000003b7: CALLDATASIZE 000003b8: SUB 000003b9: DUP2 000003ba: ADD 000003bb: SWAP1 000003bc: PUSH2 0x03c5 000003bf: SWAP2 000003c0: SWAP1 000003c1: PUSH2 0x1ef6 000003c4: JUMP 000003c5: JUMPDEST 000003c6: PUSH2 0x1398 000003c9: JUMP 000003ca: JUMPDEST 000003cb: STOP 000003cc: JUMPDEST 000003cd: PUSH2 0x03e6 000003d0: PUSH1 0x04 000003d2: DUP1 000003d3: CALLDATASIZE 000003d4: SUB 000003d5: DUP2 000003d6: ADD 000003d7: SWAP1 000003d8: PUSH2 0x03e1 000003db: SWAP2 000003dc: SWAP1 000003dd: PUSH2 0x20ab 000003e0: JUMP 000003e1: JUMPDEST 000003e2: PUSH2 0x141e 000003e5: JUMP 000003e6: JUMPDEST 000003e7: STOP 000003e8: JUMPDEST 000003e9: PUSH1 0x04 000003eb: PUSH1 0x20 000003ed: MSTORE 000003ee: DUP1 000003ef: PUSH1 0x00 000003f1: MSTORE 000003f2: PUSH1 0x40 000003f4: PUSH1 0x00 000003f6: KECCAK256 000003f7: PUSH1 0x00 000003f9: SWAP2 000003fa: POP 000003fb: SLOAD 000003fc: SWAP1 000003fd: PUSH2 0x0100 00000400: EXP 00000401: SWAP1 00000402: DIV 00000403: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000418: AND 00000419: DUP2 0000041a: JUMP 0000041b: JUMPDEST 0000041c: PUSH2 0x0423 0000041f: PUSH2 0x1719 00000422: JUMP 00000423: JUMPDEST 00000424: PUSH2 0x042b 00000427: PUSH2 0x17a0 0000042a: JUMP 0000042b: JUMPDEST 0000042c: PUSH2 0x0433 0000042f: PUSH2 0x17e1 00000432: JUMP 00000433: JUMPDEST 00000434: PUSH1 0x00 00000436: DUP2 00000437: PUSH10 0xffffffffffffffffffff 00000442: AND 00000443: SUB 00000444: PUSH2 0x0479 00000447: JUMPI 00000448: PUSH1 0x40 0000044a: MLOAD 0000044b: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 0000046c: DUP2 0000046d: MSTORE 0000046e: PUSH1 0x04 00000470: ADD 00000471: PUSH1 0x40 00000473: MLOAD 00000474: DUP1 00000475: SWAP2 00000476: SUB 00000477: SWAP1 00000478: REVERT 00000479: JUMPDEST 0000047a: DUP1 0000047b: PUSH10 0xffffffffffffffffffff 00000486: AND 00000487: DUP3 00000488: PUSH10 0xffffffffffffffffffff 00000493: AND 00000494: GT 00000495: ISZERO 00000496: PUSH2 0x04cb 00000499: JUMPI 0000049a: PUSH1 0x40 0000049c: MLOAD 0000049d: PUSH32 0x285732a400000000000000000000000000000000000000000000000000000000 000004be: DUP2 000004bf: MSTORE 000004c0: PUSH1 0x04 000004c2: ADD 000004c3: PUSH1 0x40 000004c5: MLOAD 000004c6: DUP1 000004c7: SWAP2 000004c8: SUB 000004c9: SWAP1 000004ca: REVERT 000004cb: JUMPDEST 000004cc: PUSH1 0x40 000004ce: MLOAD 000004cf: DUP1 000004d0: PUSH1 0x60 000004d2: ADD 000004d3: PUSH1 0x40 000004d5: MSTORE 000004d6: DUP1 000004d7: PUSH1 0x00 000004d9: PUSH10 0xffffffffffffffffffff 000004e4: AND 000004e5: DUP2 000004e6: MSTORE 000004e7: PUSH1 0x20 000004e9: ADD 000004ea: DUP4 000004eb: PUSH10 0xffffffffffffffffffff 000004f6: AND 000004f7: DUP2 000004f8: MSTORE 000004f9: PUSH1 0x20 000004fb: ADD 000004fc: DUP3 000004fd: PUSH10 0xffffffffffffffffffff 00000508: AND 00000509: DUP2 0000050a: MSTORE 0000050b: POP 0000050c: PUSH1 0x0a 0000050e: PUSH1 0x00 00000510: DUP3 00000511: ADD 00000512: MLOAD 00000513: DUP2 00000514: PUSH1 0x00 00000516: ADD 00000517: PUSH1 0x00 00000519: PUSH2 0x0100 0000051c: EXP 0000051d: DUP2 0000051e: SLOAD 0000051f: DUP2 00000520: PUSH10 0xffffffffffffffffffff 0000052b: MUL 0000052c: NOT 0000052d: AND 0000052e: SWAP1 0000052f: DUP4 00000530: PUSH10 0xffffffffffffffffffff 0000053b: AND 0000053c: MUL 0000053d: OR 0000053e: SWAP1 0000053f: SSTORE 00000540: POP 00000541: PUSH1 0x20 00000543: DUP3 00000544: ADD 00000545: MLOAD 00000546: DUP2 00000547: PUSH1 0x00 00000549: ADD 0000054a: PUSH1 0x0a 0000054c: PUSH2 0x0100 0000054f: EXP 00000550: DUP2 00000551: SLOAD 00000552: DUP2 00000553: PUSH10 0xffffffffffffffffffff 0000055e: MUL 0000055f: NOT 00000560: AND 00000561: SWAP1 00000562: DUP4 00000563: PUSH10 0xffffffffffffffffffff 0000056e: AND 0000056f: MUL 00000570: OR 00000571: SWAP1 00000572: SSTORE 00000573: POP 00000574: PUSH1 0x40 00000576: DUP3 00000577: ADD 00000578: MLOAD 00000579: DUP2 0000057a: PUSH1 0x00 0000057c: ADD 0000057d: PUSH1 0x14 0000057f: PUSH2 0x0100 00000582: EXP 00000583: DUP2 00000584: SLOAD 00000585: DUP2 00000586: PUSH10 0xffffffffffffffffffff 00000591: MUL 00000592: NOT 00000593: AND 00000594: SWAP1 00000595: DUP4 00000596: PUSH10 0xffffffffffffffffffff 000005a1: AND 000005a2: MUL 000005a3: OR 000005a4: SWAP1 000005a5: SSTORE 000005a6: POP 000005a7: SWAP1 000005a8: POP 000005a9: POP 000005aa: PUSH32 0x8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67 000005cb: PUSH1 0x08 000005cd: SLOAD 000005ce: PUSH1 0x40 000005d0: MLOAD 000005d1: PUSH2 0x05da 000005d4: SWAP2 000005d5: SWAP1 000005d6: PUSH2 0x1f32 000005d9: JUMP 000005da: JUMPDEST 000005db: PUSH1 0x40 000005dd: MLOAD 000005de: DUP1 000005df: SWAP2 000005e0: SUB 000005e1: SWAP1 000005e2: LOG1 000005e3: POP 000005e4: POP 000005e5: JUMP 000005e6: JUMPDEST 000005e7: PUSH1 0x0a 000005e9: DUP1 000005ea: PUSH1 0x00 000005ec: ADD 000005ed: PUSH1 0x00 000005ef: SWAP1 000005f0: SLOAD 000005f1: SWAP1 000005f2: PUSH2 0x0100 000005f5: EXP 000005f6: SWAP1 000005f7: DIV 000005f8: PUSH10 0xffffffffffffffffffff 00000603: AND 00000604: SWAP1 00000605: DUP1 00000606: PUSH1 0x00 00000608: ADD 00000609: PUSH1 0x0a 0000060b: SWAP1 0000060c: SLOAD 0000060d: SWAP1 0000060e: PUSH2 0x0100 00000611: EXP 00000612: SWAP1 00000613: DIV 00000614: PUSH10 0xffffffffffffffffffff 0000061f: AND 00000620: SWAP1 00000621: DUP1 00000622: PUSH1 0x00 00000624: ADD 00000625: PUSH1 0x14 00000627: SWAP1 00000628: SLOAD 00000629: SWAP1 0000062a: PUSH2 0x0100 0000062d: EXP 0000062e: SWAP1 0000062f: DIV 00000630: PUSH10 0xffffffffffffffffffff 0000063b: AND 0000063c: SWAP1 0000063d: POP 0000063e: DUP4 0000063f: JUMP 00000640: JUMPDEST 00000641: PUSH1 0x07 00000643: PUSH1 0x20 00000645: MSTORE 00000646: DUP1 00000647: PUSH1 0x00 00000649: MSTORE 0000064a: PUSH1 0x40 0000064c: PUSH1 0x00 0000064e: KECCAK256 0000064f: PUSH1 0x00 00000651: SWAP2 00000652: POP 00000653: SWAP1 00000654: POP 00000655: SLOAD 00000656: DUP2 00000657: JUMP 00000658: JUMPDEST 00000659: PUSH1 0x00 0000065b: PUSH1 0x02 0000065d: PUSH1 0x00 0000065f: SWAP1 00000660: SLOAD 00000661: SWAP1 00000662: PUSH2 0x0100 00000665: EXP 00000666: SWAP1 00000667: DIV 00000668: PUSH1 0xff 0000066a: AND 0000066b: SWAP1 0000066c: POP 0000066d: SWAP1 0000066e: JUMP 0000066f: JUMPDEST 00000670: PUSH1 0x08 00000672: SLOAD 00000673: DUP2 00000674: JUMP 00000675: JUMPDEST 00000676: PUSH2 0x067d 00000679: PUSH2 0x1719 0000067c: JUMP 0000067d: JUMPDEST 0000067e: PUSH1 0x00 00000680: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000695: AND 00000696: DUP2 00000697: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006ac: AND 000006ad: SUB 000006ae: PUSH2 0x06e3 000006b1: JUMPI 000006b2: PUSH1 0x40 000006b4: MLOAD 000006b5: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000 000006d6: DUP2 000006d7: MSTORE 000006d8: PUSH1 0x04 000006da: ADD 000006db: PUSH1 0x40 000006dd: MLOAD 000006de: DUP1 000006df: SWAP2 000006e0: SUB 000006e1: SWAP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: PUSH1 0x00 000006e6: PUSH1 0x09 000006e8: SLOAD 000006e9: SWAP1 000006ea: POP 000006eb: DUP2 000006ec: PUSH1 0x04 000006ee: PUSH1 0x00 000006f0: DUP4 000006f1: DUP2 000006f2: MSTORE 000006f3: PUSH1 0x20 000006f5: ADD 000006f6: SWAP1 000006f7: DUP2 000006f8: MSTORE 000006f9: PUSH1 0x20 000006fb: ADD 000006fc: PUSH1 0x00 000006fe: KECCAK256 000006ff: PUSH1 0x00 00000701: PUSH2 0x0100 00000704: EXP 00000705: DUP2 00000706: SLOAD 00000707: DUP2 00000708: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000071d: MUL 0000071e: NOT 0000071f: AND 00000720: SWAP1 00000721: DUP4 00000722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000737: AND 00000738: MUL 00000739: OR 0000073a: SWAP1 0000073b: SSTORE 0000073c: POP 0000073d: PUSH1 0x01 0000073f: DUP2 00000740: PUSH2 0x0749 00000743: SWAP2 00000744: SWAP1 00000745: PUSH2 0x211a 00000748: JUMP 00000749: JUMPDEST 0000074a: PUSH1 0x09 0000074c: DUP2 0000074d: SWAP1 0000074e: SSTORE 0000074f: POP 00000750: DUP1 00000751: PUSH32 0xf4ae65a2e18ea7be182d884aa76396882597d2e202dd000d67e0fe9f25badbc1 00000772: DUP4 00000773: PUSH1 0x40 00000775: MLOAD 00000776: PUSH2 0x077f 00000779: SWAP2 0000077a: SWAP1 0000077b: PUSH2 0x1dd5 0000077e: JUMP 0000077f: JUMPDEST 00000780: PUSH1 0x40 00000782: MLOAD 00000783: DUP1 00000784: SWAP2 00000785: SUB 00000786: SWAP1 00000787: LOG2 00000788: POP 00000789: POP 0000078a: JUMP 0000078b: JUMPDEST 0000078c: PUSH2 0x0793 0000078f: PUSH2 0x1719 00000792: JUMP 00000793: JUMPDEST 00000794: PUSH2 0x079d 00000797: PUSH1 0x00 00000799: PUSH2 0x1844 0000079c: JUMP 0000079d: JUMPDEST 0000079e: JUMP 0000079f: JUMPDEST 000007a0: PUSH1 0x06 000007a2: PUSH1 0x20 000007a4: MSTORE 000007a5: DUP2 000007a6: PUSH1 0x00 000007a8: MSTORE 000007a9: PUSH1 0x40 000007ab: PUSH1 0x00 000007ad: KECCAK256 000007ae: PUSH1 0x20 000007b0: MSTORE 000007b1: DUP1 000007b2: PUSH1 0x00 000007b4: MSTORE 000007b5: PUSH1 0x40 000007b7: PUSH1 0x00 000007b9: KECCAK256 000007ba: PUSH1 0x00 000007bc: SWAP2 000007bd: POP 000007be: SWAP2 000007bf: POP 000007c0: POP 000007c1: SLOAD 000007c2: DUP2 000007c3: JUMP 000007c4: JUMPDEST 000007c5: PUSH2 0x07cc 000007c8: PUSH2 0x17a0 000007cb: JUMP 000007cc: JUMPDEST 000007cd: PUSH2 0x07d4 000007d0: PUSH2 0x1908 000007d3: JUMP 000007d4: JUMPDEST 000007d5: PUSH1 0x00 000007d7: DUP3 000007d8: SUB 000007d9: PUSH2 0x080e 000007dc: JUMPI 000007dd: PUSH1 0x40 000007df: MLOAD 000007e0: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 00000801: DUP2 00000802: MSTORE 00000803: PUSH1 0x04 00000805: ADD 00000806: PUSH1 0x40 00000808: MLOAD 00000809: DUP1 0000080a: SWAP2 0000080b: SUB 0000080c: SWAP1 0000080d: REVERT 0000080e: JUMPDEST 0000080f: PUSH1 0x00 00000811: PUSH1 0x03 00000813: PUSH1 0x00 00000815: CALLER 00000816: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000082b: AND 0000082c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000841: AND 00000842: DUP2 00000843: MSTORE 00000844: PUSH1 0x20 00000846: ADD 00000847: SWAP1 00000848: DUP2 00000849: MSTORE 0000084a: PUSH1 0x20 0000084c: ADD 0000084d: PUSH1 0x00 0000084f: KECCAK256 00000850: SLOAD 00000851: SWAP1 00000852: POP 00000853: DUP1 00000854: DUP4 00000855: GT 00000856: ISZERO 00000857: PUSH2 0x088c 0000085a: JUMPI 0000085b: PUSH1 0x40 0000085d: MLOAD 0000085e: PUSH32 0xf1bc94d200000000000000000000000000000000000000000000000000000000 0000087f: DUP2 00000880: MSTORE 00000881: PUSH1 0x04 00000883: ADD 00000884: PUSH1 0x40 00000886: MLOAD 00000887: DUP1 00000888: SWAP2 00000889: SUB 0000088a: SWAP1 0000088b: REVERT 0000088c: JUMPDEST 0000088d: DUP3 0000088e: DUP2 0000088f: PUSH2 0x0898 00000892: SWAP2 00000893: SWAP1 00000894: PUSH2 0x214e 00000897: JUMP 00000898: JUMPDEST 00000899: PUSH1 0x03 0000089b: PUSH1 0x00 0000089d: CALLER 0000089e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b3: AND 000008b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008c9: AND 000008ca: DUP2 000008cb: MSTORE 000008cc: PUSH1 0x20 000008ce: ADD 000008cf: SWAP1 000008d0: DUP2 000008d1: MSTORE 000008d2: PUSH1 0x20 000008d4: ADD 000008d5: PUSH1 0x00 000008d7: KECCAK256 000008d8: DUP2 000008d9: SWAP1 000008da: SSTORE 000008db: POP 000008dc: DUP3 000008dd: PUSH1 0x08 000008df: PUSH1 0x00 000008e1: DUP3 000008e2: DUP3 000008e3: SLOAD 000008e4: PUSH2 0x08ed 000008e7: SWAP2 000008e8: SWAP1 000008e9: PUSH2 0x214e 000008ec: JUMP 000008ed: JUMPDEST 000008ee: SWAP3 000008ef: POP 000008f0: POP 000008f1: DUP2 000008f2: SWAP1 000008f3: SSTORE 000008f4: POP 000008f5: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6 00000916: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000092b: AND 0000092c: PUSH4 0xa9059cbb 00000931: DUP4 00000932: DUP6 00000933: PUSH1 0x40 00000935: MLOAD 00000936: DUP4 00000937: PUSH4 0xffffffff 0000093c: AND 0000093d: PUSH1 0xe0 0000093f: SHL 00000940: DUP2 00000941: MSTORE 00000942: PUSH1 0x04 00000944: ADD 00000945: PUSH2 0x094f 00000948: SWAP3 00000949: SWAP2 0000094a: SWAP1 0000094b: PUSH2 0x2182 0000094e: JUMP 0000094f: JUMPDEST 00000950: PUSH1 0x20 00000952: PUSH1 0x40 00000954: MLOAD 00000955: DUP1 00000956: DUP4 00000957: SUB 00000958: DUP2 00000959: PUSH1 0x00 0000095b: DUP8 0000095c: GAS 0000095d: CALL 0000095e: ISZERO 0000095f: DUP1 00000960: ISZERO 00000961: PUSH2 0x096e 00000964: JUMPI 00000965: RETURNDATASIZE 00000966: PUSH1 0x00 00000968: DUP1 00000969: RETURNDATACOPY 0000096a: RETURNDATASIZE 0000096b: PUSH1 0x00 0000096d: REVERT 0000096e: JUMPDEST 0000096f: POP 00000970: POP 00000971: POP 00000972: POP 00000973: PUSH1 0x40 00000975: MLOAD 00000976: RETURNDATASIZE 00000977: PUSH1 0x1f 00000979: NOT 0000097a: PUSH1 0x1f 0000097c: DUP3 0000097d: ADD 0000097e: AND 0000097f: DUP3 00000980: ADD 00000981: DUP1 00000982: PUSH1 0x40 00000984: MSTORE 00000985: POP 00000986: DUP2 00000987: ADD 00000988: SWAP1 00000989: PUSH2 0x0992 0000098c: SWAP2 0000098d: SWAP1 0000098e: PUSH2 0x21d7 00000991: JUMP 00000992: JUMPDEST 00000993: POP 00000994: CALLER 00000995: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009aa: AND 000009ab: PUSH32 0x49b5ddea377fe275f1bc0e3ff38fd494cbe790c81c9b9f8c25f2e48effcf41aa 000009cc: DUP5 000009cd: PUSH1 0x40 000009cf: MLOAD 000009d0: PUSH2 0x09d9 000009d3: SWAP2 000009d4: SWAP1 000009d5: PUSH2 0x1f32 000009d8: JUMP 000009d9: JUMPDEST 000009da: PUSH1 0x40 000009dc: MLOAD 000009dd: DUP1 000009de: SWAP2 000009df: SUB 000009e0: SWAP1 000009e1: LOG2 000009e2: POP 000009e3: PUSH2 0x09ea 000009e6: PUSH2 0x194e 000009e9: JUMP 000009ea: JUMPDEST 000009eb: POP 000009ec: POP 000009ed: JUMP 000009ee: JUMPDEST 000009ef: PUSH1 0x00 000009f1: DUP1 000009f2: PUSH1 0x00 000009f4: SWAP1 000009f5: SLOAD 000009f6: SWAP1 000009f7: PUSH2 0x0100 000009fa: EXP 000009fb: SWAP1 000009fc: DIV 000009fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a12: AND 00000a13: SWAP1 00000a14: POP 00000a15: SWAP1 00000a16: JUMP 00000a17: JUMPDEST 00000a18: PUSH1 0x03 00000a1a: PUSH1 0x20 00000a1c: MSTORE 00000a1d: DUP1 00000a1e: PUSH1 0x00 00000a20: MSTORE 00000a21: PUSH1 0x40 00000a23: PUSH1 0x00 00000a25: KECCAK256 00000a26: PUSH1 0x00 00000a28: SWAP2 00000a29: POP 00000a2a: SWAP1 00000a2b: POP 00000a2c: SLOAD 00000a2d: DUP2 00000a2e: JUMP 00000a2f: JUMPDEST 00000a30: PUSH2 0x0a37 00000a33: PUSH2 0x1719 00000a36: JUMP 00000a37: JUMPDEST 00000a38: PUSH2 0x0a62 00000a3b: CALLER 00000a3c: DUP3 00000a3d: DUP5 00000a3e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a53: AND 00000a54: PUSH2 0x1957 00000a57: SWAP1 00000a58: SWAP3 00000a59: SWAP2 00000a5a: SWAP1 00000a5b: PUSH4 0xffffffff 00000a60: AND 00000a61: JUMP 00000a62: JUMPDEST 00000a63: POP 00000a64: POP 00000a65: JUMP 00000a66: JUMPDEST 00000a67: PUSH1 0x05 00000a69: PUSH1 0x20 00000a6b: MSTORE 00000a6c: DUP1 00000a6d: PUSH1 0x00 00000a6f: MSTORE 00000a70: PUSH1 0x40 00000a72: PUSH1 0x00 00000a74: KECCAK256 00000a75: PUSH1 0x00 00000a77: SWAP2 00000a78: POP 00000a79: SWAP1 00000a7a: POP 00000a7b: SLOAD 00000a7c: DUP2 00000a7d: JUMP 00000a7e: JUMPDEST 00000a7f: PUSH2 0x0a86 00000a82: PUSH2 0x17a0 00000a85: JUMP 00000a86: JUMPDEST 00000a87: PUSH2 0x0a8e 00000a8a: PUSH2 0x1908 00000a8d: JUMP 00000a8e: JUMPDEST 00000a8f: PUSH1 0x00 00000a91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aa6: AND 00000aa7: DUP3 00000aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000abd: AND 00000abe: SUB 00000abf: PUSH2 0x0af4 00000ac2: JUMPI 00000ac3: PUSH1 0x40 00000ac5: MLOAD 00000ac6: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000 00000ae7: DUP2 00000ae8: MSTORE 00000ae9: PUSH1 0x04 00000aeb: ADD 00000aec: PUSH1 0x40 00000aee: MLOAD 00000aef: DUP1 00000af0: SWAP2 00000af1: SUB 00000af2: SWAP1 00000af3: REVERT 00000af4: JUMPDEST 00000af5: PUSH1 0x00 00000af7: DUP2 00000af8: SUB 00000af9: PUSH2 0x0b2e 00000afc: JUMPI 00000afd: PUSH1 0x40 00000aff: MLOAD 00000b00: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 00000b21: DUP2 00000b22: MSTORE 00000b23: PUSH1 0x04 00000b25: ADD 00000b26: PUSH1 0x40 00000b28: MLOAD 00000b29: DUP1 00000b2a: SWAP2 00000b2b: SUB 00000b2c: SWAP1 00000b2d: REVERT 00000b2e: JUMPDEST 00000b2f: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6 00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b65: AND 00000b66: PUSH4 0x23b872dd 00000b6b: CALLER 00000b6c: ADDRESS 00000b6d: DUP5 00000b6e: PUSH1 0x40 00000b70: MLOAD 00000b71: DUP5 00000b72: PUSH4 0xffffffff 00000b77: AND 00000b78: PUSH1 0xe0 00000b7a: SHL 00000b7b: DUP2 00000b7c: MSTORE 00000b7d: PUSH1 0x04 00000b7f: ADD 00000b80: PUSH2 0x0b8b 00000b83: SWAP4 00000b84: SWAP3 00000b85: SWAP2 00000b86: SWAP1 00000b87: PUSH2 0x2204 00000b8a: JUMP 00000b8b: JUMPDEST 00000b8c: PUSH1 0x20 00000b8e: PUSH1 0x40 00000b90: MLOAD 00000b91: DUP1 00000b92: DUP4 00000b93: SUB 00000b94: DUP2 00000b95: PUSH1 0x00 00000b97: DUP8 00000b98: GAS 00000b99: CALL 00000b9a: ISZERO 00000b9b: DUP1 00000b9c: ISZERO 00000b9d: PUSH2 0x0baa 00000ba0: JUMPI 00000ba1: RETURNDATASIZE 00000ba2: PUSH1 0x00 00000ba4: DUP1 00000ba5: RETURNDATACOPY 00000ba6: RETURNDATASIZE 00000ba7: PUSH1 0x00 00000ba9: REVERT 00000baa: JUMPDEST 00000bab: POP 00000bac: POP 00000bad: POP 00000bae: POP 00000baf: PUSH1 0x40 00000bb1: MLOAD 00000bb2: RETURNDATASIZE 00000bb3: PUSH1 0x1f 00000bb5: NOT 00000bb6: PUSH1 0x1f 00000bb8: DUP3 00000bb9: ADD 00000bba: AND 00000bbb: DUP3 00000bbc: ADD 00000bbd: DUP1 00000bbe: PUSH1 0x40 00000bc0: MSTORE 00000bc1: POP 00000bc2: DUP2 00000bc3: ADD 00000bc4: SWAP1 00000bc5: PUSH2 0x0bce 00000bc8: SWAP2 00000bc9: SWAP1 00000bca: PUSH2 0x21d7 00000bcd: JUMP 00000bce: JUMPDEST 00000bcf: POP 00000bd0: DUP1 00000bd1: PUSH1 0x03 00000bd3: PUSH1 0x00 00000bd5: DUP5 00000bd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000beb: AND 00000bec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c01: AND 00000c02: DUP2 00000c03: MSTORE 00000c04: PUSH1 0x20 00000c06: ADD 00000c07: SWAP1 00000c08: DUP2 00000c09: MSTORE 00000c0a: PUSH1 0x20 00000c0c: ADD 00000c0d: PUSH1 0x00 00000c0f: KECCAK256 00000c10: PUSH1 0x00 00000c12: DUP3 00000c13: DUP3 00000c14: SLOAD 00000c15: PUSH2 0x0c1e 00000c18: SWAP2 00000c19: SWAP1 00000c1a: PUSH2 0x211a 00000c1d: JUMP 00000c1e: JUMPDEST 00000c1f: SWAP3 00000c20: POP 00000c21: POP 00000c22: DUP2 00000c23: SWAP1 00000c24: SSTORE 00000c25: POP 00000c26: DUP1 00000c27: PUSH1 0x08 00000c29: PUSH1 0x00 00000c2b: DUP3 00000c2c: DUP3 00000c2d: SLOAD 00000c2e: PUSH2 0x0c37 00000c31: SWAP2 00000c32: SWAP1 00000c33: PUSH2 0x211a 00000c36: JUMP 00000c37: JUMPDEST 00000c38: SWAP3 00000c39: POP 00000c3a: POP 00000c3b: DUP2 00000c3c: SWAP1 00000c3d: SSTORE 00000c3e: POP 00000c3f: DUP2 00000c40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c55: AND 00000c56: PUSH32 0xe4f97de32fa70a6e6d67ec3c89be72f201522552fefc2a263af6063c78b2fafa 00000c77: DUP3 00000c78: PUSH1 0x40 00000c7a: MLOAD 00000c7b: PUSH2 0x0c84 00000c7e: SWAP2 00000c7f: SWAP1 00000c80: PUSH2 0x1f32 00000c83: JUMP 00000c84: JUMPDEST 00000c85: PUSH1 0x40 00000c87: MLOAD 00000c88: DUP1 00000c89: SWAP2 00000c8a: SUB 00000c8b: SWAP1 00000c8c: LOG2 00000c8d: PUSH2 0x0c94 00000c90: PUSH2 0x194e 00000c93: JUMP 00000c94: JUMPDEST 00000c95: POP 00000c96: POP 00000c97: JUMP 00000c98: JUMPDEST 00000c99: PUSH2 0x0ca0 00000c9c: PUSH2 0x19d6 00000c9f: JUMP 00000ca0: JUMPDEST 00000ca1: PUSH2 0x0ca8 00000ca4: PUSH2 0x1908 00000ca7: JUMP 00000ca8: JUMPDEST 00000ca9: PUSH1 0x00 00000cab: PUSH1 0x03 00000cad: PUSH1 0x00 00000caf: CALLER 00000cb0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cc5: AND 00000cc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cdb: AND 00000cdc: DUP2 00000cdd: MSTORE 00000cde: PUSH1 0x20 00000ce0: ADD 00000ce1: SWAP1 00000ce2: DUP2 00000ce3: MSTORE 00000ce4: PUSH1 0x20 00000ce6: ADD 00000ce7: PUSH1 0x00 00000ce9: KECCAK256 00000cea: SLOAD 00000ceb: SWAP1 00000cec: POP 00000ced: PUSH1 0x00 00000cef: DUP2 00000cf0: SUB 00000cf1: PUSH2 0x0d26 00000cf4: JUMPI 00000cf5: PUSH1 0x40 00000cf7: MLOAD 00000cf8: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 00000d19: DUP2 00000d1a: MSTORE 00000d1b: PUSH1 0x04 00000d1d: ADD 00000d1e: PUSH1 0x40 00000d20: MLOAD 00000d21: DUP1 00000d22: SWAP2 00000d23: SUB 00000d24: SWAP1 00000d25: REVERT 00000d26: JUMPDEST 00000d27: PUSH1 0x00 00000d29: PUSH1 0x0a 00000d2b: PUSH1 0x40 00000d2d: MLOAD 00000d2e: DUP1 00000d2f: PUSH1 0x60 00000d31: ADD 00000d32: PUSH1 0x40 00000d34: MSTORE 00000d35: SWAP1 00000d36: DUP2 00000d37: PUSH1 0x00 00000d39: DUP3 00000d3a: ADD 00000d3b: PUSH1 0x00 00000d3d: SWAP1 00000d3e: SLOAD 00000d3f: SWAP1 00000d40: PUSH2 0x0100 00000d43: EXP 00000d44: SWAP1 00000d45: DIV 00000d46: PUSH10 0xffffffffffffffffffff 00000d51: AND 00000d52: PUSH10 0xffffffffffffffffffff 00000d5d: AND 00000d5e: PUSH10 0xffffffffffffffffffff 00000d69: AND 00000d6a: DUP2 00000d6b: MSTORE 00000d6c: PUSH1 0x20 00000d6e: ADD 00000d6f: PUSH1 0x00 00000d71: DUP3 00000d72: ADD 00000d73: PUSH1 0x0a 00000d75: SWAP1 00000d76: SLOAD 00000d77: SWAP1 00000d78: PUSH2 0x0100 00000d7b: EXP 00000d7c: SWAP1 00000d7d: DIV 00000d7e: PUSH10 0xffffffffffffffffffff 00000d89: AND 00000d8a: PUSH10 0xffffffffffffffffffff 00000d95: AND 00000d96: PUSH10 0xffffffffffffffffffff 00000da1: AND 00000da2: DUP2 00000da3: MSTORE 00000da4: PUSH1 0x20 00000da6: ADD 00000da7: PUSH1 0x00 00000da9: DUP3 00000daa: ADD 00000dab: PUSH1 0x14 00000dad: SWAP1 00000dae: SLOAD 00000daf: SWAP1 00000db0: PUSH2 0x0100 00000db3: EXP 00000db4: SWAP1 00000db5: DIV 00000db6: PUSH10 0xffffffffffffffffffff 00000dc1: AND 00000dc2: PUSH10 0xffffffffffffffffffff 00000dcd: AND 00000dce: PUSH10 0xffffffffffffffffffff 00000dd9: AND 00000dda: DUP2 00000ddb: MSTORE 00000ddc: POP 00000ddd: POP 00000dde: SWAP1 00000ddf: POP 00000de0: PUSH1 0x00 00000de2: DUP2 00000de3: PUSH1 0x00 00000de5: ADD 00000de6: MLOAD 00000de7: PUSH10 0xffffffffffffffffffff 00000df2: AND 00000df3: EQ 00000df4: DUP1 00000df5: PUSH2 0x0e1c 00000df8: JUMPI 00000df9: POP 00000dfa: NUMBER 00000dfb: DUP2 00000dfc: PUSH1 0x20 00000dfe: ADD 00000dff: MLOAD 00000e00: DUP3 00000e01: PUSH1 0x00 00000e03: ADD 00000e04: MLOAD 00000e05: PUSH2 0x0e0e 00000e08: SWAP2 00000e09: SWAP1 00000e0a: PUSH2 0x223b 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: PUSH10 0xffffffffffffffffffff 00000e1a: AND 00000e1b: GT 00000e1c: JUMPDEST 00000e1d: ISZERO 00000e1e: PUSH2 0x0e53 00000e21: JUMPI 00000e22: PUSH1 0x40 00000e24: MLOAD 00000e25: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000 00000e46: DUP2 00000e47: MSTORE 00000e48: PUSH1 0x04 00000e4a: ADD 00000e4b: PUSH1 0x40 00000e4d: MLOAD 00000e4e: DUP1 00000e4f: SWAP2 00000e50: SUB 00000e51: SWAP1 00000e52: REVERT 00000e53: JUMPDEST 00000e54: PUSH1 0x00 00000e56: DUP2 00000e57: PUSH1 0x00 00000e59: ADD 00000e5a: MLOAD 00000e5b: PUSH10 0xffffffffffffffffffff 00000e66: AND 00000e67: NUMBER 00000e68: PUSH2 0x0e71 00000e6b: SWAP2 00000e6c: SWAP1 00000e6d: PUSH2 0x214e 00000e70: JUMP 00000e71: JUMPDEST 00000e72: SWAP1 00000e73: POP 00000e74: PUSH1 0x00 00000e76: DUP3 00000e77: PUSH1 0x40 00000e79: ADD 00000e7a: MLOAD 00000e7b: PUSH10 0xffffffffffffffffffff 00000e86: AND 00000e87: DUP3 00000e88: GT 00000e89: PUSH2 0x0eb8 00000e8c: JUMPI 00000e8d: DUP3 00000e8e: PUSH1 0x40 00000e90: ADD 00000e91: MLOAD 00000e92: PUSH10 0xffffffffffffffffffff 00000e9d: AND 00000e9e: DUP3 00000e9f: DUP6 00000ea0: PUSH2 0x0ea9 00000ea3: SWAP2 00000ea4: SWAP1 00000ea5: PUSH2 0x2279 00000ea8: JUMP 00000ea9: JUMPDEST 00000eaa: PUSH2 0x0eb3 00000ead: SWAP2 00000eae: SWAP1 00000eaf: PUSH2 0x22ea 00000eb2: JUMP 00000eb3: JUMPDEST 00000eb4: PUSH2 0x0eba 00000eb7: JUMP 00000eb8: JUMPDEST 00000eb9: DUP4 00000eba: JUMPDEST 00000ebb: SWAP1 00000ebc: POP 00000ebd: PUSH1 0x00 00000ebf: PUSH1 0x07 00000ec1: PUSH1 0x00 00000ec3: CALLER 00000ec4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ed9: AND 00000eda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000eef: AND 00000ef0: DUP2 00000ef1: MSTORE 00000ef2: PUSH1 0x20 00000ef4: ADD 00000ef5: SWAP1 00000ef6: DUP2 00000ef7: MSTORE 00000ef8: PUSH1 0x20 00000efa: ADD 00000efb: PUSH1 0x00 00000efd: KECCAK256 00000efe: SLOAD 00000eff: SWAP1 00000f00: POP 00000f01: DUP1 00000f02: DUP3 00000f03: EQ 00000f04: PUSH2 0x1053 00000f07: JUMPI 00000f08: DUP2 00000f09: PUSH1 0x07 00000f0b: PUSH1 0x00 00000f0d: CALLER 00000f0e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f23: AND 00000f24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f39: AND 00000f3a: DUP2 00000f3b: MSTORE 00000f3c: PUSH1 0x20 00000f3e: ADD 00000f3f: SWAP1 00000f40: DUP2 00000f41: MSTORE 00000f42: PUSH1 0x20 00000f44: ADD 00000f45: PUSH1 0x00 00000f47: KECCAK256 00000f48: DUP2 00000f49: SWAP1 00000f4a: SSTORE 00000f4b: POP 00000f4c: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6 00000f6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f82: AND 00000f83: PUSH4 0xa9059cbb 00000f88: DUP8 00000f89: DUP4 00000f8a: DUP6 00000f8b: PUSH2 0x0f94 00000f8e: SWAP2 00000f8f: SWAP1 00000f90: PUSH2 0x214e 00000f93: JUMP 00000f94: JUMPDEST 00000f95: PUSH1 0x40 00000f97: MLOAD 00000f98: DUP4 00000f99: PUSH4 0xffffffff 00000f9e: AND 00000f9f: PUSH1 0xe0 00000fa1: SHL 00000fa2: DUP2 00000fa3: MSTORE 00000fa4: PUSH1 0x04 00000fa6: ADD 00000fa7: PUSH2 0x0fb1 00000faa: SWAP3 00000fab: SWAP2 00000fac: SWAP1 00000fad: PUSH2 0x2182 00000fb0: JUMP 00000fb1: JUMPDEST 00000fb2: PUSH1 0x20 00000fb4: PUSH1 0x40 00000fb6: MLOAD 00000fb7: DUP1 00000fb8: DUP4 00000fb9: SUB 00000fba: DUP2 00000fbb: PUSH1 0x00 00000fbd: DUP8 00000fbe: GAS 00000fbf: CALL 00000fc0: ISZERO 00000fc1: DUP1 00000fc2: ISZERO 00000fc3: PUSH2 0x0fd0 00000fc6: JUMPI 00000fc7: RETURNDATASIZE 00000fc8: PUSH1 0x00 00000fca: DUP1 00000fcb: RETURNDATACOPY 00000fcc: RETURNDATASIZE 00000fcd: PUSH1 0x00 00000fcf: REVERT 00000fd0: JUMPDEST 00000fd1: POP 00000fd2: POP 00000fd3: POP 00000fd4: POP 00000fd5: PUSH1 0x40 00000fd7: MLOAD 00000fd8: RETURNDATASIZE 00000fd9: PUSH1 0x1f 00000fdb: NOT 00000fdc: PUSH1 0x1f 00000fde: DUP3 00000fdf: ADD 00000fe0: AND 00000fe1: DUP3 00000fe2: ADD 00000fe3: DUP1 00000fe4: PUSH1 0x40 00000fe6: MSTORE 00000fe7: POP 00000fe8: DUP2 00000fe9: ADD 00000fea: SWAP1 00000feb: PUSH2 0x0ff4 00000fee: SWAP2 00000fef: SWAP1 00000ff0: PUSH2 0x21d7 00000ff3: JUMP 00000ff4: JUMPDEST 00000ff5: POP 00000ff6: CALLER 00000ff7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000100c: AND 0000100d: PUSH32 0xf13cda56e42f24843815c00a7a8af0985c711bc74018c81a3e9d1824b142a58d 0000102e: DUP3 0000102f: DUP5 00001030: PUSH2 0x1039 00001033: SWAP2 00001034: SWAP1 00001035: PUSH2 0x214e 00001038: JUMP 00001039: JUMPDEST 0000103a: PUSH1 0x40 0000103c: MLOAD 0000103d: PUSH2 0x1046 00001040: SWAP2 00001041: SWAP1 00001042: PUSH2 0x1f32 00001045: JUMP 00001046: JUMPDEST 00001047: PUSH1 0x40 00001049: MLOAD 0000104a: DUP1 0000104b: SWAP2 0000104c: SUB 0000104d: SWAP1 0000104e: LOG2 0000104f: PUSH2 0x1085 00001052: JUMP 00001053: JUMPDEST 00001054: PUSH1 0x40 00001056: MLOAD 00001057: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000 00001078: DUP2 00001079: MSTORE 0000107a: PUSH1 0x04 0000107c: ADD 0000107d: PUSH1 0x40 0000107f: MLOAD 00001080: DUP1 00001081: SWAP2 00001082: SUB 00001083: SWAP1 00001084: REVERT 00001085: JUMPDEST 00001086: POP 00001087: POP 00001088: POP 00001089: POP 0000108a: POP 0000108b: PUSH2 0x1092 0000108e: PUSH2 0x194e 00001091: JUMP 00001092: JUMPDEST 00001093: POP 00001094: JUMP 00001095: JUMPDEST 00001096: PUSH1 0x09 00001098: SLOAD 00001099: DUP2 0000109a: JUMP 0000109b: JUMPDEST 0000109c: PUSH32 0x000000000000000000000000ce722f60f35c37ab295adc4e6ba45bcc7ca89dd6 000010bd: DUP2 000010be: JUMP 000010bf: JUMPDEST 000010c0: PUSH2 0x10c7 000010c3: PUSH2 0x19d6 000010c6: JUMP 000010c7: JUMPDEST 000010c8: PUSH2 0x10cf 000010cb: PUSH2 0x1908 000010ce: JUMP 000010cf: JUMPDEST 000010d0: PUSH1 0x00 000010d2: PUSH1 0x03 000010d4: PUSH1 0x00 000010d6: CALLER 000010d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010ec: AND 000010ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001102: AND 00001103: DUP2 00001104: MSTORE 00001105: PUSH1 0x20 00001107: ADD 00001108: SWAP1 00001109: DUP2 0000110a: MSTORE 0000110b: PUSH1 0x20 0000110d: ADD 0000110e: PUSH1 0x00 00001110: KECCAK256 00001111: SLOAD 00001112: SWAP1 00001113: POP 00001114: PUSH1 0x00 00001116: DUP2 00001117: SUB 00001118: PUSH2 0x114d 0000111b: JUMPI 0000111c: PUSH1 0x40 0000111e: MLOAD 0000111f: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 00001140: DUP2 00001141: MSTORE 00001142: PUSH1 0x04 00001144: ADD 00001145: PUSH1 0x40 00001147: MLOAD 00001148: DUP1 00001149: SWAP2 0000114a: SUB 0000114b: SWAP1 0000114c: REVERT 0000114d: JUMPDEST 0000114e: PUSH1 0x00 00001150: DUP1 00001151: PUSH1 0x09 00001153: SLOAD 00001154: SWAP1 00001155: POP 00001156: PUSH1 0x00 00001158: DUP2 00001159: SUB 0000115a: PUSH2 0x118f 0000115d: JUMPI 0000115e: PUSH1 0x40 00001160: MLOAD 00001161: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000 00001182: DUP2 00001183: MSTORE 00001184: PUSH1 0x04 00001186: ADD 00001187: PUSH1 0x40 00001189: MLOAD 0000118a: DUP1 0000118b: SWAP2 0000118c: SUB 0000118d: SWAP1 0000118e: REVERT 0000118f: JUMPDEST 00001190: PUSH1 0x00 00001192: PUSH1 0x08 00001194: SLOAD 00001195: SWAP1 00001196: POP 00001197: PUSH1 0x00 00001199: JUMPDEST 0000119a: DUP3 0000119b: DUP2 0000119c: LT 0000119d: ISZERO 0000119e: PUSH2 0x1351 000011a1: JUMPI 000011a2: PUSH1 0x00 000011a4: PUSH1 0x06 000011a6: PUSH1 0x00 000011a8: CALLER 000011a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011be: AND 000011bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011d4: AND 000011d5: DUP2 000011d6: MSTORE 000011d7: PUSH1 0x20 000011d9: ADD 000011da: SWAP1 000011db: DUP2 000011dc: MSTORE 000011dd: PUSH1 0x20 000011df: ADD 000011e0: PUSH1 0x00 000011e2: KECCAK256 000011e3: PUSH1 0x00 000011e5: DUP4 000011e6: DUP2 000011e7: MSTORE 000011e8: PUSH1 0x20 000011ea: ADD 000011eb: SWAP1 000011ec: DUP2 000011ed: MSTORE 000011ee: PUSH1 0x20 000011f0: ADD 000011f1: PUSH1 0x00 000011f3: KECCAK256 000011f4: SLOAD 000011f5: SWAP1 000011f6: POP 000011f7: PUSH1 0x00 000011f9: DUP4 000011fa: PUSH1 0x05 000011fc: PUSH1 0x00 000011fe: DUP6 000011ff: DUP2 00001200: MSTORE 00001201: PUSH1 0x20 00001203: ADD 00001204: SWAP1 00001205: DUP2 00001206: MSTORE 00001207: PUSH1 0x20 00001209: ADD 0000120a: PUSH1 0x00 0000120c: KECCAK256 0000120d: SLOAD 0000120e: DUP9 0000120f: PUSH2 0x1218 00001212: SWAP2 00001213: SWAP1 00001214: PUSH2 0x2279 00001217: JUMP 00001218: JUMPDEST 00001219: PUSH2 0x1222 0000121c: SWAP2 0000121d: SWAP1 0000121e: PUSH2 0x22ea 00001221: JUMP 00001222: JUMPDEST 00001223: SWAP1 00001224: POP 00001225: PUSH1 0x00 00001227: DUP3 00001228: DUP3 00001229: PUSH2 0x1232 0000122c: SWAP2 0000122d: SWAP1 0000122e: PUSH2 0x214e 00001231: JUMP 00001232: JUMPDEST 00001233: SWAP1 00001234: POP 00001235: PUSH1 0x00 00001237: DUP2 00001238: EQ 00001239: PUSH2 0x1343 0000123c: JUMPI 0000123d: PUSH1 0x01 0000123f: SWAP7 00001240: POP 00001241: DUP2 00001242: PUSH1 0x06 00001244: PUSH1 0x00 00001246: CALLER 00001247: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000125c: AND 0000125d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001272: AND 00001273: DUP2 00001274: MSTORE 00001275: PUSH1 0x20 00001277: ADD 00001278: SWAP1 00001279: DUP2 0000127a: MSTORE 0000127b: PUSH1 0x20 0000127d: ADD 0000127e: PUSH1 0x00 00001280: KECCAK256 00001281: PUSH1 0x00 00001283: DUP7 00001284: DUP2 00001285: MSTORE 00001286: PUSH1 0x20 00001288: ADD 00001289: SWAP1 0000128a: DUP2 0000128b: MSTORE 0000128c: PUSH1 0x20 0000128e: ADD 0000128f: PUSH1 0x00 00001291: KECCAK256 00001292: DUP2 00001293: SWAP1 00001294: SSTORE 00001295: POP 00001296: PUSH2 0x12f3 00001299: DUP10 0000129a: DUP3 0000129b: PUSH1 0x04 0000129d: PUSH1 0x00 0000129f: DUP9 000012a0: DUP2 000012a1: MSTORE 000012a2: PUSH1 0x20 000012a4: ADD 000012a5: SWAP1 000012a6: DUP2 000012a7: MSTORE 000012a8: PUSH1 0x20 000012aa: ADD 000012ab: PUSH1 0x00 000012ad: KECCAK256 000012ae: PUSH1 0x00 000012b0: SWAP1 000012b1: SLOAD 000012b2: SWAP1 000012b3: PUSH2 0x0100 000012b6: EXP 000012b7: SWAP1 000012b8: DIV 000012b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012ce: AND 000012cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012e4: AND 000012e5: PUSH2 0x1957 000012e8: SWAP1 000012e9: SWAP3 000012ea: SWAP2 000012eb: SWAP1 000012ec: PUSH4 0xffffffff 000012f1: AND 000012f2: JUMP 000012f3: JUMPDEST 000012f4: DUP4 000012f5: CALLER 000012f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000130b: AND 0000130c: PUSH32 0x9923b4306c6c030f2bdfbf156517d5983b87e15b96176da122cd4f2effa4ba7b 0000132d: DUP4 0000132e: PUSH1 0x40 00001330: MLOAD 00001331: PUSH2 0x133a 00001334: SWAP2 00001335: SWAP1 00001336: PUSH2 0x1f32 00001339: JUMP 0000133a: JUMPDEST 0000133b: PUSH1 0x40 0000133d: MLOAD 0000133e: DUP1 0000133f: SWAP2 00001340: SUB 00001341: SWAP1 00001342: LOG3 00001343: JUMPDEST 00001344: POP 00001345: POP 00001346: POP 00001347: DUP1 00001348: PUSH1 0x01 0000134a: ADD 0000134b: SWAP1 0000134c: POP 0000134d: PUSH2 0x1199 00001350: JUMP 00001351: JUMPDEST 00001352: POP 00001353: DUP3 00001354: PUSH2 0x1389 00001357: JUMPI 00001358: PUSH1 0x40 0000135a: MLOAD 0000135b: PUSH32 0x969bf72800000000000000000000000000000000000000000000000000000000 0000137c: DUP2 0000137d: MSTORE 0000137e: PUSH1 0x04 00001380: ADD 00001381: PUSH1 0x40 00001383: MLOAD 00001384: DUP1 00001385: SWAP2 00001386: SUB 00001387: SWAP1 00001388: REVERT 00001389: JUMPDEST 0000138a: POP 0000138b: POP 0000138c: POP 0000138d: POP 0000138e: PUSH2 0x1395 00001391: PUSH2 0x194e 00001394: JUMP 00001395: JUMPDEST 00001396: POP 00001397: JUMP 00001398: JUMPDEST 00001399: PUSH2 0x13a0 0000139c: PUSH2 0x1719 0000139f: JUMP 000013a0: JUMPDEST 000013a1: PUSH1 0x00 000013a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013b8: AND 000013b9: DUP2 000013ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013cf: AND 000013d0: SUB 000013d1: PUSH2 0x1412 000013d4: JUMPI 000013d5: PUSH1 0x00 000013d7: PUSH1 0x40 000013d9: MLOAD 000013da: PUSH32 0x1e4fbdf700000000000000000000000000000000000000000000000000000000 000013fb: DUP2 000013fc: MSTORE 000013fd: PUSH1 0x04 000013ff: ADD 00001400: PUSH2 0x1409 00001403: SWAP2 00001404: SWAP1 00001405: PUSH2 0x2012 00001408: JUMP 00001409: JUMPDEST 0000140a: PUSH1 0x40 0000140c: MLOAD 0000140d: DUP1 0000140e: SWAP2 0000140f: SUB 00001410: SWAP1 00001411: REVERT 00001412: JUMPDEST 00001413: PUSH2 0x141b 00001416: DUP2 00001417: PUSH2 0x1844 0000141a: JUMP 0000141b: JUMPDEST 0000141c: POP 0000141d: JUMP 0000141e: JUMPDEST 0000141f: PUSH2 0x1426 00001422: PUSH2 0x1719 00001425: JUMP 00001426: JUMPDEST 00001427: PUSH2 0x142e 0000142a: PUSH2 0x19d6 0000142d: JUMP 0000142e: JUMPDEST 0000142f: PUSH1 0x00 00001431: DUP2 00001432: SUB 00001433: PUSH2 0x1468 00001436: JUMPI 00001437: PUSH1 0x40 00001439: MLOAD 0000143a: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000 0000145b: DUP2 0000145c: MSTORE 0000145d: PUSH1 0x04 0000145f: ADD 00001460: PUSH1 0x40 00001462: MLOAD 00001463: DUP1 00001464: SWAP2 00001465: SUB 00001466: SWAP1 00001467: REVERT 00001468: JUMPDEST 00001469: PUSH1 0x00 0000146b: PUSH1 0x04 0000146d: PUSH1 0x00 0000146f: DUP5 00001470: DUP2 00001471: MSTORE 00001472: PUSH1 0x20 00001474: ADD 00001475: SWAP1 00001476: DUP2 00001477: MSTORE 00001478: PUSH1 0x20 0000147a: ADD 0000147b: PUSH1 0x00 0000147d: KECCAK256 0000147e: PUSH1 0x00 00001480: SWAP1 00001481: SLOAD 00001482: SWAP1 00001483: PUSH2 0x0100 00001486: EXP 00001487: SWAP1 00001488: DIV 00001489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000149e: AND 0000149f: SWAP1 000014a0: POP 000014a1: PUSH1 0x00 000014a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014b8: AND 000014b9: DUP2 000014ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014cf: AND 000014d0: SUB 000014d1: PUSH2 0x1511 000014d4: JUMPI 000014d5: DUP3 000014d6: PUSH1 0x40 000014d8: MLOAD 000014d9: PUSH32 0x08545ce200000000000000000000000000000000000000000000000000000000 000014fa: DUP2 000014fb: MSTORE 000014fc: PUSH1 0x04 000014fe: ADD 000014ff: PUSH2 0x1508 00001502: SWAP2 00001503: SWAP1 00001504: PUSH2 0x1f32 00001507: JUMP 00001508: JUMPDEST 00001509: PUSH1 0x40 0000150b: MLOAD 0000150c: DUP1 0000150d: SWAP2 0000150e: SUB 0000150f: SWAP1 00001510: REVERT 00001511: JUMPDEST 00001512: PUSH1 0x00 00001514: PUSH1 0x0a 00001516: PUSH1 0x40 00001518: MLOAD 00001519: DUP1 0000151a: PUSH1 0x60 0000151c: ADD 0000151d: PUSH1 0x40 0000151f: MSTORE 00001520: SWAP1 00001521: DUP2 00001522: PUSH1 0x00 00001524: DUP3 00001525: ADD 00001526: PUSH1 0x00 00001528: SWAP1 00001529: SLOAD 0000152a: SWAP1 0000152b: PUSH2 0x0100 0000152e: EXP 0000152f: SWAP1 00001530: DIV 00001531: PUSH10 0xffffffffffffffffffff 0000153c: AND 0000153d: PUSH10 0xffffffffffffffffffff 00001548: AND 00001549: PUSH10 0xffffffffffffffffffff 00001554: AND 00001555: DUP2 00001556: MSTORE 00001557: PUSH1 0x20 00001559: ADD 0000155a: PUSH1 0x00 0000155c: DUP3 0000155d: ADD 0000155e: PUSH1 0x0a 00001560: SWAP1 00001561: SLOAD 00001562: SWAP1 00001563: PUSH2 0x0100 00001566: EXP 00001567: SWAP1 00001568: DIV 00001569: PUSH10 0xffffffffffffffffffff 00001574: AND 00001575: PUSH10 0xffffffffffffffffffff 00001580: AND 00001581: PUSH10 0xffffffffffffffffffff 0000158c: AND 0000158d: DUP2 0000158e: MSTORE 0000158f: PUSH1 0x20 00001591: ADD 00001592: PUSH1 0x00 00001594: DUP3 00001595: ADD 00001596: PUSH1 0x14 00001598: SWAP1 00001599: SLOAD 0000159a: SWAP1 0000159b: PUSH2 0x0100 0000159e: EXP 0000159f: SWAP1 000015a0: DIV 000015a1: PUSH10 0xffffffffffffffffffff 000015ac: AND 000015ad: PUSH10 0xffffffffffffffffffff 000015b8: AND 000015b9: PUSH10 0xffffffffffffffffffff 000015c4: AND 000015c5: DUP2 000015c6: MSTORE 000015c7: POP 000015c8: POP 000015c9: SWAP1 000015ca: POP 000015cb: PUSH1 0x00 000015cd: DUP2 000015ce: PUSH1 0x00 000015d0: ADD 000015d1: MLOAD 000015d2: PUSH10 0xffffffffffffffffffff 000015dd: AND 000015de: SUB 000015df: PUSH2 0x1684 000015e2: JUMPI 000015e3: NUMBER 000015e4: PUSH1 0x0a 000015e6: PUSH1 0x00 000015e8: ADD 000015e9: PUSH1 0x00 000015eb: PUSH2 0x0100 000015ee: EXP 000015ef: DUP2 000015f0: SLOAD 000015f1: DUP2 000015f2: PUSH10 0xffffffffffffffffffff 000015fd: MUL 000015fe: NOT 000015ff: AND 00001600: SWAP1 00001601: DUP4 00001602: PUSH10 0xffffffffffffffffffff 0000160d: AND 0000160e: MUL 0000160f: OR 00001610: SWAP1 00001611: SSTORE 00001612: POP 00001613: PUSH32 0x65ea327738ef00d189846de71da130b6b863a715475fef1007cfcdebe901c9c3 00001634: NUMBER 00001635: NUMBER 00001636: DUP4 00001637: PUSH1 0x20 00001639: ADD 0000163a: MLOAD 0000163b: PUSH10 0xffffffffffffffffffff 00001646: AND 00001647: PUSH2 0x1650 0000164a: SWAP2 0000164b: SWAP1 0000164c: PUSH2 0x211a 0000164f: JUMP 00001650: JUMPDEST 00001651: NUMBER 00001652: DUP5 00001653: PUSH1 0x40 00001655: ADD 00001656: MLOAD 00001657: PUSH10 0xffffffffffffffffffff 00001662: AND 00001663: PUSH2 0x166c 00001666: SWAP2 00001667: SWAP1 00001668: PUSH2 0x211a 0000166b: JUMP 0000166c: JUMPDEST 0000166d: PUSH1 0x40 0000166f: MLOAD 00001670: PUSH2 0x167b 00001673: SWAP4 00001674: SWAP3 00001675: SWAP2 00001676: SWAP1 00001677: PUSH2 0x231b 0000167a: JUMP 0000167b: JUMPDEST 0000167c: PUSH1 0x40 0000167e: MLOAD 0000167f: DUP1 00001680: SWAP2 00001681: SUB 00001682: SWAP1 00001683: LOG1 00001684: JUMPDEST 00001685: PUSH2 0x16b1 00001688: CALLER 00001689: ADDRESS 0000168a: DUP6 0000168b: DUP6 0000168c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016a1: AND 000016a2: PUSH2 0x1a16 000016a5: SWAP1 000016a6: SWAP4 000016a7: SWAP3 000016a8: SWAP2 000016a9: SWAP1 000016aa: PUSH4 0xffffffff 000016af: AND 000016b0: JUMP 000016b1: JUMPDEST 000016b2: DUP3 000016b3: PUSH1 0x05 000016b5: PUSH1 0x00 000016b7: DUP7 000016b8: DUP2 000016b9: MSTORE 000016ba: PUSH1 0x20 000016bc: ADD 000016bd: SWAP1 000016be: DUP2 000016bf: MSTORE 000016c0: PUSH1 0x20 000016c2: ADD 000016c3: PUSH1 0x00 000016c5: KECCAK256 000016c6: PUSH1 0x00 000016c8: DUP3 000016c9: DUP3 000016ca: SLOAD 000016cb: PUSH2 0x16d4 000016ce: SWAP2 000016cf: SWAP1 000016d0: PUSH2 0x211a 000016d3: JUMP 000016d4: JUMPDEST 000016d5: SWAP3 000016d6: POP 000016d7: POP 000016d8: DUP2 000016d9: SWAP1 000016da: SSTORE 000016db: POP 000016dc: DUP4 000016dd: PUSH32 0x65202b1df9208fceaa02df7da91302293818e5cca094751d2f5fa088f414efae 000016fe: DUP5 000016ff: PUSH1 0x40 00001701: MLOAD 00001702: PUSH2 0x170b 00001705: SWAP2 00001706: SWAP1 00001707: PUSH2 0x1f32 0000170a: JUMP 0000170b: JUMPDEST 0000170c: PUSH1 0x40 0000170e: MLOAD 0000170f: DUP1 00001710: SWAP2 00001711: SUB 00001712: SWAP1 00001713: LOG2 00001714: POP 00001715: POP 00001716: POP 00001717: POP 00001718: JUMP 00001719: JUMPDEST 0000171a: PUSH2 0x1721 0000171d: PUSH2 0x1a98 00001720: JUMP 00001721: JUMPDEST 00001722: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001737: AND 00001738: PUSH2 0x173f 0000173b: PUSH2 0x09ee 0000173e: JUMP 0000173f: JUMPDEST 00001740: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001755: AND 00001756: EQ 00001757: PUSH2 0x179e 0000175a: JUMPI 0000175b: PUSH2 0x1762 0000175e: PUSH2 0x1a98 00001761: JUMP 00001762: JUMPDEST 00001763: PUSH1 0x40 00001765: MLOAD 00001766: PUSH32 0x118cdaa700000000000000000000000000000000000000000000000000000000 00001787: DUP2 00001788: MSTORE 00001789: PUSH1 0x04 0000178b: ADD 0000178c: PUSH2 0x1795 0000178f: SWAP2 00001790: SWAP1 00001791: PUSH2 0x2012 00001794: JUMP 00001795: JUMPDEST 00001796: PUSH1 0x40 00001798: MLOAD 00001799: DUP1 0000179a: SWAP2 0000179b: SUB 0000179c: SWAP1 0000179d: REVERT 0000179e: JUMPDEST 0000179f: JUMP 000017a0: JUMPDEST 000017a1: PUSH2 0x17a8 000017a4: PUSH2 0x0658 000017a7: JUMP 000017a8: JUMPDEST 000017a9: ISZERO 000017aa: PUSH2 0x17df 000017ad: JUMPI 000017ae: PUSH1 0x40 000017b0: MLOAD 000017b1: PUSH32 0xd93c066500000000000000000000000000000000000000000000000000000000 000017d2: DUP2 000017d3: MSTORE 000017d4: PUSH1 0x04 000017d6: ADD 000017d7: PUSH1 0x40 000017d9: MLOAD 000017da: DUP1 000017db: SWAP2 000017dc: SUB 000017dd: SWAP1 000017de: REVERT 000017df: JUMPDEST 000017e0: JUMP 000017e1: JUMPDEST 000017e2: PUSH2 0x17e9 000017e5: PUSH2 0x17a0 000017e8: JUMP 000017e9: JUMPDEST 000017ea: PUSH1 0x01 000017ec: PUSH1 0x02 000017ee: PUSH1 0x00 000017f0: PUSH2 0x0100 000017f3: EXP 000017f4: DUP2 000017f5: SLOAD 000017f6: DUP2 000017f7: PUSH1 0xff 000017f9: MUL 000017fa: NOT 000017fb: AND 000017fc: SWAP1 000017fd: DUP4 000017fe: ISZERO 000017ff: ISZERO 00001800: MUL 00001801: OR 00001802: SWAP1 00001803: SSTORE 00001804: POP 00001805: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 00001826: PUSH2 0x182d 00001829: PUSH2 0x1a98 0000182c: JUMP 0000182d: JUMPDEST 0000182e: PUSH1 0x40 00001830: MLOAD 00001831: PUSH2 0x183a 00001834: SWAP2 00001835: SWAP1 00001836: PUSH2 0x2012 00001839: JUMP 0000183a: JUMPDEST 0000183b: PUSH1 0x40 0000183d: MLOAD 0000183e: DUP1 0000183f: SWAP2 00001840: SUB 00001841: SWAP1 00001842: LOG1 00001843: JUMP 00001844: JUMPDEST 00001845: PUSH1 0x00 00001847: DUP1 00001848: PUSH1 0x00 0000184a: SWAP1 0000184b: SLOAD 0000184c: SWAP1 0000184d: PUSH2 0x0100 00001850: EXP 00001851: SWAP1 00001852: DIV 00001853: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001868: AND 00001869: SWAP1 0000186a: POP 0000186b: DUP2 0000186c: PUSH1 0x00 0000186e: DUP1 0000186f: PUSH2 0x0100 00001872: EXP 00001873: DUP2 00001874: SLOAD 00001875: DUP2 00001876: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000188b: MUL 0000188c: NOT 0000188d: AND 0000188e: SWAP1 0000188f: DUP4 00001890: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018a5: AND 000018a6: MUL 000018a7: OR 000018a8: SWAP1 000018a9: SSTORE 000018aa: POP 000018ab: DUP2 000018ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018c1: AND 000018c2: DUP2 000018c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018d8: AND 000018d9: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000018fa: PUSH1 0x40 000018fc: MLOAD 000018fd: PUSH1 0x40 000018ff: MLOAD 00001900: DUP1 00001901: SWAP2 00001902: SUB 00001903: SWAP1 00001904: LOG3 00001905: POP 00001906: POP 00001907: JUMP 00001908: JUMPDEST 00001909: PUSH1 0x02 0000190b: PUSH1 0x01 0000190d: SLOAD 0000190e: SUB 0000190f: PUSH2 0x1944 00001912: JUMPI 00001913: PUSH1 0x40 00001915: MLOAD 00001916: PUSH32 0x3ee5aeb500000000000000000000000000000000000000000000000000000000 00001937: DUP2 00001938: MSTORE 00001939: PUSH1 0x04 0000193b: ADD 0000193c: PUSH1 0x40 0000193e: MLOAD 0000193f: DUP1 00001940: SWAP2 00001941: SUB 00001942: SWAP1 00001943: REVERT 00001944: JUMPDEST 00001945: PUSH1 0x02 00001947: PUSH1 0x01 00001949: DUP2 0000194a: SWAP1 0000194b: SSTORE 0000194c: POP 0000194d: JUMP 0000194e: JUMPDEST 0000194f: PUSH1 0x01 00001951: DUP1 00001952: DUP2 00001953: SWAP1 00001954: SSTORE 00001955: POP 00001956: JUMP 00001957: JUMPDEST 00001958: PUSH2 0x19d1 0000195b: DUP4 0000195c: DUP5 0000195d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001972: AND 00001973: PUSH4 0xa9059cbb 00001978: DUP6 00001979: DUP6 0000197a: PUSH1 0x40 0000197c: MLOAD 0000197d: PUSH1 0x24 0000197f: ADD 00001980: PUSH2 0x198a 00001983: SWAP3 00001984: SWAP2 00001985: SWAP1 00001986: PUSH2 0x2182 00001989: JUMP 0000198a: JUMPDEST 0000198b: PUSH1 0x40 0000198d: MLOAD 0000198e: PUSH1 0x20 00001990: DUP2 00001991: DUP4 00001992: SUB 00001993: SUB 00001994: DUP2 00001995: MSTORE 00001996: SWAP1 00001997: PUSH1 0x40 00001999: MSTORE 0000199a: SWAP2 0000199b: POP 0000199c: PUSH1 0xe0 0000199e: SHL 0000199f: PUSH1 0x20 000019a1: DUP3 000019a2: ADD 000019a3: DUP1 000019a4: MLOAD 000019a5: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000019c2: DUP4 000019c3: DUP2 000019c4: DUP4 000019c5: AND 000019c6: OR 000019c7: DUP4 000019c8: MSTORE 000019c9: POP 000019ca: POP 000019cb: POP 000019cc: POP 000019cd: PUSH2 0x1aa0 000019d0: JUMP 000019d1: JUMPDEST 000019d2: POP 000019d3: POP 000019d4: POP 000019d5: JUMP 000019d6: JUMPDEST 000019d7: PUSH2 0x19de 000019da: PUSH2 0x0658 000019dd: JUMP 000019de: JUMPDEST 000019df: PUSH2 0x1a14 000019e2: JUMPI 000019e3: PUSH1 0x40 000019e5: MLOAD 000019e6: PUSH32 0x8dfc202b00000000000000000000000000000000000000000000000000000000 00001a07: DUP2 00001a08: MSTORE 00001a09: PUSH1 0x04 00001a0b: ADD 00001a0c: PUSH1 0x40 00001a0e: MLOAD 00001a0f: DUP1 00001a10: SWAP2 00001a11: SUB 00001a12: SWAP1 00001a13: REVERT 00001a14: JUMPDEST 00001a15: JUMP 00001a16: JUMPDEST 00001a17: PUSH2 0x1a92 00001a1a: DUP5 00001a1b: DUP6 00001a1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a31: AND 00001a32: PUSH4 0x23b872dd 00001a37: DUP7 00001a38: DUP7 00001a39: DUP7 00001a3a: PUSH1 0x40 00001a3c: MLOAD 00001a3d: PUSH1 0x24 00001a3f: ADD 00001a40: PUSH2 0x1a4b 00001a43: SWAP4 00001a44: SWAP3 00001a45: SWAP2 00001a46: SWAP1 00001a47: PUSH2 0x2204 00001a4a: JUMP 00001a4b: JUMPDEST 00001a4c: PUSH1 0x40 00001a4e: MLOAD 00001a4f: PUSH1 0x20 00001a51: DUP2 00001a52: DUP4 00001a53: SUB 00001a54: SUB 00001a55: DUP2 00001a56: MSTORE 00001a57: SWAP1 00001a58: PUSH1 0x40 00001a5a: MSTORE 00001a5b: SWAP2 00001a5c: POP 00001a5d: PUSH1 0xe0 00001a5f: SHL 00001a60: PUSH1 0x20 00001a62: DUP3 00001a63: ADD 00001a64: DUP1 00001a65: MLOAD 00001a66: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001a83: DUP4 00001a84: DUP2 00001a85: DUP4 00001a86: AND 00001a87: OR 00001a88: DUP4 00001a89: MSTORE 00001a8a: POP 00001a8b: POP 00001a8c: POP 00001a8d: POP 00001a8e: PUSH2 0x1aa0 00001a91: JUMP 00001a92: JUMPDEST 00001a93: POP 00001a94: POP 00001a95: POP 00001a96: POP 00001a97: JUMP 00001a98: JUMPDEST 00001a99: PUSH1 0x00 00001a9b: CALLER 00001a9c: SWAP1 00001a9d: POP 00001a9e: SWAP1 00001a9f: JUMP 00001aa0: JUMPDEST 00001aa1: PUSH1 0x00 00001aa3: PUSH2 0x1acb 00001aa6: DUP3 00001aa7: DUP5 00001aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001abd: AND 00001abe: PUSH2 0x1b37 00001ac1: SWAP1 00001ac2: SWAP2 00001ac3: SWAP1 00001ac4: PUSH4 0xffffffff 00001ac9: AND 00001aca: JUMP 00001acb: JUMPDEST 00001acc: SWAP1 00001acd: POP 00001ace: PUSH1 0x00 00001ad0: DUP2 00001ad1: MLOAD 00001ad2: EQ 00001ad3: ISZERO 00001ad4: DUP1 00001ad5: ISZERO 00001ad6: PUSH2 0x1af0 00001ad9: JUMPI 00001ada: POP 00001adb: DUP1 00001adc: DUP1 00001add: PUSH1 0x20 00001adf: ADD 00001ae0: SWAP1 00001ae1: MLOAD 00001ae2: DUP2 00001ae3: ADD 00001ae4: SWAP1 00001ae5: PUSH2 0x1aee 00001ae8: SWAP2 00001ae9: SWAP1 00001aea: PUSH2 0x21d7 00001aed: JUMP 00001aee: JUMPDEST 00001aef: ISZERO 00001af0: JUMPDEST 00001af1: ISZERO 00001af2: PUSH2 0x1b32 00001af5: JUMPI 00001af6: DUP3 00001af7: PUSH1 0x40 00001af9: MLOAD 00001afa: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000 00001b1b: DUP2 00001b1c: MSTORE 00001b1d: PUSH1 0x04 00001b1f: ADD 00001b20: PUSH2 0x1b29 00001b23: SWAP2 00001b24: SWAP1 00001b25: PUSH2 0x2012 00001b28: JUMP 00001b29: JUMPDEST 00001b2a: PUSH1 0x40 00001b2c: MLOAD 00001b2d: DUP1 00001b2e: SWAP2 00001b2f: SUB 00001b30: SWAP1 00001b31: REVERT 00001b32: JUMPDEST 00001b33: POP 00001b34: POP 00001b35: POP 00001b36: JUMP 00001b37: JUMPDEST 00001b38: PUSH1 0x60 00001b3a: PUSH2 0x1b45 00001b3d: DUP4 00001b3e: DUP4 00001b3f: PUSH1 0x00 00001b41: PUSH2 0x1b4d 00001b44: JUMP 00001b45: JUMPDEST 00001b46: SWAP1 00001b47: POP 00001b48: SWAP3 00001b49: SWAP2 00001b4a: POP 00001b4b: POP 00001b4c: JUMP 00001b4d: JUMPDEST 00001b4e: PUSH1 0x60 00001b50: DUP2 00001b51: SELFBALANCE 00001b52: LT 00001b53: ISZERO 00001b54: PUSH2 0x1b94 00001b57: JUMPI 00001b58: ADDRESS 00001b59: PUSH1 0x40 00001b5b: MLOAD 00001b5c: PUSH32 0xcd78605900000000000000000000000000000000000000000000000000000000 00001b7d: DUP2 00001b7e: MSTORE 00001b7f: PUSH1 0x04 00001b81: ADD 00001b82: PUSH2 0x1b8b 00001b85: SWAP2 00001b86: SWAP1 00001b87: PUSH2 0x2012 00001b8a: JUMP 00001b8b: JUMPDEST 00001b8c: PUSH1 0x40 00001b8e: MLOAD 00001b8f: DUP1 00001b90: SWAP2 00001b91: SUB 00001b92: SWAP1 00001b93: REVERT 00001b94: JUMPDEST 00001b95: PUSH1 0x00 00001b97: DUP1 00001b98: DUP6 00001b99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bae: AND 00001baf: DUP5 00001bb0: DUP7 00001bb1: PUSH1 0x40 00001bb3: MLOAD 00001bb4: PUSH2 0x1bbd 00001bb7: SWAP2 00001bb8: SWAP1 00001bb9: PUSH2 0x23c3 00001bbc: JUMP 00001bbd: JUMPDEST 00001bbe: PUSH1 0x00 00001bc0: PUSH1 0x40 00001bc2: MLOAD 00001bc3: DUP1 00001bc4: DUP4 00001bc5: SUB 00001bc6: DUP2 00001bc7: DUP6 00001bc8: DUP8 00001bc9: GAS 00001bca: CALL 00001bcb: SWAP3 00001bcc: POP 00001bcd: POP 00001bce: POP 00001bcf: RETURNDATASIZE 00001bd0: DUP1 00001bd1: PUSH1 0x00 00001bd3: DUP2 00001bd4: EQ 00001bd5: PUSH2 0x1bfa 00001bd8: JUMPI 00001bd9: PUSH1 0x40 00001bdb: MLOAD 00001bdc: SWAP2 00001bdd: POP 00001bde: PUSH1 0x1f 00001be0: NOT 00001be1: PUSH1 0x3f 00001be3: RETURNDATASIZE 00001be4: ADD 00001be5: AND 00001be6: DUP3 00001be7: ADD 00001be8: PUSH1 0x40 00001bea: MSTORE 00001beb: RETURNDATASIZE 00001bec: DUP3 00001bed: MSTORE 00001bee: RETURNDATASIZE 00001bef: PUSH1 0x00 00001bf1: PUSH1 0x20 00001bf3: DUP5 00001bf4: ADD 00001bf5: RETURNDATACOPY 00001bf6: PUSH2 0x1bff 00001bf9: JUMP 00001bfa: JUMPDEST 00001bfb: PUSH1 0x60 00001bfd: SWAP2 00001bfe: POP 00001bff: JUMPDEST 00001c00: POP 00001c01: SWAP2 00001c02: POP 00001c03: SWAP2 00001c04: POP 00001c05: PUSH2 0x1c0f 00001c08: DUP7 00001c09: DUP4 00001c0a: DUP4 00001c0b: PUSH2 0x1c1a 00001c0e: JUMP 00001c0f: JUMPDEST 00001c10: SWAP3 00001c11: POP 00001c12: POP 00001c13: POP 00001c14: SWAP4 00001c15: SWAP3 00001c16: POP 00001c17: POP 00001c18: POP 00001c19: JUMP 00001c1a: JUMPDEST 00001c1b: PUSH1 0x60 00001c1d: DUP3 00001c1e: PUSH2 0x1c2f 00001c21: JUMPI 00001c22: PUSH2 0x1c2a 00001c25: DUP3 00001c26: PUSH2 0x1ca9 00001c29: JUMP 00001c2a: JUMPDEST 00001c2b: PUSH2 0x1ca1 00001c2e: JUMP 00001c2f: JUMPDEST 00001c30: PUSH1 0x00 00001c32: DUP3 00001c33: MLOAD 00001c34: EQ 00001c35: DUP1 00001c36: ISZERO 00001c37: PUSH2 0x1c57 00001c3a: JUMPI 00001c3b: POP 00001c3c: PUSH1 0x00 00001c3e: DUP5 00001c3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c54: AND 00001c55: EXTCODESIZE 00001c56: EQ 00001c57: JUMPDEST 00001c58: ISZERO 00001c59: PUSH2 0x1c99 00001c5c: JUMPI 00001c5d: DUP4 00001c5e: PUSH1 0x40 00001c60: MLOAD 00001c61: PUSH32 0x9996b31500000000000000000000000000000000000000000000000000000000 00001c82: DUP2 00001c83: MSTORE 00001c84: PUSH1 0x04 00001c86: ADD 00001c87: PUSH2 0x1c90 00001c8a: SWAP2 00001c8b: SWAP1 00001c8c: PUSH2 0x2012 00001c8f: JUMP 00001c90: JUMPDEST 00001c91: PUSH1 0x40 00001c93: MLOAD 00001c94: DUP1 00001c95: SWAP2 00001c96: SUB 00001c97: SWAP1 00001c98: REVERT 00001c99: JUMPDEST 00001c9a: DUP2 00001c9b: SWAP1 00001c9c: POP 00001c9d: PUSH2 0x1ca2 00001ca0: JUMP 00001ca1: JUMPDEST 00001ca2: JUMPDEST 00001ca3: SWAP4 00001ca4: SWAP3 00001ca5: POP 00001ca6: POP 00001ca7: POP 00001ca8: JUMP 00001ca9: JUMPDEST 00001caa: PUSH1 0x00 00001cac: DUP2 00001cad: MLOAD 00001cae: GT 00001caf: ISZERO 00001cb0: PUSH2 0x1cbc 00001cb3: JUMPI 00001cb4: DUP1 00001cb5: MLOAD 00001cb6: DUP1 00001cb7: DUP3 00001cb8: PUSH1 0x20 00001cba: ADD 00001cbb: REVERT 00001cbc: JUMPDEST 00001cbd: PUSH1 0x40 00001cbf: MLOAD 00001cc0: PUSH32 0x1425ea4200000000000000000000000000000000000000000000000000000000 00001ce1: DUP2 00001ce2: MSTORE 00001ce3: PUSH1 0x04 00001ce5: ADD 00001ce6: PUSH1 0x40 00001ce8: MLOAD 00001ce9: DUP1 00001cea: SWAP2 00001ceb: SUB 00001cec: SWAP1 00001ced: REVERT 00001cee: JUMPDEST 00001cef: PUSH1 0x00 00001cf1: DUP1 00001cf2: REVERT 00001cf3: JUMPDEST 00001cf4: PUSH1 0x00 00001cf6: DUP2 00001cf7: SWAP1 00001cf8: POP 00001cf9: SWAP2 00001cfa: SWAP1 00001cfb: POP 00001cfc: JUMP 00001cfd: JUMPDEST 00001cfe: PUSH2 0x1d06 00001d01: DUP2 00001d02: PUSH2 0x1cf3 00001d05: JUMP 00001d06: JUMPDEST 00001d07: DUP2 00001d08: EQ 00001d09: PUSH2 0x1d11 00001d0c: JUMPI 00001d0d: PUSH1 0x00 00001d0f: DUP1 00001d10: REVERT 00001d11: JUMPDEST 00001d12: POP 00001d13: JUMP 00001d14: JUMPDEST 00001d15: PUSH1 0x00 00001d17: DUP2 00001d18: CALLDATALOAD 00001d19: SWAP1 00001d1a: POP 00001d1b: PUSH2 0x1d23 00001d1e: DUP2 00001d1f: PUSH2 0x1cfd 00001d22: JUMP 00001d23: JUMPDEST 00001d24: SWAP3 00001d25: SWAP2 00001d26: POP 00001d27: POP 00001d28: JUMP 00001d29: JUMPDEST 00001d2a: PUSH1 0x00 00001d2c: PUSH1 0x20 00001d2e: DUP3 00001d2f: DUP5 00001d30: SUB 00001d31: SLT 00001d32: ISZERO 00001d33: PUSH2 0x1d3f 00001d36: JUMPI 00001d37: PUSH2 0x1d3e 00001d3a: PUSH2 0x1cee 00001d3d: JUMP 00001d3e: JUMPDEST 00001d3f: JUMPDEST 00001d40: PUSH1 0x00 00001d42: PUSH2 0x1d4d 00001d45: DUP5 00001d46: DUP3 00001d47: DUP6 00001d48: ADD 00001d49: PUSH2 0x1d14 00001d4c: JUMP 00001d4d: JUMPDEST 00001d4e: SWAP2 00001d4f: POP 00001d50: POP 00001d51: SWAP3 00001d52: SWAP2 00001d53: POP 00001d54: POP 00001d55: JUMP 00001d56: JUMPDEST 00001d57: PUSH1 0x00 00001d59: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d6e: DUP3 00001d6f: AND 00001d70: SWAP1 00001d71: POP 00001d72: SWAP2 00001d73: SWAP1 00001d74: POP 00001d75: JUMP 00001d76: JUMPDEST 00001d77: PUSH1 0x00 00001d79: DUP2 00001d7a: SWAP1 00001d7b: POP 00001d7c: SWAP2 00001d7d: SWAP1 00001d7e: POP 00001d7f: JUMP 00001d80: JUMPDEST 00001d81: PUSH1 0x00 00001d83: PUSH2 0x1d9b 00001d86: PUSH2 0x1d96 00001d89: PUSH2 0x1d91 00001d8c: DUP5 00001d8d: PUSH2 0x1d56 00001d90: JUMP 00001d91: JUMPDEST 00001d92: PUSH2 0x1d76 00001d95: JUMP 00001d96: JUMPDEST 00001d97: PUSH2 0x1d56 00001d9a: JUMP 00001d9b: JUMPDEST 00001d9c: SWAP1 00001d9d: POP 00001d9e: SWAP2 00001d9f: SWAP1 00001da0: POP 00001da1: JUMP 00001da2: JUMPDEST 00001da3: PUSH1 0x00 00001da5: PUSH2 0x1dad 00001da8: DUP3 00001da9: PUSH2 0x1d80 00001dac: JUMP 00001dad: JUMPDEST 00001dae: SWAP1 00001daf: POP 00001db0: SWAP2 00001db1: SWAP1 00001db2: POP 00001db3: JUMP 00001db4: JUMPDEST 00001db5: PUSH1 0x00 00001db7: PUSH2 0x1dbf 00001dba: DUP3 00001dbb: PUSH2 0x1da2 00001dbe: JUMP 00001dbf: JUMPDEST 00001dc0: SWAP1 00001dc1: POP 00001dc2: SWAP2 00001dc3: SWAP1 00001dc4: POP 00001dc5: JUMP 00001dc6: JUMPDEST 00001dc7: PUSH2 0x1dcf 00001dca: DUP2 00001dcb: PUSH2 0x1db4 00001dce: JUMP 00001dcf: JUMPDEST 00001dd0: DUP3 00001dd1: MSTORE 00001dd2: POP 00001dd3: POP 00001dd4: JUMP 00001dd5: JUMPDEST 00001dd6: PUSH1 0x00 00001dd8: PUSH1 0x20 00001dda: DUP3 00001ddb: ADD 00001ddc: SWAP1 00001ddd: POP 00001dde: PUSH2 0x1dea 00001de1: PUSH1 0x00 00001de3: DUP4 00001de4: ADD 00001de5: DUP5 00001de6: PUSH2 0x1dc6 00001de9: JUMP 00001dea: JUMPDEST 00001deb: SWAP3 00001dec: SWAP2 00001ded: POP 00001dee: POP 00001def: JUMP 00001df0: JUMPDEST 00001df1: PUSH1 0x00 00001df3: PUSH10 0xffffffffffffffffffff 00001dfe: DUP3 00001dff: AND 00001e00: SWAP1 00001e01: POP 00001e02: SWAP2 00001e03: SWAP1 00001e04: POP 00001e05: JUMP 00001e06: JUMPDEST 00001e07: PUSH2 0x1e0f 00001e0a: DUP2 00001e0b: PUSH2 0x1df0 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: DUP2 00001e11: EQ 00001e12: PUSH2 0x1e1a 00001e15: JUMPI 00001e16: PUSH1 0x00 00001e18: DUP1 00001e19: REVERT 00001e1a: JUMPDEST 00001e1b: POP 00001e1c: JUMP 00001e1d: JUMPDEST 00001e1e: PUSH1 0x00 00001e20: DUP2 00001e21: CALLDATALOAD 00001e22: SWAP1 00001e23: POP 00001e24: PUSH2 0x1e2c 00001e27: DUP2 00001e28: PUSH2 0x1e06 00001e2b: JUMP 00001e2c: JUMPDEST 00001e2d: SWAP3 00001e2e: SWAP2 00001e2f: POP 00001e30: POP 00001e31: JUMP 00001e32: JUMPDEST 00001e33: PUSH1 0x00 00001e35: DUP1 00001e36: PUSH1 0x40 00001e38: DUP4 00001e39: DUP6 00001e3a: SUB 00001e3b: SLT 00001e3c: ISZERO 00001e3d: PUSH2 0x1e49 00001e40: JUMPI 00001e41: PUSH2 0x1e48 00001e44: PUSH2 0x1cee 00001e47: JUMP 00001e48: JUMPDEST 00001e49: JUMPDEST 00001e4a: PUSH1 0x00 00001e4c: PUSH2 0x1e57 00001e4f: DUP6 00001e50: DUP3 00001e51: DUP7 00001e52: ADD 00001e53: PUSH2 0x1e1d 00001e56: JUMP 00001e57: JUMPDEST 00001e58: SWAP3 00001e59: POP 00001e5a: POP 00001e5b: PUSH1 0x20 00001e5d: PUSH2 0x1e68 00001e60: DUP6 00001e61: DUP3 00001e62: DUP7 00001e63: ADD 00001e64: PUSH2 0x1e1d 00001e67: JUMP 00001e68: JUMPDEST 00001e69: SWAP2 00001e6a: POP 00001e6b: POP 00001e6c: SWAP3 00001e6d: POP 00001e6e: SWAP3 00001e6f: SWAP1 00001e70: POP 00001e71: JUMP 00001e72: JUMPDEST 00001e73: PUSH2 0x1e7b 00001e76: DUP2 00001e77: PUSH2 0x1df0 00001e7a: JUMP 00001e7b: JUMPDEST 00001e7c: DUP3 00001e7d: MSTORE 00001e7e: POP 00001e7f: POP 00001e80: JUMP 00001e81: JUMPDEST 00001e82: PUSH1 0x00 00001e84: PUSH1 0x60 00001e86: DUP3 00001e87: ADD 00001e88: SWAP1 00001e89: POP 00001e8a: PUSH2 0x1e96 00001e8d: PUSH1 0x00 00001e8f: DUP4 00001e90: ADD 00001e91: DUP7 00001e92: PUSH2 0x1e72 00001e95: JUMP 00001e96: JUMPDEST 00001e97: PUSH2 0x1ea3 00001e9a: PUSH1 0x20 00001e9c: DUP4 00001e9d: ADD 00001e9e: DUP6 00001e9f: PUSH2 0x1e72 00001ea2: JUMP 00001ea3: JUMPDEST 00001ea4: PUSH2 0x1eb0 00001ea7: PUSH1 0x40 00001ea9: DUP4 00001eaa: ADD 00001eab: DUP5 00001eac: PUSH2 0x1e72 00001eaf: JUMP 00001eb0: JUMPDEST 00001eb1: SWAP5 00001eb2: SWAP4 00001eb3: POP 00001eb4: POP 00001eb5: POP 00001eb6: POP 00001eb7: JUMP 00001eb8: JUMPDEST 00001eb9: PUSH1 0x00 00001ebb: PUSH2 0x1ec3 00001ebe: DUP3 00001ebf: PUSH2 0x1d56 00001ec2: JUMP 00001ec3: JUMPDEST 00001ec4: SWAP1 00001ec5: POP 00001ec6: SWAP2 00001ec7: SWAP1 00001ec8: POP 00001ec9: JUMP 00001eca: JUMPDEST 00001ecb: PUSH2 0x1ed3 00001ece: DUP2 00001ecf: PUSH2 0x1eb8 00001ed2: JUMP 00001ed3: JUMPDEST 00001ed4: DUP2 00001ed5: EQ 00001ed6: PUSH2 0x1ede 00001ed9: JUMPI 00001eda: PUSH1 0x00 00001edc: DUP1 00001edd: REVERT 00001ede: JUMPDEST 00001edf: POP 00001ee0: JUMP 00001ee1: JUMPDEST 00001ee2: PUSH1 0x00 00001ee4: DUP2 00001ee5: CALLDATALOAD 00001ee6: SWAP1 00001ee7: POP 00001ee8: PUSH2 0x1ef0 00001eeb: DUP2 00001eec: PUSH2 0x1eca 00001eef: JUMP 00001ef0: JUMPDEST 00001ef1: SWAP3 00001ef2: SWAP2 00001ef3: POP 00001ef4: POP 00001ef5: JUMP 00001ef6: JUMPDEST 00001ef7: PUSH1 0x00 00001ef9: PUSH1 0x20 00001efb: DUP3 00001efc: DUP5 00001efd: SUB 00001efe: SLT 00001eff: ISZERO 00001f00: PUSH2 0x1f0c 00001f03: JUMPI 00001f04: PUSH2 0x1f0b 00001f07: PUSH2 0x1cee 00001f0a: JUMP 00001f0b: JUMPDEST 00001f0c: JUMPDEST 00001f0d: PUSH1 0x00 00001f0f: PUSH2 0x1f1a 00001f12: DUP5 00001f13: DUP3 00001f14: DUP6 00001f15: ADD 00001f16: PUSH2 0x1ee1 00001f19: JUMP 00001f1a: JUMPDEST 00001f1b: SWAP2 00001f1c: POP 00001f1d: POP 00001f1e: SWAP3 00001f1f: SWAP2 00001f20: POP 00001f21: POP 00001f22: JUMP 00001f23: JUMPDEST 00001f24: PUSH2 0x1f2c 00001f27: DUP2 00001f28: PUSH2 0x1cf3 00001f2b: JUMP 00001f2c: JUMPDEST 00001f2d: DUP3 00001f2e: MSTORE 00001f2f: POP 00001f30: POP 00001f31: JUMP 00001f32: JUMPDEST 00001f33: PUSH1 0x00 00001f35: PUSH1 0x20 00001f37: DUP3 00001f38: ADD 00001f39: SWAP1 00001f3a: POP 00001f3b: PUSH2 0x1f47 00001f3e: PUSH1 0x00 00001f40: DUP4 00001f41: ADD 00001f42: DUP5 00001f43: PUSH2 0x1f23 00001f46: JUMP 00001f47: JUMPDEST 00001f48: SWAP3 00001f49: SWAP2 00001f4a: POP 00001f4b: POP 00001f4c: JUMP 00001f4d: JUMPDEST 00001f4e: PUSH1 0x00 00001f50: DUP2 00001f51: ISZERO 00001f52: ISZERO 00001f53: SWAP1 00001f54: POP 00001f55: SWAP2 00001f56: SWAP1 00001f57: POP 00001f58: JUMP 00001f59: JUMPDEST 00001f5a: PUSH2 0x1f62 00001f5d: DUP2 00001f5e: PUSH2 0x1f4d 00001f61: JUMP 00001f62: JUMPDEST 00001f63: DUP3 00001f64: MSTORE 00001f65: POP 00001f66: POP 00001f67: JUMP 00001f68: JUMPDEST 00001f69: PUSH1 0x00 00001f6b: PUSH1 0x20 00001f6d: DUP3 00001f6e: ADD 00001f6f: SWAP1 00001f70: POP 00001f71: PUSH2 0x1f7d 00001f74: PUSH1 0x00 00001f76: DUP4 00001f77: ADD 00001f78: DUP5 00001f79: PUSH2 0x1f59 00001f7c: JUMP 00001f7d: JUMPDEST 00001f7e: SWAP3 00001f7f: SWAP2 00001f80: POP 00001f81: POP 00001f82: JUMP 00001f83: JUMPDEST 00001f84: PUSH1 0x00 00001f86: DUP1 00001f87: PUSH1 0x40 00001f89: DUP4 00001f8a: DUP6 00001f8b: SUB 00001f8c: SLT 00001f8d: ISZERO 00001f8e: PUSH2 0x1f9a 00001f91: JUMPI 00001f92: PUSH2 0x1f99 00001f95: PUSH2 0x1cee 00001f98: JUMP 00001f99: JUMPDEST 00001f9a: JUMPDEST 00001f9b: PUSH1 0x00 00001f9d: PUSH2 0x1fa8 00001fa0: DUP6 00001fa1: DUP3 00001fa2: DUP7 00001fa3: ADD 00001fa4: PUSH2 0x1ee1 00001fa7: JUMP 00001fa8: JUMPDEST 00001fa9: SWAP3 00001faa: POP 00001fab: POP 00001fac: PUSH1 0x20 00001fae: PUSH2 0x1fb9 00001fb1: DUP6 00001fb2: DUP3 00001fb3: DUP7 00001fb4: ADD 00001fb5: PUSH2 0x1d14 00001fb8: JUMP 00001fb9: JUMPDEST 00001fba: SWAP2 00001fbb: POP 00001fbc: POP 00001fbd: SWAP3 00001fbe: POP 00001fbf: SWAP3 00001fc0: SWAP1 00001fc1: POP 00001fc2: JUMP 00001fc3: JUMPDEST 00001fc4: PUSH1 0x00 00001fc6: DUP1 00001fc7: PUSH1 0x40 00001fc9: DUP4 00001fca: DUP6 00001fcb: SUB 00001fcc: SLT 00001fcd: ISZERO 00001fce: PUSH2 0x1fda 00001fd1: JUMPI 00001fd2: PUSH2 0x1fd9 00001fd5: PUSH2 0x1cee 00001fd8: JUMP 00001fd9: JUMPDEST 00001fda: JUMPDEST 00001fdb: PUSH1 0x00 00001fdd: PUSH2 0x1fe8 00001fe0: DUP6 00001fe1: DUP3 00001fe2: DUP7 00001fe3: ADD 00001fe4: PUSH2 0x1d14 00001fe7: JUMP 00001fe8: JUMPDEST 00001fe9: SWAP3 00001fea: POP 00001feb: POP 00001fec: PUSH1 0x20 00001fee: PUSH2 0x1ff9 00001ff1: DUP6 00001ff2: DUP3 00001ff3: DUP7 00001ff4: ADD 00001ff5: PUSH2 0x1ee1 00001ff8: JUMP 00001ff9: JUMPDEST 00001ffa: SWAP2 00001ffb: POP 00001ffc: POP 00001ffd: SWAP3 00001ffe: POP 00001fff: SWAP3 00002000: SWAP1 00002001: POP 00002002: JUMP 00002003: JUMPDEST 00002004: PUSH2 0x200c 00002007: DUP2 00002008: PUSH2 0x1eb8 0000200b: JUMP 0000200c: JUMPDEST 0000200d: DUP3 0000200e: MSTORE 0000200f: POP 00002010: POP 00002011: JUMP 00002012: JUMPDEST 00002013: PUSH1 0x00 00002015: PUSH1 0x20 00002017: DUP3 00002018: ADD 00002019: SWAP1 0000201a: POP 0000201b: PUSH2 0x2027 0000201e: PUSH1 0x00 00002020: DUP4 00002021: ADD 00002022: DUP5 00002023: PUSH2 0x2003 00002026: JUMP 00002027: JUMPDEST 00002028: SWAP3 00002029: SWAP2 0000202a: POP 0000202b: POP 0000202c: JUMP 0000202d: JUMPDEST 0000202e: PUSH1 0x00 00002030: PUSH2 0x2038 00002033: DUP3 00002034: PUSH2 0x1eb8 00002037: JUMP 00002038: JUMPDEST 00002039: SWAP1 0000203a: POP 0000203b: SWAP2 0000203c: SWAP1 0000203d: POP 0000203e: JUMP 0000203f: JUMPDEST 00002040: PUSH2 0x2048 00002043: DUP2 00002044: PUSH2 0x202d 00002047: JUMP 00002048: JUMPDEST 00002049: DUP2 0000204a: EQ 0000204b: PUSH2 0x2053 0000204e: JUMPI 0000204f: PUSH1 0x00 00002051: DUP1 00002052: REVERT 00002053: JUMPDEST 00002054: POP 00002055: JUMP 00002056: JUMPDEST 00002057: PUSH1 0x00 00002059: DUP2 0000205a: CALLDATALOAD 0000205b: SWAP1 0000205c: POP 0000205d: PUSH2 0x2065 00002060: DUP2 00002061: PUSH2 0x203f 00002064: JUMP 00002065: JUMPDEST 00002066: SWAP3 00002067: SWAP2 00002068: POP 00002069: POP 0000206a: JUMP 0000206b: JUMPDEST 0000206c: PUSH1 0x00 0000206e: DUP1 0000206f: PUSH1 0x40 00002071: DUP4 00002072: DUP6 00002073: SUB 00002074: SLT 00002075: ISZERO 00002076: PUSH2 0x2082 00002079: JUMPI 0000207a: PUSH2 0x2081 0000207d: PUSH2 0x1cee 00002080: JUMP 00002081: JUMPDEST 00002082: JUMPDEST 00002083: PUSH1 0x00 00002085: PUSH2 0x2090 00002088: DUP6 00002089: DUP3 0000208a: DUP7 0000208b: ADD 0000208c: PUSH2 0x2056 0000208f: JUMP 00002090: JUMPDEST 00002091: SWAP3 00002092: POP 00002093: POP 00002094: PUSH1 0x20 00002096: PUSH2 0x20a1 00002099: DUP6 0000209a: DUP3 0000209b: DUP7 0000209c: ADD 0000209d: PUSH2 0x1d14 000020a0: JUMP 000020a1: JUMPDEST 000020a2: SWAP2 000020a3: POP 000020a4: POP 000020a5: SWAP3 000020a6: POP 000020a7: SWAP3 000020a8: SWAP1 000020a9: POP 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x00 000020ae: DUP1 000020af: PUSH1 0x40 000020b1: DUP4 000020b2: DUP6 000020b3: SUB 000020b4: SLT 000020b5: ISZERO 000020b6: PUSH2 0x20c2 000020b9: JUMPI 000020ba: PUSH2 0x20c1 000020bd: PUSH2 0x1cee 000020c0: JUMP 000020c1: JUMPDEST 000020c2: JUMPDEST 000020c3: PUSH1 0x00 000020c5: PUSH2 0x20d0 000020c8: DUP6 000020c9: DUP3 000020ca: DUP7 000020cb: ADD 000020cc: PUSH2 0x1d14 000020cf: JUMP 000020d0: JUMPDEST 000020d1: SWAP3 000020d2: POP 000020d3: POP 000020d4: PUSH1 0x20 000020d6: PUSH2 0x20e1 000020d9: DUP6 000020da: DUP3 000020db: DUP7 000020dc: ADD 000020dd: PUSH2 0x1d14 000020e0: JUMP 000020e1: JUMPDEST 000020e2: SWAP2 000020e3: POP 000020e4: POP 000020e5: SWAP3 000020e6: POP 000020e7: SWAP3 000020e8: SWAP1 000020e9: POP 000020ea: JUMP 000020eb: JUMPDEST 000020ec: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000210d: PUSH1 0x00 0000210f: MSTORE 00002110: PUSH1 0x11 00002112: PUSH1 0x04 00002114: MSTORE 00002115: PUSH1 0x24 00002117: PUSH1 0x00 00002119: REVERT 0000211a: JUMPDEST 0000211b: PUSH1 0x00 0000211d: PUSH2 0x2125 00002120: DUP3 00002121: PUSH2 0x1cf3 00002124: JUMP 00002125: JUMPDEST 00002126: SWAP2 00002127: POP 00002128: PUSH2 0x2130 0000212b: DUP4 0000212c: PUSH2 0x1cf3 0000212f: JUMP 00002130: JUMPDEST 00002131: SWAP3 00002132: POP 00002133: DUP3 00002134: DUP3 00002135: ADD 00002136: SWAP1 00002137: POP 00002138: DUP1 00002139: DUP3 0000213a: GT 0000213b: ISZERO 0000213c: PUSH2 0x2148 0000213f: JUMPI 00002140: PUSH2 0x2147 00002143: PUSH2 0x20eb 00002146: JUMP 00002147: JUMPDEST 00002148: JUMPDEST 00002149: SWAP3 0000214a: SWAP2 0000214b: POP 0000214c: POP 0000214d: JUMP 0000214e: JUMPDEST 0000214f: PUSH1 0x00 00002151: PUSH2 0x2159 00002154: DUP3 00002155: PUSH2 0x1cf3 00002158: JUMP 00002159: JUMPDEST 0000215a: SWAP2 0000215b: POP 0000215c: PUSH2 0x2164 0000215f: DUP4 00002160: PUSH2 0x1cf3 00002163: JUMP 00002164: JUMPDEST 00002165: SWAP3 00002166: POP 00002167: DUP3 00002168: DUP3 00002169: SUB 0000216a: SWAP1 0000216b: POP 0000216c: DUP2 0000216d: DUP2 0000216e: GT 0000216f: ISZERO 00002170: PUSH2 0x217c 00002173: JUMPI 00002174: PUSH2 0x217b 00002177: PUSH2 0x20eb 0000217a: JUMP 0000217b: JUMPDEST 0000217c: JUMPDEST 0000217d: SWAP3 0000217e: SWAP2 0000217f: POP 00002180: POP 00002181: JUMP 00002182: JUMPDEST 00002183: PUSH1 0x00 00002185: PUSH1 0x40 00002187: DUP3 00002188: ADD 00002189: SWAP1 0000218a: POP 0000218b: PUSH2 0x2197 0000218e: PUSH1 0x00 00002190: DUP4 00002191: ADD 00002192: DUP6 00002193: PUSH2 0x2003 00002196: JUMP 00002197: JUMPDEST 00002198: PUSH2 0x21a4 0000219b: PUSH1 0x20 0000219d: DUP4 0000219e: ADD 0000219f: DUP5 000021a0: PUSH2 0x1f23 000021a3: JUMP 000021a4: JUMPDEST 000021a5: SWAP4 000021a6: SWAP3 000021a7: POP 000021a8: POP 000021a9: POP 000021aa: JUMP 000021ab: JUMPDEST 000021ac: PUSH2 0x21b4 000021af: DUP2 000021b0: PUSH2 0x1f4d 000021b3: JUMP 000021b4: JUMPDEST 000021b5: DUP2 000021b6: EQ 000021b7: PUSH2 0x21bf 000021ba: JUMPI 000021bb: PUSH1 0x00 000021bd: DUP1 000021be: REVERT 000021bf: JUMPDEST 000021c0: POP 000021c1: JUMP 000021c2: JUMPDEST 000021c3: PUSH1 0x00 000021c5: DUP2 000021c6: MLOAD 000021c7: SWAP1 000021c8: POP 000021c9: PUSH2 0x21d1 000021cc: DUP2 000021cd: PUSH2 0x21ab 000021d0: JUMP 000021d1: JUMPDEST 000021d2: SWAP3 000021d3: SWAP2 000021d4: POP 000021d5: POP 000021d6: JUMP 000021d7: JUMPDEST 000021d8: PUSH1 0x00 000021da: PUSH1 0x20 000021dc: DUP3 000021dd: DUP5 000021de: SUB 000021df: SLT 000021e0: ISZERO 000021e1: PUSH2 0x21ed 000021e4: JUMPI 000021e5: PUSH2 0x21ec 000021e8: PUSH2 0x1cee 000021eb: JUMP 000021ec: JUMPDEST 000021ed: JUMPDEST 000021ee: PUSH1 0x00 000021f0: PUSH2 0x21fb 000021f3: DUP5 000021f4: DUP3 000021f5: DUP6 000021f6: ADD 000021f7: PUSH2 0x21c2 000021fa: JUMP 000021fb: JUMPDEST 000021fc: SWAP2 000021fd: POP 000021fe: POP 000021ff: SWAP3 00002200: SWAP2 00002201: POP 00002202: POP 00002203: JUMP 00002204: JUMPDEST 00002205: PUSH1 0x00 00002207: PUSH1 0x60 00002209: DUP3 0000220a: ADD 0000220b: SWAP1 0000220c: POP 0000220d: PUSH2 0x2219 00002210: PUSH1 0x00 00002212: DUP4 00002213: ADD 00002214: DUP7 00002215: PUSH2 0x2003 00002218: JUMP 00002219: JUMPDEST 0000221a: PUSH2 0x2226 0000221d: PUSH1 0x20 0000221f: DUP4 00002220: ADD 00002221: DUP6 00002222: PUSH2 0x2003 00002225: JUMP 00002226: JUMPDEST 00002227: PUSH2 0x2233 0000222a: PUSH1 0x40 0000222c: DUP4 0000222d: ADD 0000222e: DUP5 0000222f: PUSH2 0x1f23 00002232: JUMP 00002233: JUMPDEST 00002234: SWAP5 00002235: SWAP4 00002236: POP 00002237: POP 00002238: POP 00002239: POP 0000223a: JUMP 0000223b: JUMPDEST 0000223c: PUSH1 0x00 0000223e: PUSH2 0x2246 00002241: DUP3 00002242: PUSH2 0x1df0 00002245: JUMP 00002246: JUMPDEST 00002247: SWAP2 00002248: POP 00002249: PUSH2 0x2251 0000224c: DUP4 0000224d: PUSH2 0x1df0 00002250: JUMP 00002251: JUMPDEST 00002252: SWAP3 00002253: POP 00002254: DUP3 00002255: DUP3 00002256: ADD 00002257: SWAP1 00002258: POP 00002259: PUSH10 0xffffffffffffffffffff 00002264: DUP2 00002265: GT 00002266: ISZERO 00002267: PUSH2 0x2273 0000226a: JUMPI 0000226b: PUSH2 0x2272 0000226e: PUSH2 0x20eb 00002271: JUMP 00002272: JUMPDEST 00002273: JUMPDEST 00002274: SWAP3 00002275: SWAP2 00002276: POP 00002277: POP 00002278: JUMP 00002279: JUMPDEST 0000227a: PUSH1 0x00 0000227c: PUSH2 0x2284 0000227f: DUP3 00002280: PUSH2 0x1cf3 00002283: JUMP 00002284: JUMPDEST 00002285: SWAP2 00002286: POP 00002287: PUSH2 0x228f 0000228a: DUP4 0000228b: PUSH2 0x1cf3 0000228e: JUMP 0000228f: JUMPDEST 00002290: SWAP3 00002291: POP 00002292: DUP3 00002293: DUP3 00002294: MUL 00002295: PUSH2 0x229d 00002298: DUP2 00002299: PUSH2 0x1cf3 0000229c: JUMP 0000229d: JUMPDEST 0000229e: SWAP2 0000229f: POP 000022a0: DUP3 000022a1: DUP3 000022a2: DIV 000022a3: DUP5 000022a4: EQ 000022a5: DUP4 000022a6: ISZERO 000022a7: OR 000022a8: PUSH2 0x22b4 000022ab: JUMPI 000022ac: PUSH2 0x22b3 000022af: PUSH2 0x20eb 000022b2: JUMP 000022b3: JUMPDEST 000022b4: JUMPDEST 000022b5: POP 000022b6: SWAP3 000022b7: SWAP2 000022b8: POP 000022b9: POP 000022ba: JUMP 000022bb: JUMPDEST 000022bc: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000022dd: PUSH1 0x00 000022df: MSTORE 000022e0: PUSH1 0x12 000022e2: PUSH1 0x04 000022e4: MSTORE 000022e5: PUSH1 0x24 000022e7: PUSH1 0x00 000022e9: REVERT 000022ea: JUMPDEST 000022eb: PUSH1 0x00 000022ed: PUSH2 0x22f5 000022f0: DUP3 000022f1: PUSH2 0x1cf3 000022f4: JUMP 000022f5: JUMPDEST 000022f6: SWAP2 000022f7: POP 000022f8: PUSH2 0x2300 000022fb: DUP4 000022fc: PUSH2 0x1cf3 000022ff: JUMP 00002300: JUMPDEST 00002301: SWAP3 00002302: POP 00002303: DUP3 00002304: PUSH2 0x2310 00002307: JUMPI 00002308: PUSH2 0x230f 0000230b: PUSH2 0x22bb 0000230e: JUMP 0000230f: JUMPDEST 00002310: JUMPDEST 00002311: DUP3 00002312: DUP3 00002313: DIV 00002314: SWAP1 00002315: POP 00002316: SWAP3 00002317: SWAP2 00002318: POP 00002319: POP 0000231a: JUMP 0000231b: JUMPDEST 0000231c: PUSH1 0x00 0000231e: PUSH1 0x60 00002320: DUP3 00002321: ADD 00002322: SWAP1 00002323: POP 00002324: PUSH2 0x2330 00002327: PUSH1 0x00 00002329: DUP4 0000232a: ADD 0000232b: DUP7 0000232c: PUSH2 0x1f23 0000232f: JUMP 00002330: JUMPDEST 00002331: PUSH2 0x233d 00002334: PUSH1 0x20 00002336: DUP4 00002337: ADD 00002338: DUP6 00002339: PUSH2 0x1f23 0000233c: JUMP 0000233d: JUMPDEST 0000233e: PUSH2 0x234a 00002341: PUSH1 0x40 00002343: DUP4 00002344: ADD 00002345: DUP5 00002346: PUSH2 0x1f23 00002349: JUMP 0000234a: JUMPDEST 0000234b: SWAP5 0000234c: SWAP4 0000234d: POP 0000234e: POP 0000234f: POP 00002350: POP 00002351: JUMP 00002352: JUMPDEST 00002353: PUSH1 0x00 00002355: DUP2 00002356: MLOAD 00002357: SWAP1 00002358: POP 00002359: SWAP2 0000235a: SWAP1 0000235b: POP 0000235c: JUMP 0000235d: JUMPDEST 0000235e: PUSH1 0x00 00002360: DUP2 00002361: SWAP1 00002362: POP 00002363: SWAP3 00002364: SWAP2 00002365: POP 00002366: POP 00002367: JUMP 00002368: JUMPDEST 00002369: PUSH1 0x00 0000236b: JUMPDEST 0000236c: DUP4 0000236d: DUP2 0000236e: LT 0000236f: ISZERO 00002370: PUSH2 0x2386 00002373: JUMPI 00002374: DUP1 00002375: DUP3 00002376: ADD 00002377: MLOAD 00002378: DUP2 00002379: DUP5 0000237a: ADD 0000237b: MSTORE 0000237c: PUSH1 0x20 0000237e: DUP2 0000237f: ADD 00002380: SWAP1 00002381: POP 00002382: PUSH2 0x236b 00002385: JUMP 00002386: JUMPDEST 00002387: PUSH1 0x00 00002389: DUP5 0000238a: DUP5 0000238b: ADD 0000238c: MSTORE 0000238d: POP 0000238e: POP 0000238f: POP 00002390: POP 00002391: JUMP 00002392: JUMPDEST 00002393: PUSH1 0x00 00002395: PUSH2 0x239d 00002398: DUP3 00002399: PUSH2 0x2352 0000239c: JUMP 0000239d: JUMPDEST 0000239e: PUSH2 0x23a7 000023a1: DUP2 000023a2: DUP6 000023a3: PUSH2 0x235d 000023a6: JUMP 000023a7: JUMPDEST 000023a8: SWAP4 000023a9: POP 000023aa: PUSH2 0x23b7 000023ad: DUP2 000023ae: DUP6 000023af: PUSH1 0x20 000023b1: DUP7 000023b2: ADD 000023b3: PUSH2 0x2368 000023b6: JUMP 000023b7: JUMPDEST 000023b8: DUP1 000023b9: DUP5 000023ba: ADD 000023bb: SWAP2 000023bc: POP 000023bd: POP 000023be: SWAP3 000023bf: SWAP2 000023c0: POP 000023c1: POP 000023c2: JUMP 000023c3: JUMPDEST 000023c4: PUSH1 0x00 000023c6: PUSH2 0x23cf 000023c9: DUP3 000023ca: DUP5 000023cb: PUSH2 0x2392 000023ce: JUMP 000023cf: JUMPDEST 000023d0: SWAP2 000023d1: POP 000023d2: DUP2 000023d3: SWAP1 000023d4: POP 000023d5: SWAP3 000023d6: SWAP2 000023d7: POP 000023d8: POP 000023d9: JUMP 000023da: INVALID 000023db: LOG2 000023dc: PUSH5 0x6970667358 000023e2: UNKNOWN(0x22) 000023e3: SLT 000023e4: KECCAK256 000023e5: SWAP8 000023e6: UNKNOWN(0xD7) 000023e7: UNKNOWN(0xAD) 000023e8: RETURNDATACOPY 000023e9: UNKNOWN(0x29) 000023ea: KECCAK256 000023eb: UNKNOWN(0xC6) 000023ec: PUSH18 0x88014fff7777915dac50fedcf6fd08f5956b 000023ff: UNKNOWN(0x2D) 00002400: DUP12 00002401: UNKNOWN(0x0D) 00002402: CALLDATALOAD 00002403: MOD 00002404: UNKNOWN(0xC3) 00002405: PUSH5 0x736f6c6343 0000240b: STOP 0000240c: ADDMOD 0000240d: SHL 0000240e: STOP 0000240f: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a
call_targets:
0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb"
],
"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": "0xb7f239a5",
"selector": "0xb7f239a5",
"calldata_variants": [
"0xb7f239a5",
"0xb7f239a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc2ed2ef9",
"selector": "0xc2ed2ef9",
"calldata_variants": [
"0xc2ed2ef9",
"0xc2ed2ef90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd6f23503",
"selector": "0xd6f23503",
"calldata_variants": [
"0xd6f23503",
"0xd6f235030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8de3e7",
"selector": "0xdf8de3e7",
"calldata_variants": [
"0xdf8de3e7",
"0xdf8de3e70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf7aa8057",
"selector": "0xf7aa8057",
"calldata_variants": [
"0xf7aa8057",
"0xf7aa80570000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9369198a",
"selector": "0x9369198a",
"calldata_variants": [
"0x9369198a",
"0x9369198a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2397,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2969,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4031,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a
call_targets:
0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x58952fd453e82b9e33b0c58b49a4d448346197115ffca8740504900874a3261a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x05fc48447e0ac445042823dd36e3e4ed2ffdf6cb"
],
"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": "0xb7f239a5",
"selector": "0xb7f239a5",
"calldata_variants": [
"0xb7f239a5",
"0xb7f239a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc2ed2ef9",
"selector": "0xc2ed2ef9",
"calldata_variants": [
"0xc2ed2ef9",
"0xc2ed2ef90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd6f23503",
"selector": "0xd6f23503",
"calldata_variants": [
"0xd6f23503",
"0xd6f235030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8de3e7",
"selector": "0xdf8de3e7",
"calldata_variants": [
"0xdf8de3e7",
"0xdf8de3e70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf7aa8057",
"selector": "0xf7aa8057",
"calldata_variants": [
"0xf7aa8057",
"0xf7aa80570000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9369198a",
"selector": "0x9369198a",
"calldata_variants": [
"0x9369198a",
"0x9369198a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2397,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2969,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4031,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| medium | other | codex | Unchecked JPGD transfers and 1:1 accounting enable balance desync with non-standard/fee tokens | 75 | no | — |
viewevidence_json{
"evidence": "`stake`, `unstake`, and `claimVestedJPGD` call `JPGD.transferFrom/transfer` directly and update accounting without checking the return value or actual received amount.",
"locations": [
"contracts/contracts/JPGDStaking.sol:86",
"contracts/contracts/JPGDStaking.sol:88",
"contracts/contracts/JPGDStaking.sol:108",
"contracts/contracts/JPGDStaking.sol:166"
],
"recommendation": "Use `SafeERC20.safeTransferFrom`/`safeTransfer` for JPGD and, if fee-on-transfer is possible, account by balance delta (credit only the amount actually received). Alternatively, explicitly restrict JPGD to a standard ERC20 that reverts on failure and has no transfer fees.",
"exploit_scenario": "If JPGD is fee-on-transfer or returns false without reverting, an attacker can call `stake` for 100 tokens while fewer (or zero) tokens are actually received. The contract still credits the full amount in `stakedJPGD`/`totalStakedJPGD`, letting the attacker over-claim treasury assets and vested JPGD. Similarly, `unstake`/`claimVestedJPGD` can update state even if a transfer silently fails, leading to loss or insolvency."
}
|
| low | access_control | codex | Owner can withdraw any token, breaking solvency for stakers/claimants | 65 | no | — |
viewevidence_json{
"evidence": "`withdrawToken` has no restrictions beyond `onlyOwner` and can transfer any token out of the contract.",
"locations": [
"contracts/contracts/JPGDStaking.sol:228",
"contracts/contracts/JPGDStaking.sol:231",
"contracts/contracts/JPGDStaking.sol:232"
],
"recommendation": "Limit withdrawals to non-staked, non-claimable assets; enforce a timelock/multisig; or remove this function and rely on a separate recovery mechanism.",
"exploit_scenario": "A malicious or compromised owner can call `withdrawToken` to drain JPGD or claimable assets, leaving the contract unable to honor unstake/claim flows and effectively rugging stakers."
}
|
| low | access_control | codex | Owner-controlled vesting start can indefinitely lock staked JPGD after snapshot | 65 | no | — |
viewevidence_json{
"evidence": "`snapshot` sets `startingBlock` to 0, `claimVestedJPGD` reverts when it is 0, and only `increaseClaimableTokenAmount` sets it.",
"locations": [
"contracts/contracts/JPGDStaking.sol:153",
"contracts/contracts/JPGDStaking.sol:182",
"contracts/contracts/JPGDStaking.sol:213",
"contracts/contracts/JPGDStaking.sol:214"
],
"recommendation": "Set `startingBlock` at `snapshot`, or allow a permissionless start after a deadline; alternatively, allow users to withdraw if vesting has not started within a bounded time.",
"exploit_scenario": "After `snapshot`, users cannot unstake and `claimVestedJPGD` reverts until `vestingSchedule.startingBlock` is set. Only the owner sets it via the first `increaseClaimableTokenAmount` call, so the owner can pause deposits and then never start vesting, locking user funds indefinitely."
}
|