019bab3d-f2be-72f8-a06f-15a39da6a9c7
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 |
|---|---|---|---|---|
| 39159 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39160 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39161 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39162 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39163 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39164 | detector.run | complete | 1 / 3 | 3 months ago |
| 39165 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39256 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39257 | tool.slither | failed | 2 / 2 | 3 months ago |
{
"status": "not_proxy"
}
Traceback (most recent call last):
File "/var/www/tripwire/worker/worker.py", line 198, in main
payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
stdout_text, stderr_text, result_json = _run_slither(
~~~~~~~~~~~~^
workspace,
^^^^^^^^^^
...<4 lines>...
target_path=target_path,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-y1i9ydah)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-y1i9ydah)
'forge' returned non-zero exit code 1
Error: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol: No solc version exists that matches the version requirement: ^0.8.21
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol: No solc version exists that matches the version requirement: ^0.8.21
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol: No solc version exists that matches the version requirement: ^0.8.21
stderr: Encountered invalid solc version in lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol: No solc version exists that matches the version requirement: ^0.8.21
Traceback (most recent call last):
File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
sys.exit(main())
~~~~^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
main_impl(all_detector_classes=detectors, all_printer_classes=printers)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
) = process_all(filename, args, detector_classes, printer_classes)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
compilations = compile_all(target, **vars(args))
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
compilations.append(CryticCompile(target, **kwargs))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
self._compile(**kwargs)
~~~~~~~~~~~~~^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
self._platform.compile(self, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
hardhat_like_parsing(
~~~~~~~~~~~~~~~~~~~~^
crytic_compile, str(self._target), build_directory, str(self._project_root)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-y1i9ydah/out/build-info is not a directory.
{"no_findings":false,"summary":"Found 3 issues: old committees remain authorized after rotation, oracle-based limits can fail open on invalid prices, and StableSwap accounting assumes exact token transfers.","findings":[{"severity":"high","category":"access_control","title":"Old committee members remain authorized after rotation","exploit_scenario":"After the owner rotates the committee, members of a previous committee can still call `receiveRequest` with their old `_committeeId` and arbitrary transfer parameters. Because the contract only checks membership for the supplied `_committeeId`, the old committee can reach its historical threshold and mint/unlock tokens without the current committee’s approval.","recommendation":"Gate `receiveRequest` to only accept the current `committeeId`, or maintain an explicit allowlist with expiry for previous committees and disable old ones on rotation. Consider clearing or marking old committee memberships as inactive.","evidence":"`setCommittee` increments `committeeId` and only adds new members, while `receiveRequest` accepts any `_committeeId` and checks membership/threshold for that id.","locations":["contracts/AbstractMost.sol:302","contracts/AbstractMost.sol:333","contracts/AbstractMost.sol:367"]},{"severity":"medium","category":"oracle","title":"Oracle price validation missing allows minimum limit bypass or revert","exploit_scenario":"If the Chainlink oracle returns 0 or a negative price, `minimumTransferAmount` divides by `uint256(usdPrice)` which can revert or underflow to a huge value. In `Most.checkTransferAllowed`, any revert is swallowed, so the transfer limit is effectively disabled during oracle outages or manipulations.","recommendation":"Validate `usdPrice > 0`, check `updatedAt`/`answeredInRound` for freshness, and avoid fail-open behavior on oracle errors (or make it configurable). If the intent is to enforce a minimum, consider `Math.max` instead of `Math.min`.","evidence":"`minimumTransferAmount` uses `latestRoundData()` without validating price or staleness and casts `usdPrice` to `uint256`; `Most.checkTransferAllowed` ignores errors and allows transfers.","locations":["contracts/TransferLimit.sol:67","contracts/TransferLimit.sol:70","contracts/Most.sol:41"]},{"severity":"low","category":"math","title":"StableSwap accounting assumes exact token transfers (fee-on-transfer breaks invariants)","exploit_scenario":"If a pool coin is fee-on-transfer or deflationary, the contract updates internal `balances` using the nominal `amounts`/`amount_in`, but fewer tokens are actually received. This can inflate pool accounting and allow LPs to mint/burn against overstated balances, potentially draining the pool.","recommendation":"Restrict pool coins to standard ERC20s with exact transfers (enforce in factory) or measure actual balances before/after transfers and update `balances` by the delta.","evidence":"`add_liquidity` and `exchange` update `balances` by the requested amount and then call `transfer_in`/`safeTransferFrom` without reconciling actual received amounts.","locations":["contracts/StableSwap/StableSwapTwoPool.sol:322","contracts/StableSwap/StableSwapTwoPool.sol:554","contracts/StableSwap/StableSwapTwoPool.sol:784"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-gdeltt8j
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac43-4a9c-7012-93d9-66c372374c71
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Searching for AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-gdeltt8j succeeded in 6ms:
AUDIT_BUNDLE.txt
@chainlink
codex-output-schema.json
contracts
@openzeppelin
@openzeppelin-4.5.0
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-gdeltt8j succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: @chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// solhint-disable-next-line interface-starts-with-i
interface AggregatorV3Interface {
function decimals() external view returns (uint8);
function description() external view returns (string memory);
function version() external view returns (uint256);
function getRoundData(
uint80 _roundId
) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
thinking
**Identifying first-party code in audit bundle**
exec
/bin/bash -lc 'rg -n "''^FILE: contracts/" AUDIT_BUNDLE.txt' in /tmp/codex-gdeltt8j succeeded in 20ms:
1038:FILE: contracts/AbstractMost.sol
1507:FILE: contracts/ITransferLimit.sol
1523:FILE: contracts/IWETH9.sol
1538:FILE: contracts/IWrappedToken.sol
1556:FILE: contracts/MockOracle.sol
1586:FILE: contracts/Most.sol
1643:FILE: contracts/MostL2.sol
1983:FILE: contracts/StableSwap/IStableSwapLP.sol
2002:FILE: contracts/StableSwap/StableSwapLP.sol
2038:FILE: contracts/StableSwap/StableSwapTwoPool.sol
2998:FILE: contracts/Token.sol
3027:FILE: contracts/TransferLimit.sol
3118:FILE: contracts/WrappedToken.sol
thinking
**Reviewing key contract files**
exec
/bin/bash -lc "sed -n '1038,1506p' AUDIT_BUNDLE.txt" in /tmp/codex-gdeltt8j succeeded in 28ms:
FILE: contracts/AbstractMost.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
import {IWETH9} from "./IWETH9.sol";
import {IWrappedToken} from "./IWrappedToken.sol";
/// @title Most
/// @author Cardinal Cryptography
abstract contract AbstractMost is
Initializable,
UUPSUpgradeable,
thinking
**Requesting additional files**
exec
/bin/bash -lc "sed -n '1507,1982p' AUDIT_BUNDLE.txt" in /tmp/codex-gdeltt8j succeeded in 18ms:
FILE: contracts/ITransferLimit.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface ITransferLimit {
function isRequestAllowed(
address _token,
uint256 _amount
) external view returns (bool);
}
================================================================================
FILE: contracts/IWETH9.sol
================================================================================
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.2;
thinking
**Searching for StableSwap files**
exec
/bin/bash -lc "sed -n '1983,2997p' AUDIT_BUNDLE.txt" in /tmp/codex-gdeltt8j succeeded in 6ms:
FILE: contracts/StableSwap/IStableSwapLP.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
interface IStableSwapLP {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
function mint(address _to, uint256 _amount) external;
function burnFrom(address _to, uint256 _amount) external;
function setMinter(address _newMinter) external;
}
================================================================================
FILE: contracts/StableSwap/StableSwapLP.sol
thinking
**Analyzing first-party contract vulnerabilities**
thinking
**Evaluating reentrancy and oracle manipulation risks**
I’m exploring edge cases where oracle failures let transfer limits be bypassed through fail-open behavior. I’m also checking StableSwapTwoPool’s reentrancy guards and token transfer flows, focusing on nuanced reentrancy paths and approval patterns. There’s a lot to unpack, especially around fallback calls, token fee-on-transfer assumptions, and fee handling in MostL2. Let’s keep tracking how state updates and external calls interplay to catch subtle vulnerabilities.
thinking
**Analyzing swap, committee, and oracle details**
I'm examining handling of low-level calls in MostL2 swaps, especially unchecked approval returns and fallback behaviors on call failures. The committee access control and signature threshold logic around committee rotation also draws attention. Oracle data usage in TransferLimit and fee handling in MostL2 show nuanced risks to explore, along with potential accounting breaks from fee-on-transfer tokens in StableSwap pools. There is a lot here that ties together cross-contract interactions and assumptions.
exec
/bin/bash -lc 'nl -ba contracts/AbstractMost.sol' in /tmp/codex-gdeltt8j succeeded in 13ms:
1 // SPDX-License-Identifier: MIT
2
3 pragma solidity ^0.8.20;
4
5 import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6 import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7 import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
8 import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
9 import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
10 import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
11 import {IWETH9} from "./IWETH9.sol";
12 import {IWrappedToken} from "./IWrappedToken.sol";
13
14 /// @title Most
15 /// @author Cardinal Cryptography
16 abstract contract AbstractMost is
17 Initializable,
18 UUPSUpgradeable,
19 Ownable2StepUpgradeable,
20 PausableUpgradeable
thinking
**Transferring line numbers for TransferLimit**
exec
/bin/bash -lc 'nl -ba contracts/TransferLimit.sol' in /tmp/codex-gdeltt8j succeeded in 6ms:
1 // SPDX-License-Identifier: MIT
2
3 pragma solidity ^0.8.20;
4
5 import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
6 import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
7 import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol";
8 import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
9 import {ITransferLimit} from "./ITransferLimit.sol";
10
11 /// @title TransferLimit
12 /// @author Cardinal Cryptography
13 /// @notice Implements a transfer limit based on pricing data from Chainlink oracles
14 contract TransferLimit is
15 ITransferLimit,
16 UUPSUpgradeable,
17 Ownable2StepUpgradeable
18 {
19 mapping(address => uint256) public defaultMinima;
20
thinking
**Searching for checkTransferAllowed implementation**
exec
/bin/bash -lc 'nl -ba contracts/Most.sol' in /tmp/codex-gdeltt8j succeeded in 26ms:
1 // SPDX-License-Identifier: MIT
2
3 pragma solidity ^0.8.20;
4
5 import {AbstractMost} from "./AbstractMost.sol";
6 import {ITransferLimit} from "./ITransferLimit.sol";
7
8 /// @title Most
9 /// @author Cardinal Cryptography
10 contract Most is AbstractMost {
11 ITransferLimit public transferLimit;
12
13 /// @custom:oz-upgrades-unsafe-allow constructor
14 constructor() {
15 _disableInitializers();
16 }
17
18 function setTransferLimitContract(
19 ITransferLimit _transferLimit
20 ) external onlyOwner {
thinking
**Locating line numbers for StableSwapTwoPool methods**
exec
/bin/bash -lc "nl -ba contracts/StableSwap/StableSwapTwoPool.sol | sed -n '250,520p'" in /tmp/codex-gdeltt8j succeeded in 12ms:
250 D_P = (D_P * D) / (xp[k] * N_COINS); // If division by 0, this will be borked: only withdrawal will work. And that is good
251 }
252 Dprev = D;
253 D =
254 ((Ann * S + D_P * N_COINS) * D) /
255 ((Ann - 1) * D + (N_COINS + 1) * D_P);
256 // Equality with the precision of 1
257 if (D > Dprev) {
258 if (D - Dprev <= 1) {
259 break;
260 }
261 } else {
262 if (Dprev - D <= 1) {
263 break;
264 }
265 }
266 }
267 return D;
268 }
269
thinking
**Planning to capture line numbers around transfer_in**
exec
/bin/bash -lc "nl -ba contracts/StableSwap/StableSwapTwoPool.sol | sed -n '520,760p'" in /tmp/codex-gdeltt8j succeeded in 30ms:
520 }
521
522 function exchange(
523 uint256 source_token,
524 uint256 dest_token,
525 uint256 amount_in,
526 uint256 amount_out
527 ) internal returns (uint256) {
528 require(!is_killed, "Killed");
529 if (!support_native) {
530 require(msg.value == 0, "Inconsistent quantity"); // Avoid sending native by mistake.
531 }
532
533 uint256[N_COINS] memory old_balances = balances;
534 uint256[N_COINS] memory xp = _xp_mem(old_balances);
535
536 uint256 x = xp[source_token] +
537 (amount_in * RATES[source_token]) /
538 PRECISION;
539 uint256 y = get_y(source_token, dest_token, x, xp);
thinking
**Considering adding line numbers**
exec
/bin/bash -lc "nl -ba contracts/StableSwap/StableSwapTwoPool.sol | sed -n '760,980p'" in /tmp/codex-gdeltt8j succeeded in 6ms:
760 ) external nonReentrant {
761 // Remove _amount of liquidity all in a form of coin i
762 require(!is_killed, "Killed");
763 (uint256 dy, uint256 dy_fee) = _calc_withdraw_one_coin(
764 _token_amount,
765 i
766 );
767 require(dy >= min_amount, "Not enough coins removed");
768
769 balances[i] -= (dy + (dy_fee * admin_fee) / FEE_DENOMINATOR);
770 token.burnFrom(msg.sender, _token_amount); // dev: insufficient funds
771 transfer_out(coins[i], dy);
772
773 emit RemoveLiquidityOne(msg.sender, i, _token_amount, dy);
774 }
775
776 function transfer_out(address coin_address, uint256 value) internal {
777 if (coin_address == NATIVE_ADDRESS) {
778 _safeTransferNative(msg.sender, value);
779 } else {
thinking
**Summarizing security issues for JSON report**
I've gathered detailed findings on three main issues: old committees staying authorized after rotation (high severity, access control), oracle price validation missing which allows bypassing transfer limits (medium severity, oracle), and StableSwap pool accounting assuming exact token transfers risking imbalance (low severity, math). I’m preparing a precise JSON report that covers severity, categories, exploit scenarios, recommendations, evidence, and file references per the codex output schema.
codex
{"no_findings":false,"summary":"Found 3 issues: old committees remain authorized after rotation, oracle-based limits can fail open on invalid prices, and StableSwap accounting assumes exact token transfers.","findings":[{"severity":"high","category":"access_control","title":"Old committee members remain authorized after rotation","exploit_scenario":"After the owner rotates the committee, members of a previous committee can still call `receiveRequest` with their old `_committeeId` and arbitrary transfer parameters. Because the contract only checks membership for the supplied `_committeeId`, the old committee can reach its historical threshold and mint/unlock tokens without the current committee’s approval.","recommendation":"Gate `receiveRequest` to only accept the current `committeeId`, or maintain an explicit allowlist with expiry for previous committees and disable old ones on rotation. Consider clearing or marking old committee memberships as inactive.","evidence":"`setCommittee` increments `committeeId` and only adds new members, while `receiveRequest` accepts any `_committeeId` and checks membership/threshold for that id.","locations":["contracts/AbstractMost.sol:302","contracts/AbstractMost.sol:333","contracts/AbstractMost.sol:367"]},{"severity":"medium","category":"oracle","title":"Oracle price validation missing allows minimum limit bypass or revert","exploit_scenario":"If the Chainlink oracle returns 0 or a negative price, `minimumTransferAmount` divides by `uint256(usdPrice)` which can revert or underflow to a huge value. In `Most.checkTransferAllowed`, any revert is swallowed, so the transfer limit is effectively disabled during oracle outages or manipulations.","recommendation":"Validate `usdPrice > 0`, check `updatedAt`/`answeredInRound` for freshness, and avoid fail-open behavior on oracle errors (or make it configurable). If the intent is to enforce a minimum, consider `Math.max` instead of `Math.min`.","evidence":"`minimumTransferAmount` uses `latestRoundData()` without validating price or staleness and casts `usdPrice` to `uint256`; `Most.checkTransferAllowed` ignores errors and allows transfers.","locations":["contracts/TransferLimit.sol:67","contracts/TransferLimit.sol:70","contracts/Most.sol:41"]},{"severity":"low","category":"math","title":"StableSwap accounting assumes exact token transfers (fee-on-transfer breaks invariants)","exploit_scenario":"If a pool coin is fee-on-transfer or deflationary, the contract updates internal `balances` using the nominal `amounts`/`amount_in`, but fewer tokens are actually received. This can inflate pool accounting and allow LPs to mint/burn against overstated balances, potentially draining the pool.","recommendation":"Restrict pool coins to standard ERC20s with exact transfers (enforce in factory) or measure actual balances before/after transfers and update `balances` by the delta.","evidence":"`add_liquidity` and `exchange` update `balances` by the requested amount and then call `transfer_in`/`safeTransferFrom` without reconciling actual received amounts.","locations":["contracts/StableSwap/StableSwapTwoPool.sol:322","contracts/StableSwap/StableSwapTwoPool.sol:554","contracts/StableSwap/StableSwapTwoPool.sol:784"]}]}
tokens used
59,385
{
"codex": {
"ran_at": "2026-01-11T08:58:58.113184+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 43,
"import_count": 40,
"first_party_contracts_count": 22
},
"summary": "Found 3 issues: old committees remain authorized after rotation, oracle-based limits can fail open on invalid prices, and StableSwap accounting assumes exact token transfers.",
"raw_final": {
"summary": "Found 3 issues: old committees remain authorized after rotation, oracle-based limits can fail open on invalid prices, and StableSwap accounting assumes exact token transfers.",
"findings": [
{
"title": "Old committee members remain authorized after rotation",
"category": "access_control",
"evidence": "`setCommittee` increments `committeeId` and only adds new members, while `receiveRequest` accepts any `_committeeId` and checks membership/threshold for that id.",
"severity": "high",
"locations": [
"contracts/AbstractMost.sol:302",
"contracts/AbstractMost.sol:333",
"contracts/AbstractMost.sol:367"
],
"recommendation": "Gate `receiveRequest` to only accept the current `committeeId`, or maintain an explicit allowlist with expiry for previous committees and disable old ones on rotation. Consider clearing or marking old committee memberships as inactive.",
"exploit_scenario": "After the owner rotates the committee, members of a previous committee can still call `receiveRequest` with their old `_committeeId` and arbitrary transfer parameters. Because the contract only checks membership for the supplied `_committeeId`, the old committee can reach its historical threshold and mint/unlock tokens without the current committee\u2019s approval."
},
{
"title": "Oracle price validation missing allows minimum limit bypass or revert",
"category": "oracle",
"evidence": "`minimumTransferAmount` uses `latestRoundData()` without validating price or staleness and casts `usdPrice` to `uint256`; `Most.checkTransferAllowed` ignores errors and allows transfers.",
"severity": "medium",
"locations": [
"contracts/TransferLimit.sol:67",
"contracts/TransferLimit.sol:70",
"contracts/Most.sol:41"
],
"recommendation": "Validate `usdPrice > 0`, check `updatedAt`/`answeredInRound` for freshness, and avoid fail-open behavior on oracle errors (or make it configurable). If the intent is to enforce a minimum, consider `Math.max` instead of `Math.min`.",
"exploit_scenario": "If the Chainlink oracle returns 0 or a negative price, `minimumTransferAmount` divides by `uint256(usdPrice)` which can revert or underflow to a huge value. In `Most.checkTransferAllowed`, any revert is swallowed, so the transfer limit is effectively disabled during oracle outages or manipulations."
},
{
"title": "StableSwap accounting assumes exact token transfers (fee-on-transfer breaks invariants)",
"category": "math",
"evidence": "`add_liquidity` and `exchange` update `balances` by the requested amount and then call `transfer_in`/`safeTransferFrom` without reconciling actual received amounts.",
"severity": "low",
"locations": [
"contracts/StableSwap/StableSwapTwoPool.sol:322",
"contracts/StableSwap/StableSwapTwoPool.sol:554",
"contracts/StableSwap/StableSwapTwoPool.sol:784"
],
"recommendation": "Restrict pool coins to standard ERC20s with exact transfers (enforce in factory) or measure actual balances before/after transfers and update `balances` by the delta.",
"exploit_scenario": "If a pool coin is fee-on-transfer or deflationary, the contract updates internal `balances` using the nominal `amounts`/`amount_in`, but fewer tokens are actually received. This can inflate pool accounting and allow LPs to mint/burn against overstated balances, potentially draining the pool."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0233 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x790f3a47 00000019: GT 0000001a: PUSH2 0x012e 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xbe4865ec 00000024: GT 00000025: PUSH2 0x00ab 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe30c3978 0000002f: GT 00000030: PUSH2 0x006f 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe30c3978 0000003a: EQ 0000003b: PUSH2 0x06f7 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf20f5108 00000045: EQ 00000046: PUSH2 0x070c 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2cda82e 00000050: EQ 00000051: PUSH2 0x072c 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf2fde38b 0000005b: EQ 0000005c: PUSH2 0x074c 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xf9432517 00000066: EQ 00000067: PUSH2 0x076c 0000006a: JUMPI 0000006b: PUSH1 0x00 0000006d: DUP1 0000006e: REVERT 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0xbe4865ec 00000076: EQ 00000077: PUSH2 0x0647 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xbe8f909a 00000081: EQ 00000082: PUSH2 0x0667 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xc1b4a1e3 0000008c: EQ 0000008d: PUSH2 0x0687 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xce0fa5a9 00000097: EQ 00000098: PUSH2 0x06a7 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xdfda7570 000000a2: EQ 000000a3: PUSH2 0x06d7 000000a6: JUMPI 000000a7: PUSH1 0x00 000000a9: DUP1 000000aa: REVERT 000000ab: JUMPDEST 000000ac: DUP1 000000ad: PUSH4 0x8da5cb5b 000000b2: GT 000000b3: PUSH2 0x00f2 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x8da5cb5b 000000bd: EQ 000000be: PUSH2 0x055e 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x905b502d 000000c8: EQ 000000c9: PUSH2 0x0573 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xa6bec03f 000000d3: EQ 000000d4: PUSH2 0x0593 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0xa91e5554 000000de: EQ 000000df: PUSH2 0x05c0 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xad3cb1cc 000000e9: EQ 000000ea: PUSH2 0x0609 000000ed: JUMPI 000000ee: PUSH1 0x00 000000f0: DUP1 000000f1: REVERT 000000f2: JUMPDEST 000000f3: DUP1 000000f4: PUSH4 0x790f3a47 000000f9: EQ 000000fa: PUSH2 0x04d1 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x79ba5097 00000104: EQ 00000105: PUSH2 0x04f1 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x7a6c5fc4 0000010f: EQ 00000110: PUSH2 0x0506 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x7c1a0302 0000011a: EQ 0000011b: PUSH2 0x0533 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x8456cb59 00000125: EQ 00000126: PUSH2 0x0549 00000129: JUMPI 0000012a: PUSH1 0x00 0000012c: DUP1 0000012d: REVERT 0000012e: JUMPDEST 0000012f: DUP1 00000130: PUSH4 0x2795ad20 00000135: GT 00000136: PUSH2 0x01bc 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x4f1ef286 00000140: GT 00000141: PUSH2 0x0180 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x4f1ef286 0000014b: EQ 0000014c: PUSH2 0x044f 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x52d1902d 00000156: EQ 00000157: PUSH2 0x0462 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x5adcaa7c 00000161: EQ 00000162: PUSH2 0x0477 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x5c975abb 0000016c: EQ 0000016d: PUSH2 0x0497 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x715018a6 00000177: EQ 00000178: PUSH2 0x04bc 0000017b: JUMPI 0000017c: PUSH1 0x00 0000017e: DUP1 0000017f: REVERT 00000180: JUMPDEST 00000181: DUP1 00000182: PUSH4 0x2795ad20 00000187: EQ 00000188: PUSH2 0x03b7 0000018b: JUMPI 0000018c: DUP1 0000018d: PUSH4 0x2ceb1b06 00000192: EQ 00000193: PUSH2 0x03e4 00000196: JUMPI 00000197: DUP1 00000198: PUSH4 0x3f4ba83a 0000019d: EQ 0000019e: PUSH2 0x03fa 000001a1: JUMPI 000001a2: DUP1 000001a3: PUSH4 0x41fbbb4b 000001a8: EQ 000001a9: PUSH2 0x040f 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x4f0e0ef3 000001b3: EQ 000001b4: PUSH2 0x042f 000001b7: JUMPI 000001b8: PUSH1 0x00 000001ba: DUP1 000001bb: REVERT 000001bc: JUMPDEST 000001bd: DUP1 000001be: PUSH4 0x0904bccd 000001c3: GT 000001c4: PUSH2 0x0203 000001c7: JUMPI 000001c8: DUP1 000001c9: PUSH4 0x0904bccd 000001ce: EQ 000001cf: PUSH2 0x0313 000001d2: JUMPI 000001d3: DUP1 000001d4: PUSH4 0x091d2788 000001d9: EQ 000001da: PUSH2 0x0326 000001dd: JUMPI 000001de: DUP1 000001df: PUSH4 0x0a6fc2d2 000001e4: EQ 000001e5: PUSH2 0x034a 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0x1171bda9 000001ef: EQ 000001f0: PUSH2 0x036a 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x16975d16 000001fa: EQ 000001fb: PUSH2 0x038a 000001fe: JUMPI 000001ff: PUSH1 0x00 00000201: DUP1 00000202: REVERT 00000203: JUMPDEST 00000204: DUP1 00000205: PUSH3 0xdd78d3 00000209: EQ 0000020a: PUSH2 0x0256 0000020d: JUMPI 0000020e: DUP1 0000020f: PUSH4 0x0252028a 00000214: EQ 00000215: PUSH2 0x0276 00000218: JUMPI 00000219: DUP1 0000021a: PUSH4 0x0439ad41 0000021f: EQ 00000220: PUSH2 0x0296 00000223: JUMPI 00000224: DUP1 00000225: PUSH4 0x07f61473 0000022a: EQ 0000022b: PUSH2 0x02d3 0000022e: JUMPI 0000022f: PUSH1 0x00 00000231: DUP1 00000232: REVERT 00000233: JUMPDEST 00000234: CALLDATASIZE 00000235: PUSH2 0x0251 00000238: JUMPI 00000239: PUSH1 0x02 0000023b: SLOAD 0000023c: PUSH1 0x01 0000023e: PUSH1 0x01 00000240: PUSH1 0xa0 00000242: SHL 00000243: SUB 00000244: AND 00000245: CALLER 00000246: EQ 00000247: PUSH2 0x024f 0000024a: JUMPI 0000024b: PUSH1 0x00 0000024d: DUP1 0000024e: REVERT 0000024f: JUMPDEST 00000250: STOP 00000251: JUMPDEST 00000252: PUSH1 0x00 00000254: DUP1 00000255: REVERT 00000256: JUMPDEST 00000257: CALLVALUE 00000258: DUP1 00000259: ISZERO 0000025a: PUSH2 0x0262 0000025d: JUMPI 0000025e: PUSH1 0x00 00000260: DUP1 00000261: REVERT 00000262: JUMPDEST 00000263: POP 00000264: PUSH2 0x024f 00000267: PUSH2 0x0271 0000026a: CALLDATASIZE 0000026b: PUSH1 0x04 0000026d: PUSH2 0x215b 00000270: JUMP 00000271: JUMPDEST 00000272: PUSH2 0x078c 00000275: JUMP 00000276: JUMPDEST 00000277: CALLVALUE 00000278: DUP1 00000279: ISZERO 0000027a: PUSH2 0x0282 0000027d: JUMPI 0000027e: PUSH1 0x00 00000280: DUP1 00000281: REVERT 00000282: JUMPDEST 00000283: POP 00000284: PUSH2 0x024f 00000287: PUSH2 0x0291 0000028a: CALLDATASIZE 0000028b: PUSH1 0x04 0000028d: PUSH2 0x21e0 00000290: JUMP 00000291: JUMPDEST 00000292: PUSH2 0x07d6 00000295: JUMP 00000296: JUMPDEST 00000297: CALLVALUE 00000298: DUP1 00000299: ISZERO 0000029a: PUSH2 0x02a2 0000029d: JUMPI 0000029e: PUSH1 0x00 000002a0: DUP1 000002a1: REVERT 000002a2: JUMPDEST 000002a3: POP 000002a4: PUSH1 0x0a 000002a6: SLOAD 000002a7: PUSH2 0x02b6 000002aa: SWAP1 000002ab: PUSH1 0x01 000002ad: PUSH1 0x01 000002af: PUSH1 0xa0 000002b1: SHL 000002b2: SUB 000002b3: AND 000002b4: DUP2 000002b5: JUMP 000002b6: JUMPDEST 000002b7: PUSH1 0x40 000002b9: MLOAD 000002ba: PUSH1 0x01 000002bc: PUSH1 0x01 000002be: PUSH1 0xa0 000002c0: SHL 000002c1: SUB 000002c2: SWAP1 000002c3: SWAP2 000002c4: AND 000002c5: DUP2 000002c6: MSTORE 000002c7: PUSH1 0x20 000002c9: ADD 000002ca: JUMPDEST 000002cb: PUSH1 0x40 000002cd: MLOAD 000002ce: DUP1 000002cf: SWAP2 000002d0: SUB 000002d1: SWAP1 000002d2: RETURN 000002d3: JUMPDEST 000002d4: CALLVALUE 000002d5: DUP1 000002d6: ISZERO 000002d7: PUSH2 0x02df 000002da: JUMPI 000002db: PUSH1 0x00 000002dd: DUP1 000002de: REVERT 000002df: JUMPDEST 000002e0: POP 000002e1: PUSH2 0x0303 000002e4: PUSH2 0x02ee 000002e7: CALLDATASIZE 000002e8: PUSH1 0x04 000002ea: PUSH2 0x2241 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH1 0x09 000002f1: PUSH1 0x20 000002f3: MSTORE 000002f4: PUSH1 0x00 000002f6: SWAP1 000002f7: DUP2 000002f8: MSTORE 000002f9: PUSH1 0x40 000002fb: SWAP1 000002fc: KECCAK256 000002fd: SLOAD 000002fe: PUSH1 0xff 00000300: AND 00000301: DUP2 00000302: JUMP 00000303: JUMPDEST 00000304: PUSH1 0x40 00000306: MLOAD 00000307: SWAP1 00000308: ISZERO 00000309: ISZERO 0000030a: DUP2 0000030b: MSTORE 0000030c: PUSH1 0x20 0000030e: ADD 0000030f: PUSH2 0x02ca 00000312: JUMP 00000313: JUMPDEST 00000314: PUSH2 0x024f 00000317: PUSH2 0x0321 0000031a: CALLDATASIZE 0000031b: PUSH1 0x04 0000031d: PUSH2 0x225e 00000320: JUMP 00000321: JUMPDEST 00000322: PUSH2 0x0844 00000325: JUMP 00000326: JUMPDEST 00000327: CALLVALUE 00000328: DUP1 00000329: ISZERO 0000032a: PUSH2 0x0332 0000032d: JUMPI 0000032e: PUSH1 0x00 00000330: DUP1 00000331: REVERT 00000332: JUMPDEST 00000333: POP 00000334: PUSH2 0x033c 00000337: PUSH2 0x0dac 0000033a: DUP2 0000033b: JUMP 0000033c: JUMPDEST 0000033d: PUSH1 0x40 0000033f: MLOAD 00000340: SWAP1 00000341: DUP2 00000342: MSTORE 00000343: PUSH1 0x20 00000345: ADD 00000346: PUSH2 0x02ca 00000349: JUMP 0000034a: JUMPDEST 0000034b: CALLVALUE 0000034c: DUP1 0000034d: ISZERO 0000034e: PUSH2 0x0356 00000351: JUMPI 00000352: PUSH1 0x00 00000354: DUP1 00000355: REVERT 00000356: JUMPDEST 00000357: POP 00000358: PUSH2 0x0303 0000035b: PUSH2 0x0365 0000035e: CALLDATASIZE 0000035f: PUSH1 0x04 00000361: PUSH2 0x2277 00000364: JUMP 00000365: JUMPDEST 00000366: PUSH2 0x09ea 00000369: JUMP 0000036a: JUMPDEST 0000036b: CALLVALUE 0000036c: DUP1 0000036d: ISZERO 0000036e: PUSH2 0x0376 00000371: JUMPI 00000372: PUSH1 0x00 00000374: DUP1 00000375: REVERT 00000376: JUMPDEST 00000377: POP 00000378: PUSH2 0x024f 0000037b: PUSH2 0x0385 0000037e: CALLDATASIZE 0000037f: PUSH1 0x04 00000381: PUSH2 0x22a7 00000384: JUMP 00000385: JUMPDEST 00000386: PUSH2 0x0a4e 00000389: JUMP 0000038a: JUMPDEST 0000038b: CALLVALUE 0000038c: DUP1 0000038d: ISZERO 0000038e: PUSH2 0x0396 00000391: JUMPI 00000392: PUSH1 0x00 00000394: DUP1 00000395: REVERT 00000396: JUMPDEST 00000397: POP 00000398: PUSH2 0x033c 0000039b: PUSH2 0x03a5 0000039e: CALLDATASIZE 0000039f: PUSH1 0x04 000003a1: PUSH2 0x225e 000003a4: JUMP 000003a5: JUMPDEST 000003a6: PUSH1 0x08 000003a8: PUSH1 0x20 000003aa: MSTORE 000003ab: PUSH1 0x00 000003ad: SWAP1 000003ae: DUP2 000003af: MSTORE 000003b0: PUSH1 0x40 000003b2: SWAP1 000003b3: KECCAK256 000003b4: SLOAD 000003b5: DUP2 000003b6: JUMP 000003b7: JUMPDEST 000003b8: CALLVALUE 000003b9: DUP1 000003ba: ISZERO 000003bb: PUSH2 0x03c3 000003be: JUMPI 000003bf: PUSH1 0x00 000003c1: DUP1 000003c2: REVERT 000003c3: JUMPDEST 000003c4: POP 000003c5: PUSH2 0x033c 000003c8: PUSH2 0x03d2 000003cb: CALLDATASIZE 000003cc: PUSH1 0x04 000003ce: PUSH2 0x225e 000003d1: JUMP 000003d2: JUMPDEST 000003d3: PUSH1 0x04 000003d5: PUSH1 0x20 000003d7: MSTORE 000003d8: PUSH1 0x00 000003da: SWAP1 000003db: DUP2 000003dc: MSTORE 000003dd: PUSH1 0x40 000003df: SWAP1 000003e0: KECCAK256 000003e1: SLOAD 000003e2: DUP2 000003e3: JUMP 000003e4: JUMPDEST 000003e5: CALLVALUE 000003e6: DUP1 000003e7: ISZERO 000003e8: PUSH2 0x03f0 000003eb: JUMPI 000003ec: PUSH1 0x00 000003ee: DUP1 000003ef: REVERT 000003f0: JUMPDEST 000003f1: POP 000003f2: PUSH2 0x033c 000003f5: PUSH1 0x01 000003f7: SLOAD 000003f8: DUP2 000003f9: JUMP 000003fa: JUMPDEST 000003fb: CALLVALUE 000003fc: DUP1 000003fd: ISZERO 000003fe: PUSH2 0x0406 00000401: JUMPI 00000402: PUSH1 0x00 00000404: DUP1 00000405: REVERT 00000406: JUMPDEST 00000407: POP 00000408: PUSH2 0x024f 0000040b: PUSH2 0x0a6f 0000040e: JUMP 0000040f: JUMPDEST 00000410: CALLVALUE 00000411: DUP1 00000412: ISZERO 00000413: PUSH2 0x041b 00000416: JUMPI 00000417: PUSH1 0x00 00000419: DUP1 0000041a: REVERT 0000041b: JUMPDEST 0000041c: POP 0000041d: PUSH2 0x024f 00000420: PUSH2 0x042a 00000423: CALLDATASIZE 00000424: PUSH1 0x04 00000426: PUSH2 0x225e 00000429: JUMP 0000042a: JUMPDEST 0000042b: PUSH2 0x0a81 0000042e: JUMP 0000042f: JUMPDEST 00000430: CALLVALUE 00000431: DUP1 00000432: ISZERO 00000433: PUSH2 0x043b 00000436: JUMPI 00000437: PUSH1 0x00 00000439: DUP1 0000043a: REVERT 0000043b: JUMPDEST 0000043c: POP 0000043d: PUSH1 0x02 0000043f: SLOAD 00000440: PUSH2 0x02b6 00000443: SWAP1 00000444: PUSH1 0x01 00000446: PUSH1 0x01 00000448: PUSH1 0xa0 0000044a: SHL 0000044b: SUB 0000044c: AND 0000044d: DUP2 0000044e: JUMP 0000044f: JUMPDEST 00000450: PUSH2 0x024f 00000453: PUSH2 0x045d 00000456: CALLDATASIZE 00000457: PUSH1 0x04 00000459: PUSH2 0x22fe 0000045c: JUMP 0000045d: JUMPDEST 0000045e: PUSH2 0x0aa2 00000461: JUMP 00000462: JUMPDEST 00000463: CALLVALUE 00000464: DUP1 00000465: ISZERO 00000466: PUSH2 0x046e 00000469: JUMPI 0000046a: PUSH1 0x00 0000046c: DUP1 0000046d: REVERT 0000046e: JUMPDEST 0000046f: POP 00000470: PUSH2 0x033c 00000473: PUSH2 0x0ac1 00000476: JUMP 00000477: JUMPDEST 00000478: CALLVALUE 00000479: DUP1 0000047a: ISZERO 0000047b: PUSH2 0x0483 0000047e: JUMPI 0000047f: PUSH1 0x00 00000481: DUP1 00000482: REVERT 00000483: JUMPDEST 00000484: POP 00000485: PUSH2 0x024f 00000488: PUSH2 0x0492 0000048b: CALLDATASIZE 0000048c: PUSH1 0x04 0000048e: PUSH2 0x23c2 00000491: JUMP 00000492: JUMPDEST 00000493: PUSH2 0x0ade 00000496: JUMP 00000497: JUMPDEST 00000498: CALLVALUE 00000499: DUP1 0000049a: ISZERO 0000049b: PUSH2 0x04a3 0000049e: JUMPI 0000049f: PUSH1 0x00 000004a1: DUP1 000004a2: REVERT 000004a3: JUMPDEST 000004a4: POP 000004a5: PUSH1 0x00 000004a7: DUP1 000004a8: MLOAD 000004a9: PUSH1 0x20 000004ab: PUSH2 0x2646 000004ae: DUP4 000004af: CODECOPY 000004b0: DUP2 000004b1: MLOAD 000004b2: SWAP2 000004b3: MSTORE 000004b4: SLOAD 000004b5: PUSH1 0xff 000004b7: AND 000004b8: PUSH2 0x0303 000004bb: JUMP 000004bc: JUMPDEST 000004bd: CALLVALUE 000004be: DUP1 000004bf: ISZERO 000004c0: PUSH2 0x04c8 000004c3: JUMPI 000004c4: PUSH1 0x00 000004c6: DUP1 000004c7: REVERT 000004c8: JUMPDEST 000004c9: POP 000004ca: PUSH2 0x024f 000004cd: PUSH2 0x0c20 000004d0: JUMP 000004d1: JUMPDEST 000004d2: CALLVALUE 000004d3: DUP1 000004d4: ISZERO 000004d5: PUSH2 0x04dd 000004d8: JUMPI 000004d9: PUSH1 0x00 000004db: DUP1 000004dc: REVERT 000004dd: JUMPDEST 000004de: POP 000004df: PUSH2 0x024f 000004e2: PUSH2 0x04ec 000004e5: CALLDATASIZE 000004e6: PUSH1 0x04 000004e8: PUSH2 0x23e4 000004eb: JUMP 000004ec: JUMPDEST 000004ed: PUSH2 0x0c28 000004f0: JUMP 000004f1: JUMPDEST 000004f2: CALLVALUE 000004f3: DUP1 000004f4: ISZERO 000004f5: PUSH2 0x04fd 000004f8: JUMPI 000004f9: PUSH1 0x00 000004fb: DUP1 000004fc: REVERT 000004fd: JUMPDEST 000004fe: POP 000004ff: PUSH2 0x024f 00000502: PUSH2 0x0c63 00000505: JUMP 00000506: JUMPDEST 00000507: CALLVALUE 00000508: DUP1 00000509: ISZERO 0000050a: PUSH2 0x0512 0000050d: JUMPI 0000050e: PUSH1 0x00 00000510: DUP1 00000511: REVERT 00000512: JUMPDEST 00000513: POP 00000514: PUSH2 0x033c 00000517: PUSH2 0x0521 0000051a: CALLDATASIZE 0000051b: PUSH1 0x04 0000051d: PUSH2 0x225e 00000520: JUMP 00000521: JUMPDEST 00000522: PUSH1 0x03 00000524: PUSH1 0x20 00000526: MSTORE 00000527: PUSH1 0x00 00000529: SWAP1 0000052a: DUP2 0000052b: MSTORE 0000052c: PUSH1 0x40 0000052e: SWAP1 0000052f: KECCAK256 00000530: SLOAD 00000531: DUP2 00000532: JUMP 00000533: JUMPDEST 00000534: CALLVALUE 00000535: DUP1 00000536: ISZERO 00000537: PUSH2 0x053f 0000053a: JUMPI 0000053b: PUSH1 0x00 0000053d: DUP1 0000053e: REVERT 0000053f: JUMPDEST 00000540: POP 00000541: PUSH2 0x033c 00000544: PUSH1 0x00 00000546: SLOAD 00000547: DUP2 00000548: JUMP 00000549: JUMPDEST 0000054a: CALLVALUE 0000054b: DUP1 0000054c: ISZERO 0000054d: PUSH2 0x0555 00000550: JUMPI 00000551: PUSH1 0x00 00000553: DUP1 00000554: REVERT 00000555: JUMPDEST 00000556: POP 00000557: PUSH2 0x024f 0000055a: PUSH2 0x0cb0 0000055d: JUMP 0000055e: JUMPDEST 0000055f: CALLVALUE 00000560: DUP1 00000561: ISZERO 00000562: PUSH2 0x056a 00000565: JUMPI 00000566: PUSH1 0x00 00000568: DUP1 00000569: REVERT 0000056a: JUMPDEST 0000056b: POP 0000056c: PUSH2 0x02b6 0000056f: PUSH2 0x0cc0 00000572: JUMP 00000573: JUMPDEST 00000574: CALLVALUE 00000575: DUP1 00000576: ISZERO 00000577: PUSH2 0x057f 0000057a: JUMPI 0000057b: PUSH1 0x00 0000057d: DUP1 0000057e: REVERT 0000057f: JUMPDEST 00000580: POP 00000581: PUSH2 0x024f 00000584: PUSH2 0x058e 00000587: CALLDATASIZE 00000588: PUSH1 0x04 0000058a: PUSH2 0x2241 0000058d: JUMP 0000058e: JUMPDEST 0000058f: PUSH2 0x0cf5 00000592: JUMP 00000593: JUMPDEST 00000594: CALLVALUE 00000595: DUP1 00000596: ISZERO 00000597: PUSH2 0x059f 0000059a: JUMPI 0000059b: PUSH1 0x00 0000059d: DUP1 0000059e: REVERT 0000059f: JUMPDEST 000005a0: POP 000005a1: PUSH2 0x033c 000005a4: PUSH2 0x05ae 000005a7: CALLDATASIZE 000005a8: PUSH1 0x04 000005aa: PUSH2 0x225e 000005ad: JUMP 000005ae: JUMPDEST 000005af: PUSH1 0x07 000005b1: PUSH1 0x20 000005b3: MSTORE 000005b4: PUSH1 0x00 000005b6: SWAP1 000005b7: DUP2 000005b8: MSTORE 000005b9: PUSH1 0x40 000005bb: SWAP1 000005bc: KECCAK256 000005bd: SLOAD 000005be: DUP2 000005bf: JUMP 000005c0: JUMPDEST 000005c1: CALLVALUE 000005c2: DUP1 000005c3: ISZERO 000005c4: PUSH2 0x05cc 000005c7: JUMPI 000005c8: PUSH1 0x00 000005ca: DUP1 000005cb: REVERT 000005cc: JUMPDEST 000005cd: POP 000005ce: PUSH2 0x0303 000005d1: PUSH2 0x05db 000005d4: CALLDATASIZE 000005d5: PUSH1 0x04 000005d7: PUSH2 0x2409 000005da: JUMP 000005db: JUMPDEST 000005dc: PUSH1 0x00 000005de: SWAP1 000005df: DUP2 000005e0: MSTORE 000005e1: PUSH1 0x04 000005e3: PUSH1 0x20 000005e5: SWAP1 000005e6: DUP2 000005e7: MSTORE 000005e8: PUSH1 0x40 000005ea: DUP1 000005eb: DUP4 000005ec: KECCAK256 000005ed: PUSH1 0x01 000005ef: PUSH1 0x01 000005f1: PUSH1 0xa0 000005f3: SHL 000005f4: SUB 000005f5: SWAP5 000005f6: SWAP1 000005f7: SWAP5 000005f8: AND 000005f9: DUP4 000005fa: MSTORE 000005fb: PUSH1 0x01 000005fd: SWAP1 000005fe: SWAP4 000005ff: ADD 00000600: SWAP1 00000601: MSTORE 00000602: KECCAK256 00000603: SLOAD 00000604: PUSH1 0xff 00000606: AND 00000607: SWAP1 00000608: JUMP 00000609: JUMPDEST 0000060a: CALLVALUE 0000060b: DUP1 0000060c: ISZERO 0000060d: PUSH2 0x0615 00000610: JUMPI 00000611: PUSH1 0x00 00000613: DUP1 00000614: REVERT 00000615: JUMPDEST 00000616: POP 00000617: PUSH2 0x063a 0000061a: PUSH1 0x40 0000061c: MLOAD 0000061d: DUP1 0000061e: PUSH1 0x40 00000620: ADD 00000621: PUSH1 0x40 00000623: MSTORE 00000624: DUP1 00000625: PUSH1 0x05 00000627: DUP2 00000628: MSTORE 00000629: PUSH1 0x20 0000062b: ADD 0000062c: PUSH5 0x0352e302e3 00000632: PUSH1 0xdc 00000634: SHL 00000635: DUP2 00000636: MSTORE 00000637: POP 00000638: DUP2 00000639: JUMP 0000063a: JUMPDEST 0000063b: PUSH1 0x40 0000063d: MLOAD 0000063e: PUSH2 0x02ca 00000641: SWAP2 00000642: SWAP1 00000643: PUSH2 0x2459 00000646: JUMP 00000647: JUMPDEST 00000648: CALLVALUE 00000649: DUP1 0000064a: ISZERO 0000064b: PUSH2 0x0653 0000064e: JUMPI 0000064f: PUSH1 0x00 00000651: DUP1 00000652: REVERT 00000653: JUMPDEST 00000654: POP 00000655: PUSH2 0x024f 00000658: PUSH2 0x0662 0000065b: CALLDATASIZE 0000065c: PUSH1 0x04 0000065e: PUSH2 0x2241 00000661: JUMP 00000662: JUMPDEST 00000663: PUSH2 0x0d27 00000666: JUMP 00000667: JUMPDEST 00000668: CALLVALUE 00000669: DUP1 0000066a: ISZERO 0000066b: PUSH2 0x0673 0000066e: JUMPI 0000066f: PUSH1 0x00 00000671: DUP1 00000672: REVERT 00000673: JUMPDEST 00000674: POP 00000675: PUSH2 0x024f 00000678: PUSH2 0x0682 0000067b: CALLDATASIZE 0000067c: PUSH1 0x04 0000067e: PUSH2 0x248c 00000681: JUMP 00000682: JUMPDEST 00000683: PUSH2 0x0d51 00000686: JUMP 00000687: JUMPDEST 00000688: CALLVALUE 00000689: DUP1 0000068a: ISZERO 0000068b: PUSH2 0x0693 0000068e: JUMPI 0000068f: PUSH1 0x00 00000691: DUP1 00000692: REVERT 00000693: JUMPDEST 00000694: POP 00000695: PUSH2 0x024f 00000698: PUSH2 0x06a2 0000069b: CALLDATASIZE 0000069c: PUSH1 0x04 0000069e: PUSH2 0x24b8 000006a1: JUMP 000006a2: JUMPDEST 000006a3: PUSH2 0x0eca 000006a6: JUMP 000006a7: JUMPDEST 000006a8: CALLVALUE 000006a9: DUP1 000006aa: ISZERO 000006ab: PUSH2 0x06b3 000006ae: JUMPI 000006af: PUSH1 0x00 000006b1: DUP1 000006b2: REVERT 000006b3: JUMPDEST 000006b4: POP 000006b5: PUSH2 0x0303 000006b8: PUSH2 0x06c2 000006bb: CALLDATASIZE 000006bc: PUSH1 0x04 000006be: PUSH2 0x225e 000006c1: JUMP 000006c2: JUMPDEST 000006c3: PUSH1 0x05 000006c5: PUSH1 0x20 000006c7: MSTORE 000006c8: PUSH1 0x00 000006ca: SWAP1 000006cb: DUP2 000006cc: MSTORE 000006cd: PUSH1 0x40 000006cf: SWAP1 000006d0: KECCAK256 000006d1: SLOAD 000006d2: PUSH1 0xff 000006d4: AND 000006d5: DUP2 000006d6: JUMP 000006d7: JUMPDEST 000006d8: CALLVALUE 000006d9: DUP1 000006da: ISZERO 000006db: PUSH2 0x06e3 000006de: JUMPI 000006df: PUSH1 0x00 000006e1: DUP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: POP 000006e5: PUSH2 0x024f 000006e8: PUSH2 0x06f2 000006eb: CALLDATASIZE 000006ec: PUSH1 0x04 000006ee: PUSH2 0x252c 000006f1: JUMP 000006f2: JUMPDEST 000006f3: PUSH2 0x0ffa 000006f6: JUMP 000006f7: JUMPDEST 000006f8: CALLVALUE 000006f9: DUP1 000006fa: ISZERO 000006fb: PUSH2 0x0703 000006fe: JUMPI 000006ff: PUSH1 0x00 00000701: DUP1 00000702: REVERT 00000703: JUMPDEST 00000704: POP 00000705: PUSH2 0x02b6 00000708: PUSH2 0x11dc 0000070b: JUMP 0000070c: JUMPDEST 0000070d: CALLVALUE 0000070e: DUP1 0000070f: ISZERO 00000710: PUSH2 0x0718 00000713: JUMPI 00000714: PUSH1 0x00 00000716: DUP1 00000717: REVERT 00000718: JUMPDEST 00000719: POP 0000071a: PUSH2 0x0303 0000071d: PUSH2 0x0727 00000720: CALLDATASIZE 00000721: PUSH1 0x04 00000723: PUSH2 0x256f 00000726: JUMP 00000727: JUMPDEST 00000728: PUSH2 0x1205 0000072b: JUMP 0000072c: JUMPDEST 0000072d: CALLVALUE 0000072e: DUP1 0000072f: ISZERO 00000730: PUSH2 0x0738 00000733: JUMPI 00000734: PUSH1 0x00 00000736: DUP1 00000737: REVERT 00000738: JUMPDEST 00000739: POP 0000073a: PUSH2 0x024f 0000073d: PUSH2 0x0747 00000740: CALLDATASIZE 00000741: PUSH1 0x04 00000743: PUSH2 0x2409 00000746: JUMP 00000747: JUMPDEST 00000748: PUSH2 0x127d 0000074b: JUMP 0000074c: JUMPDEST 0000074d: CALLVALUE 0000074e: DUP1 0000074f: ISZERO 00000750: PUSH2 0x0758 00000753: JUMPI 00000754: PUSH1 0x00 00000756: DUP1 00000757: REVERT 00000758: JUMPDEST 00000759: POP 0000075a: PUSH2 0x024f 0000075d: PUSH2 0x0767 00000760: CALLDATASIZE 00000761: PUSH1 0x04 00000763: PUSH2 0x2241 00000766: JUMP 00000767: JUMPDEST 00000768: PUSH2 0x12fe 0000076b: JUMP 0000076c: JUMPDEST 0000076d: CALLVALUE 0000076e: DUP1 0000076f: ISZERO 00000770: PUSH2 0x0778 00000773: JUMPI 00000774: PUSH1 0x00 00000776: DUP1 00000777: REVERT 00000778: JUMPDEST 00000779: POP 0000077a: PUSH1 0x0b 0000077c: SLOAD 0000077d: PUSH2 0x02b6 00000780: SWAP1 00000781: PUSH1 0x01 00000783: PUSH1 0x01 00000785: PUSH1 0xa0 00000787: SHL 00000788: SUB 00000789: AND 0000078a: DUP2 0000078b: JUMP 0000078c: JUMPDEST 0000078d: PUSH2 0x0794 00000790: PUSH2 0x1383 00000793: JUMP 00000794: JUMPDEST 00000795: PUSH2 0x079c 00000798: PUSH2 0x13b5 0000079b: JUMP 0000079c: JUMPDEST 0000079d: PUSH1 0x00 0000079f: DUP4 000007a0: DUP2 000007a1: MSTORE 000007a2: PUSH1 0x03 000007a4: PUSH1 0x20 000007a6: SWAP1 000007a7: DUP2 000007a8: MSTORE 000007a9: PUSH1 0x40 000007ab: DUP1 000007ac: DUP4 000007ad: KECCAK256 000007ae: SWAP5 000007af: SWAP1 000007b0: SWAP5 000007b1: SSTORE 000007b2: PUSH1 0x01 000007b4: PUSH1 0x01 000007b6: PUSH1 0xa0 000007b8: SHL 000007b9: SUB 000007ba: SWAP1 000007bb: SWAP5 000007bc: AND 000007bd: DUP2 000007be: MSTORE 000007bf: PUSH1 0x09 000007c1: SWAP1 000007c2: SWAP4 000007c3: MSTORE 000007c4: SWAP2 000007c5: KECCAK256 000007c6: DUP1 000007c7: SLOAD 000007c8: PUSH1 0xff 000007ca: NOT 000007cb: AND 000007cc: SWAP2 000007cd: ISZERO 000007ce: ISZERO 000007cf: SWAP2 000007d0: SWAP1 000007d1: SWAP2 000007d2: OR 000007d3: SWAP1 000007d4: SSTORE 000007d5: JUMP 000007d6: JUMPDEST 000007d7: PUSH2 0x07de 000007da: PUSH2 0x1383 000007dd: JUMP 000007de: JUMPDEST 000007df: PUSH2 0x07e6 000007e2: PUSH2 0x13b5 000007e5: JUMP 000007e6: JUMPDEST 000007e7: PUSH1 0x01 000007e9: PUSH1 0x00 000007eb: DUP2 000007ec: SLOAD 000007ed: PUSH2 0x07f5 000007f0: SWAP1 000007f1: PUSH2 0x2596 000007f4: JUMP 000007f5: JUMPDEST 000007f6: SWAP1 000007f7: SWAP2 000007f8: SSTORE 000007f9: POP 000007fa: PUSH2 0x0804 000007fd: DUP4 000007fe: DUP4 000007ff: DUP4 00000800: PUSH2 0x13e5 00000803: JUMP 00000804: JUMPDEST 00000805: PUSH32 0xc87531a8794b7668ea5cd9c048cc263ca871d574d59447d962356dd34d5f8de7 00000826: PUSH1 0x01 00000828: SLOAD 00000829: PUSH1 0x40 0000082b: MLOAD 0000082c: PUSH2 0x0837 0000082f: SWAP2 00000830: DUP2 00000831: MSTORE 00000832: PUSH1 0x20 00000834: ADD 00000835: SWAP1 00000836: JUMP 00000837: JUMPDEST 00000838: PUSH1 0x40 0000083a: MLOAD 0000083b: DUP1 0000083c: SWAP2 0000083d: SUB 0000083e: SWAP1 0000083f: LOG1 00000840: POP 00000841: POP 00000842: POP 00000843: JUMP 00000844: JUMPDEST 00000845: PUSH2 0x084c 00000848: PUSH2 0x1577 0000084b: JUMP 0000084c: JUMPDEST 0000084d: CALLVALUE 0000084e: PUSH1 0x00 00000850: DUP2 00000851: SWAP1 00000852: SUB 00000853: PUSH2 0x086f 00000856: JUMPI 00000857: PUSH1 0x40 00000859: MLOAD 0000085a: PUSH4 0x1f2a2005 0000085f: PUSH1 0xe0 00000861: SHL 00000862: DUP2 00000863: MSTORE 00000864: PUSH1 0x04 00000866: ADD 00000867: PUSH1 0x40 00000869: MLOAD 0000086a: DUP1 0000086b: SWAP2 0000086c: SUB 0000086d: SWAP1 0000086e: REVERT 0000086f: JUMPDEST 00000870: DUP2 00000871: PUSH2 0x088d 00000874: JUMPI 00000875: PUSH1 0x40 00000877: MLOAD 00000878: PUSH4 0xd92e233d 0000087d: PUSH1 0xe0 0000087f: SHL 00000880: DUP2 00000881: MSTORE 00000882: PUSH1 0x04 00000884: ADD 00000885: PUSH1 0x40 00000887: MLOAD 00000888: DUP1 00000889: SWAP2 0000088a: SUB 0000088b: SWAP1 0000088c: REVERT 0000088d: JUMPDEST 0000088e: PUSH1 0x02 00000890: SLOAD 00000891: PUSH1 0x01 00000893: PUSH1 0x01 00000895: PUSH1 0xa0 00000897: SHL 00000898: SUB 00000899: AND 0000089a: PUSH1 0x00 0000089c: SWAP1 0000089d: DUP2 0000089e: MSTORE 0000089f: PUSH1 0x03 000008a1: PUSH1 0x20 000008a3: MSTORE 000008a4: PUSH1 0x40 000008a6: DUP2 000008a7: KECCAK256 000008a8: SLOAD 000008a9: SWAP1 000008aa: DUP2 000008ab: SWAP1 000008ac: SUB 000008ad: PUSH2 0x08c9 000008b0: JUMPI 000008b1: PUSH1 0x40 000008b3: MLOAD 000008b4: PUSH4 0x4617192b 000008b9: PUSH1 0xe0 000008bb: SHL 000008bc: DUP2 000008bd: MSTORE 000008be: PUSH1 0x04 000008c0: ADD 000008c1: PUSH1 0x40 000008c3: MLOAD 000008c4: DUP1 000008c5: SWAP2 000008c6: SUB 000008c7: SWAP1 000008c8: REVERT 000008c9: JUMPDEST 000008ca: PUSH1 0x02 000008cc: SLOAD 000008cd: PUSH2 0x08df 000008d0: SWAP1 000008d1: PUSH1 0x01 000008d3: PUSH1 0x01 000008d5: PUSH1 0xa0 000008d7: SHL 000008d8: SUB 000008d9: AND 000008da: DUP4 000008db: PUSH2 0x15a8 000008de: JUMP 000008df: JUMPDEST 000008e0: PUSH1 0x02 000008e2: SLOAD 000008e3: PUSH1 0x40 000008e5: DUP1 000008e6: MLOAD 000008e7: PUSH1 0x04 000008e9: DUP2 000008ea: MSTORE 000008eb: PUSH1 0x24 000008ed: DUP2 000008ee: ADD 000008ef: DUP3 000008f0: MSTORE 000008f1: PUSH1 0x20 000008f3: DUP2 000008f4: ADD 000008f5: DUP1 000008f6: MLOAD 000008f7: PUSH1 0x01 000008f9: PUSH1 0x01 000008fb: PUSH1 0xe0 000008fd: SHL 000008fe: SUB 000008ff: AND 00000900: PUSH4 0x0d0e30db 00000905: PUSH1 0xe4 00000907: SHL 00000908: OR 00000909: SWAP1 0000090a: MSTORE 0000090b: SWAP1 0000090c: MLOAD 0000090d: PUSH1 0x00 0000090f: SWAP3 00000910: PUSH1 0x01 00000912: PUSH1 0x01 00000914: PUSH1 0xa0 00000916: SHL 00000917: SUB 00000918: AND 00000919: SWAP2 0000091a: DUP6 0000091b: SWAP2 0000091c: PUSH2 0x0925 0000091f: SWAP2 00000920: SWAP1 00000921: PUSH2 0x25bd 00000924: JUMP 00000925: JUMPDEST 00000926: PUSH1 0x00 00000928: PUSH1 0x40 0000092a: MLOAD 0000092b: DUP1 0000092c: DUP4 0000092d: SUB 0000092e: DUP2 0000092f: DUP6 00000930: DUP8 00000931: GAS 00000932: CALL 00000933: SWAP3 00000934: POP 00000935: POP 00000936: POP 00000937: RETURNDATASIZE 00000938: DUP1 00000939: PUSH1 0x00 0000093b: DUP2 0000093c: EQ 0000093d: PUSH2 0x0962 00000940: JUMPI 00000941: PUSH1 0x40 00000943: MLOAD 00000944: SWAP2 00000945: POP 00000946: PUSH1 0x1f 00000948: NOT 00000949: PUSH1 0x3f 0000094b: RETURNDATASIZE 0000094c: ADD 0000094d: AND 0000094e: DUP3 0000094f: ADD 00000950: PUSH1 0x40 00000952: MSTORE 00000953: RETURNDATASIZE 00000954: DUP3 00000955: MSTORE 00000956: RETURNDATASIZE 00000957: PUSH1 0x00 00000959: PUSH1 0x20 0000095b: DUP5 0000095c: ADD 0000095d: RETURNDATACOPY 0000095e: PUSH2 0x0967 00000961: JUMP 00000962: JUMPDEST 00000963: PUSH1 0x60 00000965: SWAP2 00000966: POP 00000967: JUMPDEST 00000968: POP 00000969: POP 0000096a: SWAP1 0000096b: POP 0000096c: DUP1 0000096d: PUSH2 0x0989 00000970: JUMPI 00000971: PUSH1 0x40 00000973: MLOAD 00000974: PUSH4 0x1327200b 00000979: PUSH1 0xe1 0000097b: SHL 0000097c: DUP2 0000097d: MSTORE 0000097e: PUSH1 0x04 00000980: ADD 00000981: PUSH1 0x40 00000983: MLOAD 00000984: DUP1 00000985: SWAP2 00000986: SUB 00000987: SWAP1 00000988: REVERT 00000989: JUMPDEST 0000098a: DUP4 0000098b: DUP3 0000098c: PUSH1 0x01 0000098e: SLOAD 0000098f: PUSH32 0xfdf694002d1fd250bd203ab8546c215351d1ca210decb2b29d4e4496dab885f3 000009b0: DUP7 000009b1: PUSH1 0x00 000009b3: SLOAD 000009b4: PUSH1 0x40 000009b6: MLOAD 000009b7: PUSH2 0x09ca 000009ba: SWAP3 000009bb: SWAP2 000009bc: SWAP1 000009bd: SWAP2 000009be: DUP3 000009bf: MSTORE 000009c0: PUSH1 0x20 000009c2: DUP3 000009c3: ADD 000009c4: MSTORE 000009c5: PUSH1 0x40 000009c7: ADD 000009c8: SWAP1 000009c9: JUMP 000009ca: JUMPDEST 000009cb: PUSH1 0x40 000009cd: MLOAD 000009ce: DUP1 000009cf: SWAP2 000009d0: SUB 000009d1: SWAP1 000009d2: LOG4 000009d3: PUSH1 0x00 000009d5: DUP1 000009d6: DUP2 000009d7: SLOAD 000009d8: PUSH2 0x09e0 000009db: SWAP1 000009dc: PUSH2 0x2596 000009df: JUMP 000009e0: JUMPDEST 000009e1: SWAP1 000009e2: SWAP2 000009e3: SSTORE 000009e4: POP 000009e5: POP 000009e6: POP 000009e7: POP 000009e8: POP 000009e9: JUMP 000009ea: JUMPDEST 000009eb: PUSH1 0x00 000009ed: PUSH1 0x06 000009ef: PUSH1 0x00 000009f1: DUP5 000009f2: DUP5 000009f3: PUSH1 0x40 000009f5: MLOAD 000009f6: PUSH1 0x20 000009f8: ADD 000009f9: PUSH2 0x0a1e 000009fc: SWAP3 000009fd: SWAP2 000009fe: SWAP1 000009ff: SWAP2 00000a00: DUP3 00000a01: MSTORE 00000a02: PUSH1 0x60 00000a04: SHL 00000a05: PUSH12 0xffffffffffffffffffffffff 00000a12: NOT 00000a13: AND 00000a14: PUSH1 0x20 00000a16: DUP3 00000a17: ADD 00000a18: MSTORE 00000a19: PUSH1 0x34 00000a1b: ADD 00000a1c: SWAP1 00000a1d: JUMP 00000a1e: JUMPDEST 00000a1f: PUSH1 0x40 00000a21: DUP1 00000a22: MLOAD 00000a23: DUP1 00000a24: DUP4 00000a25: SUB 00000a26: PUSH1 0x1f 00000a28: NOT 00000a29: ADD 00000a2a: DUP2 00000a2b: MSTORE 00000a2c: SWAP2 00000a2d: DUP2 00000a2e: MSTORE 00000a2f: DUP2 00000a30: MLOAD 00000a31: PUSH1 0x20 00000a33: SWAP3 00000a34: DUP4 00000a35: ADD 00000a36: KECCAK256 00000a37: DUP4 00000a38: MSTORE 00000a39: SWAP1 00000a3a: DUP3 00000a3b: ADD 00000a3c: SWAP3 00000a3d: SWAP1 00000a3e: SWAP3 00000a3f: MSTORE 00000a40: ADD 00000a41: PUSH1 0x00 00000a43: KECCAK256 00000a44: SLOAD 00000a45: PUSH1 0xff 00000a47: AND 00000a48: SWAP4 00000a49: SWAP3 00000a4a: POP 00000a4b: POP 00000a4c: POP 00000a4d: JUMP 00000a4e: JUMPDEST 00000a4f: PUSH2 0x0a56 00000a52: PUSH2 0x1383 00000a55: JUMP 00000a56: JUMPDEST 00000a57: PUSH2 0x0a6a 00000a5a: PUSH1 0x01 00000a5c: PUSH1 0x01 00000a5e: PUSH1 0xa0 00000a60: SHL 00000a61: SUB 00000a62: DUP5 00000a63: AND 00000a64: DUP4 00000a65: DUP4 00000a66: PUSH2 0x1649 00000a69: JUMP 00000a6a: JUMPDEST 00000a6b: POP 00000a6c: POP 00000a6d: POP 00000a6e: JUMP 00000a6f: JUMPDEST 00000a70: PUSH2 0x0a77 00000a73: PUSH2 0x1383 00000a76: JUMP 00000a77: JUMPDEST 00000a78: PUSH2 0x0a7f 00000a7b: PUSH2 0x16a8 00000a7e: JUMP 00000a7f: JUMPDEST 00000a80: JUMP 00000a81: JUMPDEST 00000a82: PUSH2 0x0a89 00000a85: PUSH2 0x1383 00000a88: JUMP 00000a89: JUMPDEST 00000a8a: PUSH2 0x0a91 00000a8d: PUSH2 0x13b5 00000a90: JUMP 00000a91: JUMPDEST 00000a92: PUSH1 0x00 00000a94: SWAP1 00000a95: DUP2 00000a96: MSTORE 00000a97: PUSH1 0x03 00000a99: PUSH1 0x20 00000a9b: MSTORE 00000a9c: PUSH1 0x40 00000a9e: DUP2 00000a9f: KECCAK256 00000aa0: SSTORE 00000aa1: JUMP 00000aa2: JUMPDEST 00000aa3: PUSH2 0x0aaa 00000aa6: PUSH2 0x1708 00000aa9: JUMP 00000aaa: JUMPDEST 00000aab: PUSH2 0x0ab3 00000aae: DUP3 00000aaf: PUSH2 0x17ad 00000ab2: JUMP 00000ab3: JUMPDEST 00000ab4: PUSH2 0x0abd 00000ab7: DUP3 00000ab8: DUP3 00000ab9: PUSH2 0x17b5 00000abc: JUMP 00000abd: JUMPDEST 00000abe: POP 00000abf: POP 00000ac0: JUMP 00000ac1: JUMPDEST 00000ac2: PUSH1 0x00 00000ac4: PUSH2 0x0acb 00000ac7: PUSH2 0x1872 00000aca: JUMP 00000acb: JUMPDEST 00000acc: POP 00000acd: PUSH1 0x00 00000acf: DUP1 00000ad0: MLOAD 00000ad1: PUSH1 0x20 00000ad3: PUSH2 0x2626 00000ad6: DUP4 00000ad7: CODECOPY 00000ad8: DUP2 00000ad9: MLOAD 00000ada: SWAP2 00000adb: MSTORE 00000adc: SWAP1 00000add: JUMP 00000ade: JUMPDEST 00000adf: PUSH2 0x0ae6 00000ae2: PUSH2 0x1577 00000ae5: JUMP 00000ae6: JUMPDEST 00000ae7: DUP2 00000ae8: PUSH1 0x00 00000aea: SUB 00000aeb: PUSH2 0x0b07 00000aee: JUMPI 00000aef: PUSH1 0x40 00000af1: MLOAD 00000af2: PUSH4 0x1f2a2005 00000af7: PUSH1 0xe0 00000af9: SHL 00000afa: DUP2 00000afb: MSTORE 00000afc: PUSH1 0x04 00000afe: ADD 00000aff: PUSH1 0x40 00000b01: MLOAD 00000b02: DUP1 00000b03: SWAP2 00000b04: SUB 00000b05: SWAP1 00000b06: REVERT 00000b07: JUMPDEST 00000b08: DUP1 00000b09: PUSH2 0x0b25 00000b0c: JUMPI 00000b0d: PUSH1 0x40 00000b0f: MLOAD 00000b10: PUSH4 0xd92e233d 00000b15: PUSH1 0xe0 00000b17: SHL 00000b18: DUP2 00000b19: MSTORE 00000b1a: PUSH1 0x04 00000b1c: ADD 00000b1d: PUSH1 0x40 00000b1f: MLOAD 00000b20: DUP1 00000b21: SWAP2 00000b22: SUB 00000b23: SWAP1 00000b24: REVERT 00000b25: JUMPDEST 00000b26: PUSH1 0x0a 00000b28: SLOAD 00000b29: PUSH1 0x01 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0xa0 00000b2f: SHL 00000b30: SUB 00000b31: AND 00000b32: PUSH2 0x0b4e 00000b35: JUMPI 00000b36: PUSH1 0x40 00000b38: MLOAD 00000b39: PUSH4 0x076b6cfd 00000b3e: PUSH1 0xe2 00000b40: SHL 00000b41: DUP2 00000b42: MSTORE 00000b43: PUSH1 0x04 00000b45: ADD 00000b46: PUSH1 0x40 00000b48: MLOAD 00000b49: DUP1 00000b4a: SWAP2 00000b4b: SUB 00000b4c: SWAP1 00000b4d: REVERT 00000b4e: JUMPDEST 00000b4f: PUSH1 0x0a 00000b51: SLOAD 00000b52: PUSH2 0x0b64 00000b55: SWAP1 00000b56: PUSH1 0x01 00000b58: PUSH1 0x01 00000b5a: PUSH1 0xa0 00000b5c: SHL 00000b5d: SUB 00000b5e: AND 00000b5f: DUP4 00000b60: PUSH2 0x15a8 00000b63: JUMP 00000b64: JUMPDEST 00000b65: PUSH1 0x0a 00000b67: SLOAD 00000b68: PUSH1 0x01 00000b6a: PUSH1 0x01 00000b6c: PUSH1 0xa0 00000b6e: SHL 00000b6f: SUB 00000b70: AND 00000b71: PUSH2 0x0b7c 00000b74: DUP2 00000b75: CALLER 00000b76: ADDRESS 00000b77: DUP7 00000b78: PUSH2 0x18bb 00000b7b: JUMP 00000b7c: JUMPDEST 00000b7d: PUSH1 0x0a 00000b7f: SLOAD 00000b80: PUSH1 0x40 00000b82: MLOAD 00000b83: PUSH4 0x0852cd8d 00000b88: PUSH1 0xe3 00000b8a: SHL 00000b8b: DUP2 00000b8c: MSTORE 00000b8d: PUSH1 0x04 00000b8f: DUP2 00000b90: ADD 00000b91: DUP6 00000b92: SWAP1 00000b93: MSTORE 00000b94: PUSH1 0x01 00000b96: PUSH1 0x01 00000b98: PUSH1 0xa0 00000b9a: SHL 00000b9b: SUB 00000b9c: SWAP1 00000b9d: SWAP2 00000b9e: AND 00000b9f: SWAP1 00000ba0: DUP2 00000ba1: SWAP1 00000ba2: PUSH4 0x42966c68 00000ba7: SWAP1 00000ba8: PUSH1 0x24 00000baa: ADD 00000bab: PUSH1 0x00 00000bad: PUSH1 0x40 00000baf: MLOAD 00000bb0: DUP1 00000bb1: DUP4 00000bb2: SUB 00000bb3: DUP2 00000bb4: PUSH1 0x00 00000bb6: DUP8 00000bb7: DUP1 00000bb8: EXTCODESIZE 00000bb9: ISZERO 00000bba: DUP1 00000bbb: ISZERO 00000bbc: PUSH2 0x0bc4 00000bbf: JUMPI 00000bc0: PUSH1 0x00 00000bc2: DUP1 00000bc3: REVERT 00000bc4: JUMPDEST 00000bc5: POP 00000bc6: GAS 00000bc7: CALL 00000bc8: ISZERO 00000bc9: DUP1 00000bca: ISZERO 00000bcb: PUSH2 0x0bd8 00000bce: JUMPI 00000bcf: RETURNDATASIZE 00000bd0: PUSH1 0x00 00000bd2: DUP1 00000bd3: RETURNDATACOPY 00000bd4: RETURNDATASIZE 00000bd5: PUSH1 0x00 00000bd7: REVERT 00000bd8: JUMPDEST 00000bd9: POP 00000bda: POP 00000bdb: POP 00000bdc: POP 00000bdd: DUP3 00000bde: PUSH1 0x00 00000be0: DUP1 00000be1: SHL 00000be2: PUSH1 0x01 00000be4: SLOAD 00000be5: PUSH32 0xfdf694002d1fd250bd203ab8546c215351d1ca210decb2b29d4e4496dab885f3 00000c06: DUP8 00000c07: PUSH1 0x00 00000c09: SLOAD 00000c0a: PUSH1 0x40 00000c0c: MLOAD 00000c0d: PUSH2 0x09ca 00000c10: SWAP3 00000c11: SWAP2 00000c12: SWAP1 00000c13: SWAP2 00000c14: DUP3 00000c15: MSTORE 00000c16: PUSH1 0x20 00000c18: DUP3 00000c19: ADD 00000c1a: MSTORE 00000c1b: PUSH1 0x40 00000c1d: ADD 00000c1e: SWAP1 00000c1f: JUMP 00000c20: JUMPDEST 00000c21: PUSH2 0x0a7f 00000c24: PUSH2 0x1383 00000c27: JUMP 00000c28: JUMPDEST 00000c29: PUSH2 0x0c30 00000c2c: PUSH2 0x1383 00000c2f: JUMP 00000c30: JUMPDEST 00000c31: PUSH2 0x0c38 00000c34: PUSH2 0x13b5 00000c37: JUMP 00000c38: JUMPDEST 00000c39: PUSH1 0x01 00000c3b: PUSH1 0x01 00000c3d: PUSH1 0xa0 00000c3f: SHL 00000c40: SUB 00000c41: SWAP2 00000c42: SWAP1 00000c43: SWAP2 00000c44: AND 00000c45: PUSH1 0x00 00000c47: SWAP1 00000c48: DUP2 00000c49: MSTORE 00000c4a: PUSH1 0x09 00000c4c: PUSH1 0x20 00000c4e: MSTORE 00000c4f: PUSH1 0x40 00000c51: SWAP1 00000c52: KECCAK256 00000c53: DUP1 00000c54: SLOAD 00000c55: PUSH1 0xff 00000c57: NOT 00000c58: AND 00000c59: SWAP2 00000c5a: ISZERO 00000c5b: ISZERO 00000c5c: SWAP2 00000c5d: SWAP1 00000c5e: SWAP2 00000c5f: OR 00000c60: SWAP1 00000c61: SSTORE 00000c62: JUMP 00000c63: JUMPDEST 00000c64: CALLER 00000c65: DUP1 00000c66: PUSH2 0x0c6d 00000c69: PUSH2 0x11dc 00000c6c: JUMP 00000c6d: JUMPDEST 00000c6e: PUSH1 0x01 00000c70: PUSH1 0x01 00000c72: PUSH1 0xa0 00000c74: SHL 00000c75: SUB 00000c76: AND 00000c77: EQ 00000c78: PUSH2 0x0ca4 00000c7b: JUMPI 00000c7c: PUSH1 0x40 00000c7e: MLOAD 00000c7f: PUSH4 0x118cdaa7 00000c84: PUSH1 0xe0 00000c86: SHL 00000c87: DUP2 00000c88: MSTORE 00000c89: PUSH1 0x01 00000c8b: PUSH1 0x01 00000c8d: PUSH1 0xa0 00000c8f: SHL 00000c90: SUB 00000c91: DUP3 00000c92: AND 00000c93: PUSH1 0x04 00000c95: DUP3 00000c96: ADD 00000c97: MSTORE 00000c98: PUSH1 0x24 00000c9a: ADD 00000c9b: JUMPDEST 00000c9c: PUSH1 0x40 00000c9e: MLOAD 00000c9f: DUP1 00000ca0: SWAP2 00000ca1: SUB 00000ca2: SWAP1 00000ca3: REVERT 00000ca4: JUMPDEST 00000ca5: PUSH2 0x0cad 00000ca8: DUP2 00000ca9: PUSH2 0x18fa 00000cac: JUMP 00000cad: JUMPDEST 00000cae: POP 00000caf: JUMP 00000cb0: JUMPDEST 00000cb1: PUSH2 0x0cb8 00000cb4: PUSH2 0x1383 00000cb7: JUMP 00000cb8: JUMPDEST 00000cb9: PUSH2 0x0a7f 00000cbc: PUSH2 0x1932 00000cbf: JUMP 00000cc0: JUMPDEST 00000cc1: PUSH1 0x00 00000cc3: DUP1 00000cc4: PUSH32 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300 00000ce5: JUMPDEST 00000ce6: SLOAD 00000ce7: PUSH1 0x01 00000ce9: PUSH1 0x01 00000ceb: PUSH1 0xa0 00000ced: SHL 00000cee: SUB 00000cef: AND 00000cf0: SWAP3 00000cf1: SWAP2 00000cf2: POP 00000cf3: POP 00000cf4: JUMP 00000cf5: JUMPDEST 00000cf6: PUSH2 0x0cfd 00000cf9: PUSH2 0x1383 00000cfc: JUMP 00000cfd: JUMPDEST 00000cfe: PUSH2 0x0d05 00000d01: PUSH2 0x13b5 00000d04: JUMP 00000d05: JUMPDEST 00000d06: PUSH1 0x0a 00000d08: DUP1 00000d09: SLOAD 00000d0a: PUSH1 0x01 00000d0c: PUSH1 0x01 00000d0e: PUSH1 0xa0 00000d10: SHL 00000d11: SUB 00000d12: NOT 00000d13: AND 00000d14: PUSH1 0x01 00000d16: PUSH1 0x01 00000d18: PUSH1 0xa0 00000d1a: SHL 00000d1b: SUB 00000d1c: SWAP3 00000d1d: SWAP1 00000d1e: SWAP3 00000d1f: AND 00000d20: SWAP2 00000d21: SWAP1 00000d22: SWAP2 00000d23: OR 00000d24: SWAP1 00000d25: SSTORE 00000d26: JUMP 00000d27: JUMPDEST 00000d28: PUSH2 0x0d2f 00000d2b: PUSH2 0x1383 00000d2e: JUMP 00000d2f: JUMPDEST 00000d30: PUSH1 0x0b 00000d32: DUP1 00000d33: SLOAD 00000d34: PUSH1 0x01 00000d36: PUSH1 0x01 00000d38: PUSH1 0xa0 00000d3a: SHL 00000d3b: SUB 00000d3c: NOT 00000d3d: AND 00000d3e: PUSH1 0x01 00000d40: PUSH1 0x01 00000d42: PUSH1 0xa0 00000d44: SHL 00000d45: SUB 00000d46: SWAP3 00000d47: SWAP1 00000d48: SWAP3 00000d49: AND 00000d4a: SWAP2 00000d4b: SWAP1 00000d4c: SWAP2 00000d4d: OR 00000d4e: SWAP1 00000d4f: SSTORE 00000d50: JUMP 00000d51: JUMPDEST 00000d52: PUSH2 0x0d59 00000d55: PUSH2 0x1577 00000d58: JUMP 00000d59: JUMPDEST 00000d5a: DUP2 00000d5b: PUSH1 0x00 00000d5d: SUB 00000d5e: PUSH2 0x0d7a 00000d61: JUMPI 00000d62: PUSH1 0x40 00000d64: MLOAD 00000d65: PUSH4 0x1f2a2005 00000d6a: PUSH1 0xe0 00000d6c: SHL 00000d6d: DUP2 00000d6e: MSTORE 00000d6f: PUSH1 0x04 00000d71: ADD 00000d72: PUSH1 0x40 00000d74: MLOAD 00000d75: DUP1 00000d76: SWAP2 00000d77: SUB 00000d78: SWAP1 00000d79: REVERT 00000d7a: JUMPDEST 00000d7b: DUP1 00000d7c: PUSH2 0x0d98 00000d7f: JUMPI 00000d80: PUSH1 0x40 00000d82: MLOAD 00000d83: PUSH4 0xd92e233d 00000d88: PUSH1 0xe0 00000d8a: SHL 00000d8b: DUP2 00000d8c: MSTORE 00000d8d: PUSH1 0x04 00000d8f: ADD 00000d90: PUSH1 0x40 00000d92: MLOAD 00000d93: DUP1 00000d94: SWAP2 00000d95: SUB 00000d96: SWAP1 00000d97: REVERT 00000d98: JUMPDEST 00000d99: PUSH1 0x00 00000d9b: DUP4 00000d9c: DUP2 00000d9d: MSTORE 00000d9e: PUSH1 0x03 00000da0: PUSH1 0x20 00000da2: MSTORE 00000da3: PUSH1 0x40 00000da5: DUP2 00000da6: KECCAK256 00000da7: SLOAD 00000da8: SWAP1 00000da9: DUP2 00000daa: SWAP1 00000dab: SUB 00000dac: PUSH2 0x0dc8 00000daf: JUMPI 00000db0: PUSH1 0x40 00000db2: MLOAD 00000db3: PUSH4 0x4617192b 00000db8: PUSH1 0xe0 00000dba: SHL 00000dbb: DUP2 00000dbc: MSTORE 00000dbd: PUSH1 0x04 00000dbf: ADD 00000dc0: PUSH1 0x40 00000dc2: MLOAD 00000dc3: DUP1 00000dc4: SWAP2 00000dc5: SUB 00000dc6: SWAP1 00000dc7: REVERT 00000dc8: JUMPDEST 00000dc9: DUP4 00000dca: PUSH2 0x0dd3 00000dcd: DUP2 00000dce: DUP6 00000dcf: PUSH2 0x15a8 00000dd2: JUMP 00000dd3: JUMPDEST 00000dd4: DUP1 00000dd5: PUSH2 0x0de9 00000dd8: PUSH1 0x01 00000dda: PUSH1 0x01 00000ddc: PUSH1 0xa0 00000dde: SHL 00000ddf: SUB 00000de0: DUP3 00000de1: AND 00000de2: CALLER 00000de3: ADDRESS 00000de4: DUP9 00000de5: PUSH2 0x18bb 00000de8: JUMP 00000de9: JUMPDEST 00000dea: PUSH1 0x01 00000dec: PUSH1 0x01 00000dee: PUSH1 0xa0 00000df0: SHL 00000df1: SUB 00000df2: DUP3 00000df3: AND 00000df4: PUSH1 0x00 00000df6: SWAP1 00000df7: DUP2 00000df8: MSTORE 00000df9: PUSH1 0x09 00000dfb: PUSH1 0x20 00000dfd: MSTORE 00000dfe: PUSH1 0x40 00000e00: SWAP1 00000e01: KECCAK256 00000e02: SLOAD 00000e03: PUSH1 0xff 00000e05: AND 00000e06: PUSH2 0x0e67 00000e09: JUMPI 00000e0a: PUSH1 0x40 00000e0c: MLOAD 00000e0d: PUSH4 0x0852cd8d 00000e12: PUSH1 0xe3 00000e14: SHL 00000e15: DUP2 00000e16: MSTORE 00000e17: PUSH1 0x04 00000e19: DUP2 00000e1a: ADD 00000e1b: DUP7 00000e1c: SWAP1 00000e1d: MSTORE 00000e1e: DUP3 00000e1f: SWAP1 00000e20: PUSH1 0x01 00000e22: PUSH1 0x01 00000e24: PUSH1 0xa0 00000e26: SHL 00000e27: SUB 00000e28: DUP3 00000e29: AND 00000e2a: SWAP1 00000e2b: PUSH4 0x42966c68 00000e30: SWAP1 00000e31: PUSH1 0x24 00000e33: ADD 00000e34: PUSH1 0x00 00000e36: PUSH1 0x40 00000e38: MLOAD 00000e39: DUP1 00000e3a: DUP4 00000e3b: SUB 00000e3c: DUP2 00000e3d: PUSH1 0x00 00000e3f: DUP8 00000e40: DUP1 00000e41: EXTCODESIZE 00000e42: ISZERO 00000e43: DUP1 00000e44: ISZERO 00000e45: PUSH2 0x0e4d 00000e48: JUMPI 00000e49: PUSH1 0x00 00000e4b: DUP1 00000e4c: REVERT 00000e4d: JUMPDEST 00000e4e: POP 00000e4f: GAS 00000e50: CALL 00000e51: ISZERO 00000e52: DUP1 00000e53: ISZERO 00000e54: PUSH2 0x0e61 00000e57: JUMPI 00000e58: RETURNDATASIZE 00000e59: PUSH1 0x00 00000e5b: DUP1 00000e5c: RETURNDATACOPY 00000e5d: RETURNDATASIZE 00000e5e: PUSH1 0x00 00000e60: REVERT 00000e61: JUMPDEST 00000e62: POP 00000e63: POP 00000e64: POP 00000e65: POP 00000e66: POP 00000e67: JUMPDEST 00000e68: DUP4 00000e69: DUP4 00000e6a: PUSH1 0x01 00000e6c: SLOAD 00000e6d: PUSH32 0xfdf694002d1fd250bd203ab8546c215351d1ca210decb2b29d4e4496dab885f3 00000e8e: DUP9 00000e8f: PUSH1 0x00 00000e91: SLOAD 00000e92: PUSH1 0x40 00000e94: MLOAD 00000e95: PUSH2 0x0ea8 00000e98: SWAP3 00000e99: SWAP2 00000e9a: SWAP1 00000e9b: SWAP2 00000e9c: DUP3 00000e9d: MSTORE 00000e9e: PUSH1 0x20 00000ea0: DUP3 00000ea1: ADD 00000ea2: MSTORE 00000ea3: PUSH1 0x40 00000ea5: ADD 00000ea6: SWAP1 00000ea7: JUMP 00000ea8: JUMPDEST 00000ea9: PUSH1 0x40 00000eab: MLOAD 00000eac: DUP1 00000ead: SWAP2 00000eae: SUB 00000eaf: SWAP1 00000eb0: LOG4 00000eb1: PUSH1 0x00 00000eb3: DUP1 00000eb4: DUP2 00000eb5: SLOAD 00000eb6: PUSH2 0x0ebe 00000eb9: SWAP1 00000eba: PUSH2 0x2596 00000ebd: JUMP 00000ebe: JUMPDEST 00000ebf: SWAP1 00000ec0: SWAP2 00000ec1: SSTORE 00000ec2: POP 00000ec3: POP 00000ec4: POP 00000ec5: POP 00000ec6: POP 00000ec7: POP 00000ec8: POP 00000ec9: JUMP 00000eca: JUMPDEST 00000ecb: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 00000eec: DUP1 00000eed: SLOAD 00000eee: PUSH1 0x01 00000ef0: PUSH1 0x40 00000ef2: SHL 00000ef3: DUP2 00000ef4: DIV 00000ef5: PUSH1 0xff 00000ef7: AND 00000ef8: ISZERO 00000ef9: SWAP1 00000efa: PUSH8 0xffffffffffffffff 00000f03: AND 00000f04: PUSH1 0x00 00000f06: DUP2 00000f07: ISZERO 00000f08: DUP1 00000f09: ISZERO 00000f0a: PUSH2 0x0f10 00000f0d: JUMPI 00000f0e: POP 00000f0f: DUP3 00000f10: JUMPDEST 00000f11: SWAP1 00000f12: POP 00000f13: PUSH1 0x00 00000f15: DUP3 00000f16: PUSH8 0xffffffffffffffff 00000f1f: AND 00000f20: PUSH1 0x01 00000f22: EQ 00000f23: DUP1 00000f24: ISZERO 00000f25: PUSH2 0x0f2d 00000f28: JUMPI 00000f29: POP 00000f2a: ADDRESS 00000f2b: EXTCODESIZE 00000f2c: ISZERO 00000f2d: JUMPDEST 00000f2e: SWAP1 00000f2f: POP 00000f30: DUP2 00000f31: ISZERO 00000f32: DUP1 00000f33: ISZERO 00000f34: PUSH2 0x0f3b 00000f37: JUMPI 00000f38: POP 00000f39: DUP1 00000f3a: ISZERO 00000f3b: JUMPDEST 00000f3c: ISZERO 00000f3d: PUSH2 0x0f59 00000f40: JUMPI 00000f41: PUSH1 0x40 00000f43: MLOAD 00000f44: PUSH4 0xf92ee8a9 00000f49: PUSH1 0xe0 00000f4b: SHL 00000f4c: DUP2 00000f4d: MSTORE 00000f4e: PUSH1 0x04 00000f50: ADD 00000f51: PUSH1 0x40 00000f53: MLOAD 00000f54: DUP1 00000f55: SWAP2 00000f56: SUB 00000f57: SWAP1 00000f58: REVERT 00000f59: JUMPDEST 00000f5a: DUP5 00000f5b: SLOAD 00000f5c: PUSH8 0xffffffffffffffff 00000f65: NOT 00000f66: AND 00000f67: PUSH1 0x01 00000f69: OR 00000f6a: DUP6 00000f6b: SSTORE 00000f6c: DUP4 00000f6d: ISZERO 00000f6e: PUSH2 0x0f83 00000f71: JUMPI 00000f72: DUP5 00000f73: SLOAD 00000f74: PUSH1 0xff 00000f76: PUSH1 0x40 00000f78: SHL 00000f79: NOT 00000f7a: AND 00000f7b: PUSH1 0x01 00000f7d: PUSH1 0x40 00000f7f: SHL 00000f80: OR 00000f81: DUP6 00000f82: SSTORE 00000f83: JUMPDEST 00000f84: PUSH2 0x0f8f 00000f87: DUP11 00000f88: DUP11 00000f89: DUP11 00000f8a: DUP10 00000f8b: PUSH2 0x197b 00000f8e: JUMP 00000f8f: JUMPDEST 00000f90: PUSH2 0x0f98 00000f93: DUP8 00000f94: PUSH2 0x198f 00000f97: JUMP 00000f98: JUMPDEST 00000f99: PUSH2 0x0fa0 00000f9c: PUSH2 0x19a0 00000f9f: JUMP 00000fa0: JUMPDEST 00000fa1: PUSH2 0x0fa8 00000fa4: PUSH2 0x1932 00000fa7: JUMP 00000fa8: JUMPDEST 00000fa9: DUP4 00000faa: ISZERO 00000fab: PUSH2 0x0fee 00000fae: JUMPI 00000faf: DUP5 00000fb0: SLOAD 00000fb1: PUSH1 0xff 00000fb3: PUSH1 0x40 00000fb5: SHL 00000fb6: NOT 00000fb7: AND 00000fb8: DUP6 00000fb9: SSTORE 00000fba: PUSH1 0x40 00000fbc: MLOAD 00000fbd: PUSH1 0x01 00000fbf: DUP2 00000fc0: MSTORE 00000fc1: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 00000fe2: SWAP1 00000fe3: PUSH1 0x20 00000fe5: ADD 00000fe6: PUSH1 0x40 00000fe8: MLOAD 00000fe9: DUP1 00000fea: SWAP2 00000feb: SUB 00000fec: SWAP1 00000fed: LOG1 00000fee: JUMPDEST 00000fef: POP 00000ff0: POP 00000ff1: POP 00000ff2: POP 00000ff3: POP 00000ff4: POP 00000ff5: POP 00000ff6: POP 00000ff7: POP 00000ff8: POP 00000ff9: JUMP 00000ffa: JUMPDEST 00000ffb: PUSH2 0x1002 00000ffe: PUSH2 0x1577 00001001: JUMP 00001002: JUMPDEST 00001003: DUP5 00001004: PUSH2 0x100d 00001007: DUP2 00001008: CALLER 00001009: PUSH2 0x09ea 0000100c: JUMP 0000100d: JUMPDEST 0000100e: PUSH2 0x102a 00001011: JUMPI 00001012: PUSH1 0x40 00001014: MLOAD 00001015: PUSH4 0x01cf71d3 0000101a: PUSH1 0xe7 0000101c: SHL 0000101d: DUP2 0000101e: MSTORE 0000101f: PUSH1 0x04 00001021: ADD 00001022: PUSH1 0x40 00001024: MLOAD 00001025: DUP1 00001026: SWAP2 00001027: SUB 00001028: SWAP1 00001029: REVERT 0000102a: JUMPDEST 0000102b: PUSH1 0x00 0000102d: DUP8 0000102e: DUP2 0000102f: MSTORE 00001030: PUSH1 0x05 00001032: PUSH1 0x20 00001034: MSTORE 00001035: PUSH1 0x40 00001037: SWAP1 00001038: KECCAK256 00001039: SLOAD 0000103a: PUSH1 0xff 0000103c: AND 0000103d: ISZERO 0000103e: PUSH2 0x107e 00001041: JUMPI 00001042: PUSH1 0x40 00001044: DUP1 00001045: MLOAD 00001046: DUP9 00001047: DUP2 00001048: MSTORE 00001049: CALLER 0000104a: PUSH1 0x20 0000104c: DUP3 0000104d: ADD 0000104e: MSTORE 0000104f: PUSH32 0x663e7547ee89b163c8f15ccc1780c1097bb68e118283993865e5c86ceb23a312 00001070: SWAP2 00001071: ADD 00001072: PUSH1 0x40 00001074: MLOAD 00001075: DUP1 00001076: SWAP2 00001077: SUB 00001078: SWAP1 00001079: LOG1 0000107a: PUSH2 0x11d3 0000107d: JUMP 0000107e: JUMPDEST 0000107f: PUSH1 0x40 00001081: DUP1 00001082: MLOAD 00001083: PUSH1 0x20 00001085: DUP2 00001086: ADD 00001087: DUP9 00001088: SWAP1 00001089: MSTORE 0000108a: SWAP1 0000108b: DUP2 0000108c: ADD 0000108d: DUP7 0000108e: SWAP1 0000108f: MSTORE 00001090: PUSH1 0x60 00001092: DUP2 00001093: ADD 00001094: DUP6 00001095: SWAP1 00001096: MSTORE 00001097: PUSH1 0x80 00001099: DUP2 0000109a: ADD 0000109b: DUP5 0000109c: SWAP1 0000109d: MSTORE 0000109e: PUSH1 0xa0 000010a0: DUP2 000010a1: ADD 000010a2: DUP4 000010a3: SWAP1 000010a4: MSTORE 000010a5: PUSH1 0x00 000010a7: SWAP1 000010a8: PUSH1 0xc0 000010aa: ADD 000010ab: PUSH1 0x40 000010ad: DUP1 000010ae: MLOAD 000010af: PUSH1 0x1f 000010b1: NOT 000010b2: DUP2 000010b3: DUP5 000010b4: SUB 000010b5: ADD 000010b6: DUP2 000010b7: MSTORE 000010b8: SWAP2 000010b9: DUP2 000010ba: MSTORE 000010bb: DUP2 000010bc: MLOAD 000010bd: PUSH1 0x20 000010bf: SWAP3 000010c0: DUP4 000010c1: ADD 000010c2: KECCAK256 000010c3: PUSH1 0x00 000010c5: DUP2 000010c6: DUP2 000010c7: MSTORE 000010c8: PUSH1 0x04 000010ca: DUP5 000010cb: MSTORE 000010cc: DUP3 000010cd: DUP2 000010ce: KECCAK256 000010cf: CALLER 000010d0: DUP3 000010d1: MSTORE 000010d2: PUSH1 0x01 000010d4: DUP2 000010d5: ADD 000010d6: SWAP1 000010d7: SWAP5 000010d8: MSTORE 000010d9: SWAP2 000010da: SWAP1 000010db: SWAP2 000010dc: KECCAK256 000010dd: SLOAD 000010de: SWAP1 000010df: SWAP3 000010e0: POP 000010e1: PUSH1 0xff 000010e3: AND 000010e4: ISZERO 000010e5: PUSH2 0x1127 000010e8: JUMPI 000010e9: PUSH1 0x40 000010eb: DUP1 000010ec: MLOAD 000010ed: DUP4 000010ee: DUP2 000010ef: MSTORE 000010f0: CALLER 000010f1: PUSH1 0x20 000010f3: DUP3 000010f4: ADD 000010f5: MSTORE 000010f6: PUSH32 0x3f37b0b66f16a593807ce9ff98d50f7ba28c565bc6c79dcebe230748a771b768 00001117: SWAP2 00001118: ADD 00001119: PUSH1 0x40 0000111b: MLOAD 0000111c: DUP1 0000111d: SWAP2 0000111e: SUB 0000111f: SWAP1 00001120: LOG1 00001121: POP 00001122: POP 00001123: PUSH2 0x11d3 00001126: JUMP 00001127: JUMPDEST 00001128: DUP2 00001129: DUP10 0000112a: EQ 0000112b: PUSH2 0x1147 0000112e: JUMPI 0000112f: PUSH1 0x40 00001131: MLOAD 00001132: PUSH4 0xc357a9e7 00001137: PUSH1 0xe0 00001139: SHL 0000113a: DUP2 0000113b: MSTORE 0000113c: PUSH1 0x04 0000113e: ADD 0000113f: PUSH1 0x40 00001141: MLOAD 00001142: DUP1 00001143: SWAP2 00001144: SUB 00001145: SWAP1 00001146: REVERT 00001147: JUMPDEST 00001148: CALLER 00001149: PUSH1 0x00 0000114b: SWAP1 0000114c: DUP2 0000114d: MSTORE 0000114e: PUSH1 0x01 00001150: DUP3 00001151: DUP2 00001152: ADD 00001153: PUSH1 0x20 00001155: MSTORE 00001156: PUSH1 0x40 00001158: DUP3 00001159: KECCAK256 0000115a: DUP1 0000115b: SLOAD 0000115c: PUSH1 0xff 0000115e: NOT 0000115f: AND 00001160: SWAP1 00001161: SWAP2 00001162: OR 00001163: SWAP1 00001164: SSTORE 00001165: DUP2 00001166: SLOAD 00001167: DUP3 00001168: SWAP2 00001169: SWAP1 0000116a: PUSH2 0x1172 0000116d: SWAP1 0000116e: PUSH2 0x2596 00001171: JUMP 00001172: JUMPDEST 00001173: SWAP1 00001174: SWAP2 00001175: SSTORE 00001176: POP 00001177: PUSH1 0x40 00001179: DUP1 0000117a: MLOAD 0000117b: DUP4 0000117c: DUP2 0000117d: MSTORE 0000117e: CALLER 0000117f: PUSH1 0x20 00001181: DUP3 00001182: ADD 00001183: MSTORE 00001184: PUSH32 0x7356c99533fbaaf15c51aad6bd54bb9b2d540f55cc2b88ebbf4c5671e48c4f63 000011a5: SWAP2 000011a6: ADD 000011a7: PUSH1 0x40 000011a9: MLOAD 000011aa: DUP1 000011ab: SWAP2 000011ac: SUB 000011ad: SWAP1 000011ae: LOG1 000011af: PUSH1 0x00 000011b1: DUP9 000011b2: DUP2 000011b3: MSTORE 000011b4: PUSH1 0x08 000011b6: PUSH1 0x20 000011b8: MSTORE 000011b9: PUSH1 0x40 000011bb: SWAP1 000011bc: KECCAK256 000011bd: SLOAD 000011be: DUP2 000011bf: SLOAD 000011c0: LT 000011c1: PUSH2 0x11d0 000011c4: JUMPI 000011c5: PUSH2 0x11d0 000011c8: DUP3 000011c9: DUP9 000011ca: DUP9 000011cb: DUP9 000011cc: PUSH2 0x19b0 000011cf: JUMP 000011d0: JUMPDEST 000011d1: POP 000011d2: POP 000011d3: JUMPDEST 000011d4: POP 000011d5: POP 000011d6: POP 000011d7: POP 000011d8: POP 000011d9: POP 000011da: POP 000011db: JUMP 000011dc: JUMPDEST 000011dd: PUSH1 0x00 000011df: DUP1 000011e0: PUSH32 0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00 00001201: PUSH2 0x0ce5 00001204: JUMP 00001205: JUMPDEST 00001206: PUSH1 0x00 00001208: PUSH2 0x1211 0000120b: DUP3 0000120c: DUP5 0000120d: PUSH2 0x09ea 00001210: JUMP 00001211: JUMPDEST 00001212: PUSH2 0x121d 00001215: JUMPI 00001216: POP 00001217: PUSH1 0x00 00001219: PUSH2 0x1276 0000121c: JUMP 0000121d: JUMPDEST 0000121e: PUSH1 0x00 00001220: DUP5 00001221: DUP2 00001222: MSTORE 00001223: PUSH1 0x05 00001225: PUSH1 0x20 00001227: MSTORE 00001228: PUSH1 0x40 0000122a: SWAP1 0000122b: KECCAK256 0000122c: SLOAD 0000122d: PUSH1 0xff 0000122f: AND 00001230: ISZERO 00001231: PUSH2 0x123c 00001234: JUMPI 00001235: POP 00001236: PUSH1 0x00 00001238: PUSH2 0x1276 0000123b: JUMP 0000123c: JUMPDEST 0000123d: PUSH1 0x00 0000123f: DUP5 00001240: DUP2 00001241: MSTORE 00001242: PUSH1 0x04 00001244: PUSH1 0x20 00001246: SWAP1 00001247: DUP2 00001248: MSTORE 00001249: PUSH1 0x40 0000124b: DUP1 0000124c: DUP4 0000124d: KECCAK256 0000124e: PUSH1 0x01 00001250: PUSH1 0x01 00001252: PUSH1 0xa0 00001254: SHL 00001255: SUB 00001256: DUP8 00001257: AND 00001258: DUP5 00001259: MSTORE 0000125a: PUSH1 0x01 0000125c: ADD 0000125d: SWAP1 0000125e: SWAP2 0000125f: MSTORE 00001260: SWAP1 00001261: KECCAK256 00001262: SLOAD 00001263: PUSH1 0xff 00001265: AND 00001266: ISZERO 00001267: PUSH2 0x1272 0000126a: JUMPI 0000126b: POP 0000126c: PUSH1 0x00 0000126e: PUSH2 0x1276 00001271: JUMP 00001272: JUMPDEST 00001273: POP 00001274: PUSH1 0x01 00001276: JUMPDEST 00001277: SWAP4 00001278: SWAP3 00001279: POP 0000127a: POP 0000127b: POP 0000127c: JUMP 0000127d: JUMPDEST 0000127e: PUSH2 0x1285 00001281: PUSH2 0x1383 00001284: JUMP 00001285: JUMPDEST 00001286: PUSH1 0x00 00001288: DUP3 00001289: PUSH1 0x01 0000128b: PUSH1 0x01 0000128d: PUSH1 0xa0 0000128f: SHL 00001290: SUB 00001291: AND 00001292: DUP3 00001293: PUSH2 0x0dac 00001296: SWAP1 00001297: PUSH1 0x40 00001299: MLOAD 0000129a: PUSH1 0x00 0000129c: PUSH1 0x40 0000129e: MLOAD 0000129f: DUP1 000012a0: DUP4 000012a1: SUB 000012a2: DUP2 000012a3: DUP6 000012a4: DUP9 000012a5: DUP9 000012a6: CALL 000012a7: SWAP4 000012a8: POP 000012a9: POP 000012aa: POP 000012ab: POP 000012ac: RETURNDATASIZE 000012ad: DUP1 000012ae: PUSH1 0x00 000012b0: DUP2 000012b1: EQ 000012b2: PUSH2 0x12d7 000012b5: JUMPI 000012b6: PUSH1 0x40 000012b8: MLOAD 000012b9: SWAP2 000012ba: POP 000012bb: PUSH1 0x1f 000012bd: NOT 000012be: PUSH1 0x3f 000012c0: RETURNDATASIZE 000012c1: ADD 000012c2: AND 000012c3: DUP3 000012c4: ADD 000012c5: PUSH1 0x40 000012c7: MSTORE 000012c8: RETURNDATASIZE 000012c9: DUP3 000012ca: MSTORE 000012cb: RETURNDATASIZE 000012cc: PUSH1 0x00 000012ce: PUSH1 0x20 000012d0: DUP5 000012d1: ADD 000012d2: RETURNDATACOPY 000012d3: PUSH2 0x12dc 000012d6: JUMP 000012d7: JUMPDEST 000012d8: PUSH1 0x60 000012da: SWAP2 000012db: POP 000012dc: JUMPDEST 000012dd: POP 000012de: POP 000012df: SWAP1 000012e0: POP 000012e1: DUP1 000012e2: PUSH2 0x0a6a 000012e5: JUMPI 000012e6: PUSH1 0x40 000012e8: MLOAD 000012e9: PUSH4 0x02a06efb 000012ee: PUSH1 0xe1 000012f0: SHL 000012f1: DUP2 000012f2: MSTORE 000012f3: PUSH1 0x04 000012f5: ADD 000012f6: PUSH1 0x40 000012f8: MLOAD 000012f9: DUP1 000012fa: SWAP2 000012fb: SUB 000012fc: SWAP1 000012fd: REVERT 000012fe: JUMPDEST 000012ff: PUSH2 0x1306 00001302: PUSH2 0x1383 00001305: JUMP 00001306: JUMPDEST 00001307: PUSH32 0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00 00001328: DUP1 00001329: SLOAD 0000132a: PUSH1 0x01 0000132c: PUSH1 0x01 0000132e: PUSH1 0xa0 00001330: SHL 00001331: SUB 00001332: NOT 00001333: AND 00001334: PUSH1 0x01 00001336: PUSH1 0x01 00001338: PUSH1 0xa0 0000133a: SHL 0000133b: SUB 0000133c: DUP4 0000133d: AND 0000133e: SWAP1 0000133f: DUP2 00001340: OR 00001341: DUP3 00001342: SSTORE 00001343: PUSH2 0x134a 00001346: PUSH2 0x0cc0 00001349: JUMP 0000134a: JUMPDEST 0000134b: PUSH1 0x01 0000134d: PUSH1 0x01 0000134f: PUSH1 0xa0 00001351: SHL 00001352: SUB 00001353: AND 00001354: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 00001375: PUSH1 0x40 00001377: MLOAD 00001378: PUSH1 0x40 0000137a: MLOAD 0000137b: DUP1 0000137c: SWAP2 0000137d: SUB 0000137e: SWAP1 0000137f: LOG3 00001380: POP 00001381: POP 00001382: JUMP 00001383: JUMPDEST 00001384: CALLER 00001385: PUSH2 0x138c 00001388: PUSH2 0x0cc0 0000138b: JUMP 0000138c: JUMPDEST 0000138d: PUSH1 0x01 0000138f: PUSH1 0x01 00001391: PUSH1 0xa0 00001393: SHL 00001394: SUB 00001395: AND 00001396: EQ 00001397: PUSH2 0x0a7f 0000139a: JUMPI 0000139b: PUSH1 0x40 0000139d: MLOAD 0000139e: PUSH4 0x118cdaa7 000013a3: PUSH1 0xe0 000013a5: SHL 000013a6: DUP2 000013a7: MSTORE 000013a8: CALLER 000013a9: PUSH1 0x04 000013ab: DUP3 000013ac: ADD 000013ad: MSTORE 000013ae: PUSH1 0x24 000013b0: ADD 000013b1: PUSH2 0x0c9b 000013b4: JUMP 000013b5: JUMPDEST 000013b6: PUSH1 0x00 000013b8: DUP1 000013b9: MLOAD 000013ba: PUSH1 0x20 000013bc: PUSH2 0x2646 000013bf: DUP4 000013c0: CODECOPY 000013c1: DUP2 000013c2: MLOAD 000013c3: SWAP2 000013c4: MSTORE 000013c5: SLOAD 000013c6: PUSH1 0xff 000013c8: AND 000013c9: PUSH2 0x0a7f 000013cc: JUMPI 000013cd: PUSH1 0x40 000013cf: MLOAD 000013d0: PUSH4 0x8dfc202b 000013d5: PUSH1 0xe0 000013d7: SHL 000013d8: DUP2 000013d9: MSTORE 000013da: PUSH1 0x04 000013dc: ADD 000013dd: PUSH1 0x40 000013df: MLOAD 000013e0: DUP1 000013e1: SWAP2 000013e2: SUB 000013e3: SWAP1 000013e4: REVERT 000013e5: JUMPDEST 000013e6: DUP1 000013e7: PUSH1 0x00 000013e9: SUB 000013ea: PUSH2 0x1406 000013ed: JUMPI 000013ee: PUSH1 0x40 000013f0: MLOAD 000013f1: PUSH4 0x3cc3e581 000013f6: PUSH1 0xe2 000013f8: SHL 000013f9: DUP2 000013fa: MSTORE 000013fb: PUSH1 0x04 000013fd: ADD 000013fe: PUSH1 0x40 00001400: MLOAD 00001401: DUP1 00001402: SWAP2 00001403: SUB 00001404: SWAP1 00001405: REVERT 00001406: JUMPDEST 00001407: DUP1 00001408: DUP3 00001409: LT 0000140a: ISZERO 0000140b: PUSH2 0x1427 0000140e: JUMPI 0000140f: PUSH1 0x40 00001411: MLOAD 00001412: PUSH4 0x6bb07db9 00001417: PUSH1 0xe1 00001419: SHL 0000141a: DUP2 0000141b: MSTORE 0000141c: PUSH1 0x04 0000141e: ADD 0000141f: PUSH1 0x40 00001421: MLOAD 00001422: DUP1 00001423: SWAP2 00001424: SUB 00001425: SWAP1 00001426: REVERT 00001427: JUMPDEST 00001428: PUSH1 0x00 0000142a: JUMPDEST 0000142b: DUP3 0000142c: DUP2 0000142d: LT 0000142e: ISZERO 0000142f: PUSH2 0x154c 00001432: JUMPI 00001433: PUSH1 0x00 00001435: DUP5 00001436: DUP5 00001437: DUP4 00001438: DUP2 00001439: DUP2 0000143a: LT 0000143b: PUSH2 0x1446 0000143e: JUMPI 0000143f: PUSH2 0x1446 00001442: PUSH2 0x25d9 00001445: JUMP 00001446: JUMPDEST 00001447: SWAP1 00001448: POP 00001449: PUSH1 0x20 0000144b: MUL 0000144c: ADD 0000144d: PUSH1 0x20 0000144f: DUP2 00001450: ADD 00001451: SWAP1 00001452: PUSH2 0x145b 00001455: SWAP2 00001456: SWAP1 00001457: PUSH2 0x2241 0000145a: JUMP 0000145b: JUMPDEST 0000145c: PUSH1 0x01 0000145e: PUSH1 0x01 00001460: PUSH1 0xa0 00001462: SHL 00001463: SUB 00001464: AND 00001465: SUB 00001466: PUSH2 0x1482 00001469: JUMPI 0000146a: PUSH1 0x40 0000146c: MLOAD 0000146d: PUSH4 0xd92e233d 00001472: PUSH1 0xe0 00001474: SHL 00001475: DUP2 00001476: MSTORE 00001477: PUSH1 0x04 00001479: ADD 0000147a: PUSH1 0x40 0000147c: MLOAD 0000147d: DUP1 0000147e: SWAP2 0000147f: SUB 00001480: SWAP1 00001481: REVERT 00001482: JUMPDEST 00001483: PUSH1 0x00 00001485: PUSH1 0x01 00001487: SLOAD 00001488: DUP6 00001489: DUP6 0000148a: DUP5 0000148b: DUP2 0000148c: DUP2 0000148d: LT 0000148e: PUSH2 0x1499 00001491: JUMPI 00001492: PUSH2 0x1499 00001495: PUSH2 0x25d9 00001498: JUMP 00001499: JUMPDEST 0000149a: SWAP1 0000149b: POP 0000149c: PUSH1 0x20 0000149e: MUL 0000149f: ADD 000014a0: PUSH1 0x20 000014a2: DUP2 000014a3: ADD 000014a4: SWAP1 000014a5: PUSH2 0x14ae 000014a8: SWAP2 000014a9: SWAP1 000014aa: PUSH2 0x2241 000014ad: JUMP 000014ae: JUMPDEST 000014af: PUSH1 0x40 000014b1: MLOAD 000014b2: PUSH1 0x20 000014b4: ADD 000014b5: PUSH2 0x14da 000014b8: SWAP3 000014b9: SWAP2 000014ba: SWAP1 000014bb: SWAP2 000014bc: DUP3 000014bd: MSTORE 000014be: PUSH1 0x60 000014c0: SHL 000014c1: PUSH12 0xffffffffffffffffffffffff 000014ce: NOT 000014cf: AND 000014d0: PUSH1 0x20 000014d2: DUP3 000014d3: ADD 000014d4: MSTORE 000014d5: PUSH1 0x34 000014d7: ADD 000014d8: SWAP1 000014d9: JUMP 000014da: JUMPDEST 000014db: PUSH1 0x40 000014dd: DUP1 000014de: MLOAD 000014df: PUSH1 0x1f 000014e1: NOT 000014e2: DUP2 000014e3: DUP5 000014e4: SUB 000014e5: ADD 000014e6: DUP2 000014e7: MSTORE 000014e8: SWAP2 000014e9: DUP2 000014ea: MSTORE 000014eb: DUP2 000014ec: MLOAD 000014ed: PUSH1 0x20 000014ef: SWAP3 000014f0: DUP4 000014f1: ADD 000014f2: KECCAK256 000014f3: PUSH1 0x00 000014f5: DUP2 000014f6: DUP2 000014f7: MSTORE 000014f8: PUSH1 0x06 000014fa: SWAP1 000014fb: SWAP4 000014fc: MSTORE 000014fd: SWAP2 000014fe: KECCAK256 000014ff: SLOAD 00001500: SWAP1 00001501: SWAP2 00001502: POP 00001503: PUSH1 0xff 00001505: AND 00001506: ISZERO 00001507: PUSH2 0x1523 0000150a: JUMPI 0000150b: PUSH1 0x40 0000150d: MLOAD 0000150e: PUSH4 0x120e00c9 00001513: PUSH1 0xe0 00001515: SHL 00001516: DUP2 00001517: MSTORE 00001518: PUSH1 0x04 0000151a: ADD 0000151b: PUSH1 0x40 0000151d: MLOAD 0000151e: DUP1 0000151f: SWAP2 00001520: SUB 00001521: SWAP1 00001522: REVERT 00001523: JUMPDEST 00001524: PUSH1 0x00 00001526: SWAP1 00001527: DUP2 00001528: MSTORE 00001529: PUSH1 0x06 0000152b: PUSH1 0x20 0000152d: MSTORE 0000152e: PUSH1 0x40 00001530: SWAP1 00001531: KECCAK256 00001532: DUP1 00001533: SLOAD 00001534: PUSH1 0xff 00001536: NOT 00001537: AND 00001538: PUSH1 0x01 0000153a: OR 0000153b: SWAP1 0000153c: SSTORE 0000153d: PUSH2 0x1545 00001540: DUP2 00001541: PUSH2 0x2596 00001544: JUMP 00001545: JUMPDEST 00001546: SWAP1 00001547: POP 00001548: PUSH2 0x142a 0000154b: JUMP 0000154c: JUMPDEST 0000154d: POP 0000154e: PUSH1 0x01 00001550: DUP1 00001551: SLOAD 00001552: PUSH1 0x00 00001554: SWAP1 00001555: DUP2 00001556: MSTORE 00001557: PUSH1 0x07 00001559: PUSH1 0x20 0000155b: SWAP1 0000155c: DUP2 0000155d: MSTORE 0000155e: PUSH1 0x40 00001560: DUP1 00001561: DUP4 00001562: KECCAK256 00001563: SWAP6 00001564: SWAP1 00001565: SWAP6 00001566: SSTORE 00001567: SWAP2 00001568: SLOAD 00001569: DUP2 0000156a: MSTORE 0000156b: PUSH1 0x08 0000156d: SWAP1 0000156e: SWAP2 0000156f: MSTORE 00001570: SWAP2 00001571: SWAP1 00001572: SWAP2 00001573: KECCAK256 00001574: SSTORE 00001575: POP 00001576: JUMP 00001577: JUMPDEST 00001578: PUSH1 0x00 0000157a: DUP1 0000157b: MLOAD 0000157c: PUSH1 0x20 0000157e: PUSH2 0x2646 00001581: DUP4 00001582: CODECOPY 00001583: DUP2 00001584: MLOAD 00001585: SWAP2 00001586: MSTORE 00001587: SLOAD 00001588: PUSH1 0xff 0000158a: AND 0000158b: ISZERO 0000158c: PUSH2 0x0a7f 0000158f: JUMPI 00001590: PUSH1 0x40 00001592: MLOAD 00001593: PUSH4 0xd93c0665 00001598: PUSH1 0xe0 0000159a: SHL 0000159b: DUP2 0000159c: MSTORE 0000159d: PUSH1 0x04 0000159f: ADD 000015a0: PUSH1 0x40 000015a2: MLOAD 000015a3: DUP1 000015a4: SWAP2 000015a5: SUB 000015a6: SWAP1 000015a7: REVERT 000015a8: JUMPDEST 000015a9: PUSH1 0x0b 000015ab: SLOAD 000015ac: PUSH1 0x01 000015ae: PUSH1 0x01 000015b0: PUSH1 0xa0 000015b2: SHL 000015b3: SUB 000015b4: AND 000015b5: ISZERO 000015b6: PUSH2 0x0abd 000015b9: JUMPI 000015ba: PUSH1 0x0b 000015bc: SLOAD 000015bd: PUSH1 0x40 000015bf: MLOAD 000015c0: PUSH4 0xdc7f9743 000015c5: PUSH1 0xe0 000015c7: SHL 000015c8: DUP2 000015c9: MSTORE 000015ca: PUSH1 0x01 000015cc: PUSH1 0x01 000015ce: PUSH1 0xa0 000015d0: SHL 000015d1: SUB 000015d2: DUP5 000015d3: DUP2 000015d4: AND 000015d5: PUSH1 0x04 000015d7: DUP4 000015d8: ADD 000015d9: MSTORE 000015da: PUSH1 0x24 000015dc: DUP3 000015dd: ADD 000015de: DUP5 000015df: SWAP1 000015e0: MSTORE 000015e1: SWAP1 000015e2: SWAP2 000015e3: AND 000015e4: SWAP1 000015e5: PUSH4 0xdc7f9743 000015ea: SWAP1 000015eb: PUSH1 0x44 000015ed: ADD 000015ee: PUSH1 0x20 000015f0: PUSH1 0x40 000015f2: MLOAD 000015f3: DUP1 000015f4: DUP4 000015f5: SUB 000015f6: DUP2 000015f7: DUP7 000015f8: GAS 000015f9: STATICCALL 000015fa: SWAP3 000015fb: POP 000015fc: POP 000015fd: POP 000015fe: DUP1 000015ff: ISZERO 00001600: PUSH2 0x1626 00001603: JUMPI 00001604: POP 00001605: PUSH1 0x40 00001607: DUP1 00001608: MLOAD 00001609: PUSH1 0x1f 0000160b: RETURNDATASIZE 0000160c: SWAP1 0000160d: DUP2 0000160e: ADD 0000160f: PUSH1 0x1f 00001611: NOT 00001612: AND 00001613: DUP3 00001614: ADD 00001615: SWAP1 00001616: SWAP3 00001617: MSTORE 00001618: PUSH2 0x1623 0000161b: SWAP2 0000161c: DUP2 0000161d: ADD 0000161e: SWAP1 0000161f: PUSH2 0x25ef 00001622: JUMP 00001623: JUMPDEST 00001624: PUSH1 0x01 00001626: JUMPDEST 00001627: ISZERO 00001628: PUSH2 0x0abd 0000162b: JUMPI 0000162c: DUP1 0000162d: PUSH2 0x0a6a 00001630: JUMPI 00001631: PUSH1 0x40 00001633: MLOAD 00001634: PUSH4 0x1930e3c9 00001639: PUSH1 0xe1 0000163b: SHL 0000163c: DUP2 0000163d: MSTORE 0000163e: PUSH1 0x04 00001640: ADD 00001641: PUSH1 0x40 00001643: MLOAD 00001644: DUP1 00001645: SWAP2 00001646: SUB 00001647: SWAP1 00001648: REVERT 00001649: JUMPDEST 0000164a: PUSH1 0x40 0000164c: MLOAD 0000164d: PUSH1 0x01 0000164f: PUSH1 0x01 00001651: PUSH1 0xa0 00001653: SHL 00001654: SUB 00001655: DUP4 00001656: DUP2 00001657: AND 00001658: PUSH1 0x24 0000165a: DUP4 0000165b: ADD 0000165c: MSTORE 0000165d: PUSH1 0x44 0000165f: DUP3 00001660: ADD 00001661: DUP4 00001662: SWAP1 00001663: MSTORE 00001664: PUSH2 0x0a6a 00001667: SWAP2 00001668: DUP6 00001669: SWAP2 0000166a: DUP3 0000166b: AND 0000166c: SWAP1 0000166d: PUSH4 0xa9059cbb 00001672: SWAP1 00001673: PUSH1 0x64 00001675: ADD 00001676: JUMPDEST 00001677: PUSH1 0x40 00001679: MLOAD 0000167a: PUSH1 0x20 0000167c: DUP2 0000167d: DUP4 0000167e: SUB 0000167f: SUB 00001680: DUP2 00001681: MSTORE 00001682: SWAP1 00001683: PUSH1 0x40 00001685: MSTORE 00001686: SWAP2 00001687: POP 00001688: PUSH1 0xe0 0000168a: SHL 0000168b: PUSH1 0x20 0000168d: DUP3 0000168e: ADD 0000168f: DUP1 00001690: MLOAD 00001691: PUSH1 0x01 00001693: PUSH1 0x01 00001695: PUSH1 0xe0 00001697: SHL 00001698: SUB 00001699: DUP4 0000169a: DUP2 0000169b: DUP4 0000169c: AND 0000169d: OR 0000169e: DUP4 0000169f: MSTORE 000016a0: POP 000016a1: POP 000016a2: POP 000016a3: POP 000016a4: PUSH2 0x1c4b 000016a7: JUMP 000016a8: JUMPDEST 000016a9: PUSH2 0x16b0 000016ac: PUSH2 0x13b5 000016af: JUMP 000016b0: JUMPDEST 000016b1: PUSH1 0x00 000016b3: DUP1 000016b4: MLOAD 000016b5: PUSH1 0x20 000016b7: PUSH2 0x2646 000016ba: DUP4 000016bb: CODECOPY 000016bc: DUP2 000016bd: MLOAD 000016be: SWAP2 000016bf: MSTORE 000016c0: DUP1 000016c1: SLOAD 000016c2: PUSH1 0xff 000016c4: NOT 000016c5: AND 000016c6: DUP2 000016c7: SSTORE 000016c8: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa 000016e9: CALLER 000016ea: JUMPDEST 000016eb: PUSH1 0x40 000016ed: MLOAD 000016ee: PUSH1 0x01 000016f0: PUSH1 0x01 000016f2: PUSH1 0xa0 000016f4: SHL 000016f5: SUB 000016f6: SWAP1 000016f7: SWAP2 000016f8: AND 000016f9: DUP2 000016fa: MSTORE 000016fb: PUSH1 0x20 000016fd: ADD 000016fe: PUSH1 0x40 00001700: MLOAD 00001701: DUP1 00001702: SWAP2 00001703: SUB 00001704: SWAP1 00001705: LOG1 00001706: POP 00001707: JUMP 00001708: JUMPDEST 00001709: ADDRESS 0000170a: PUSH1 0x01 0000170c: PUSH1 0x01 0000170e: PUSH1 0xa0 00001710: SHL 00001711: SUB 00001712: PUSH32 0x00000000000000000000000049643fc85fb1f25b6775ebbbdc69295d45105abc 00001733: AND 00001734: EQ 00001735: DUP1 00001736: PUSH2 0x178f 00001739: JUMPI 0000173a: POP 0000173b: PUSH32 0x00000000000000000000000049643fc85fb1f25b6775ebbbdc69295d45105abc 0000175c: PUSH1 0x01 0000175e: PUSH1 0x01 00001760: PUSH1 0xa0 00001762: SHL 00001763: SUB 00001764: AND 00001765: PUSH2 0x1783 00001768: PUSH1 0x00 0000176a: DUP1 0000176b: MLOAD 0000176c: PUSH1 0x20 0000176e: PUSH2 0x2626 00001771: DUP4 00001772: CODECOPY 00001773: DUP2 00001774: MLOAD 00001775: SWAP2 00001776: MSTORE 00001777: SLOAD 00001778: PUSH1 0x01 0000177a: PUSH1 0x01 0000177c: PUSH1 0xa0 0000177e: SHL 0000177f: SUB 00001780: AND 00001781: SWAP1 00001782: JUMP 00001783: JUMPDEST 00001784: PUSH1 0x01 00001786: PUSH1 0x01 00001788: PUSH1 0xa0 0000178a: SHL 0000178b: SUB 0000178c: AND 0000178d: EQ 0000178e: ISZERO 0000178f: JUMPDEST 00001790: ISZERO 00001791: PUSH2 0x0a7f 00001794: JUMPI 00001795: PUSH1 0x40 00001797: MLOAD 00001798: PUSH4 0x703e46dd 0000179d: PUSH1 0xe1 0000179f: SHL 000017a0: DUP2 000017a1: MSTORE 000017a2: PUSH1 0x04 000017a4: ADD 000017a5: PUSH1 0x40 000017a7: MLOAD 000017a8: DUP1 000017a9: SWAP2 000017aa: SUB 000017ab: SWAP1 000017ac: REVERT 000017ad: JUMPDEST 000017ae: PUSH2 0x0cad 000017b1: PUSH2 0x1383 000017b4: JUMP 000017b5: JUMPDEST 000017b6: DUP2 000017b7: PUSH1 0x01 000017b9: PUSH1 0x01 000017bb: PUSH1 0xa0 000017bd: SHL 000017be: SUB 000017bf: AND 000017c0: PUSH4 0x52d1902d 000017c5: PUSH1 0x40 000017c7: MLOAD 000017c8: DUP2 000017c9: PUSH4 0xffffffff 000017ce: AND 000017cf: PUSH1 0xe0 000017d1: SHL 000017d2: DUP2 000017d3: MSTORE 000017d4: PUSH1 0x04 000017d6: ADD 000017d7: PUSH1 0x20 000017d9: PUSH1 0x40 000017db: MLOAD 000017dc: DUP1 000017dd: DUP4 000017de: SUB 000017df: DUP2 000017e0: DUP7 000017e1: GAS 000017e2: STATICCALL 000017e3: SWAP3 000017e4: POP 000017e5: POP 000017e6: POP 000017e7: DUP1 000017e8: ISZERO 000017e9: PUSH2 0x180f 000017ec: JUMPI 000017ed: POP 000017ee: PUSH1 0x40 000017f0: DUP1 000017f1: MLOAD 000017f2: PUSH1 0x1f 000017f4: RETURNDATASIZE 000017f5: SWAP1 000017f6: DUP2 000017f7: ADD 000017f8: PUSH1 0x1f 000017fa: NOT 000017fb: AND 000017fc: DUP3 000017fd: ADD 000017fe: SWAP1 000017ff: SWAP3 00001800: MSTORE 00001801: PUSH2 0x180c 00001804: SWAP2 00001805: DUP2 00001806: ADD 00001807: SWAP1 00001808: PUSH2 0x260c 0000180b: JUMP 0000180c: JUMPDEST 0000180d: PUSH1 0x01 0000180f: JUMPDEST 00001810: PUSH2 0x1837 00001813: JUMPI 00001814: PUSH1 0x40 00001816: MLOAD 00001817: PUSH4 0x4c9c8ce3 0000181c: PUSH1 0xe0 0000181e: SHL 0000181f: DUP2 00001820: MSTORE 00001821: PUSH1 0x01 00001823: PUSH1 0x01 00001825: PUSH1 0xa0 00001827: SHL 00001828: SUB 00001829: DUP4 0000182a: AND 0000182b: PUSH1 0x04 0000182d: DUP3 0000182e: ADD 0000182f: MSTORE 00001830: PUSH1 0x24 00001832: ADD 00001833: PUSH2 0x0c9b 00001836: JUMP 00001837: JUMPDEST 00001838: PUSH1 0x00 0000183a: DUP1 0000183b: MLOAD 0000183c: PUSH1 0x20 0000183e: PUSH2 0x2626 00001841: DUP4 00001842: CODECOPY 00001843: DUP2 00001844: MLOAD 00001845: SWAP2 00001846: MSTORE 00001847: DUP2 00001848: EQ 00001849: PUSH2 0x1868 0000184c: JUMPI 0000184d: PUSH1 0x40 0000184f: MLOAD 00001850: PUSH4 0x2a875269 00001855: PUSH1 0xe2 00001857: SHL 00001858: DUP2 00001859: MSTORE 0000185a: PUSH1 0x04 0000185c: DUP2 0000185d: ADD 0000185e: DUP3 0000185f: SWAP1 00001860: MSTORE 00001861: PUSH1 0x24 00001863: ADD 00001864: PUSH2 0x0c9b 00001867: JUMP 00001868: JUMPDEST 00001869: PUSH2 0x0a6a 0000186c: DUP4 0000186d: DUP4 0000186e: PUSH2 0x1cae 00001871: JUMP 00001872: JUMPDEST 00001873: ADDRESS 00001874: PUSH1 0x01 00001876: PUSH1 0x01 00001878: PUSH1 0xa0 0000187a: SHL 0000187b: SUB 0000187c: PUSH32 0x00000000000000000000000049643fc85fb1f25b6775ebbbdc69295d45105abc 0000189d: AND 0000189e: EQ 0000189f: PUSH2 0x0a7f 000018a2: JUMPI 000018a3: PUSH1 0x40 000018a5: MLOAD 000018a6: PUSH4 0x703e46dd 000018ab: PUSH1 0xe1 000018ad: SHL 000018ae: DUP2 000018af: MSTORE 000018b0: PUSH1 0x04 000018b2: ADD 000018b3: PUSH1 0x40 000018b5: MLOAD 000018b6: DUP1 000018b7: SWAP2 000018b8: SUB 000018b9: SWAP1 000018ba: REVERT 000018bb: JUMPDEST 000018bc: PUSH1 0x40 000018be: MLOAD 000018bf: PUSH1 0x01 000018c1: PUSH1 0x01 000018c3: PUSH1 0xa0 000018c5: SHL 000018c6: SUB 000018c7: DUP5 000018c8: DUP2 000018c9: AND 000018ca: PUSH1 0x24 000018cc: DUP4 000018cd: ADD 000018ce: MSTORE 000018cf: DUP4 000018d0: DUP2 000018d1: AND 000018d2: PUSH1 0x44 000018d4: DUP4 000018d5: ADD 000018d6: MSTORE 000018d7: PUSH1 0x64 000018d9: DUP3 000018da: ADD 000018db: DUP4 000018dc: SWAP1 000018dd: MSTORE 000018de: PUSH2 0x18f4 000018e1: SWAP2 000018e2: DUP7 000018e3: SWAP2 000018e4: DUP3 000018e5: AND 000018e6: SWAP1 000018e7: PUSH4 0x23b872dd 000018ec: SWAP1 000018ed: PUSH1 0x84 000018ef: ADD 000018f0: PUSH2 0x1676 000018f3: JUMP 000018f4: JUMPDEST 000018f5: POP 000018f6: POP 000018f7: POP 000018f8: POP 000018f9: JUMP 000018fa: JUMPDEST 000018fb: PUSH32 0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00 0000191c: DUP1 0000191d: SLOAD 0000191e: PUSH1 0x01 00001920: PUSH1 0x01 00001922: PUSH1 0xa0 00001924: SHL 00001925: SUB 00001926: NOT 00001927: AND 00001928: DUP2 00001929: SSTORE 0000192a: PUSH2 0x0abd 0000192d: DUP3 0000192e: PUSH2 0x1d04 00001931: JUMP 00001932: JUMPDEST 00001933: PUSH2 0x193a 00001936: PUSH2 0x1577 00001939: JUMP 0000193a: JUMPDEST 0000193b: PUSH1 0x00 0000193d: DUP1 0000193e: MLOAD 0000193f: PUSH1 0x20 00001941: PUSH2 0x2646 00001944: DUP4 00001945: CODECOPY 00001946: DUP2 00001947: MLOAD 00001948: SWAP2 00001949: MSTORE 0000194a: DUP1 0000194b: SLOAD 0000194c: PUSH1 0xff 0000194e: NOT 0000194f: AND 00001950: PUSH1 0x01 00001952: OR 00001953: DUP2 00001954: SSTORE 00001955: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 00001976: CALLER 00001977: PUSH2 0x16ea 0000197a: JUMP 0000197b: JUMPDEST 0000197c: PUSH2 0x1983 0000197f: PUSH2 0x1d75 00001982: JUMP 00001983: JUMPDEST 00001984: PUSH2 0x18f4 00001987: DUP5 00001988: DUP5 00001989: DUP5 0000198a: DUP5 0000198b: PUSH2 0x1dbe 0000198e: JUMP 0000198f: JUMPDEST 00001990: PUSH2 0x1997 00001993: PUSH2 0x1d75 00001996: JUMP 00001997: JUMPDEST 00001998: PUSH2 0x0cad 0000199b: DUP2 0000199c: PUSH2 0x1df4 0000199f: JUMP 000019a0: JUMPDEST 000019a1: PUSH2 0x19a8 000019a4: PUSH2 0x1d75 000019a7: JUMP 000019a8: JUMPDEST 000019a9: PUSH2 0x0a7f 000019ac: PUSH2 0x1e26 000019af: JUMP 000019b0: JUMPDEST 000019b1: PUSH1 0x00 000019b3: DUP5 000019b4: DUP2 000019b5: MSTORE 000019b6: PUSH1 0x05 000019b8: PUSH1 0x20 000019ba: SWAP1 000019bb: DUP2 000019bc: MSTORE 000019bd: PUSH1 0x40 000019bf: DUP1 000019c0: DUP4 000019c1: KECCAK256 000019c2: DUP1 000019c3: SLOAD 000019c4: PUSH1 0xff 000019c6: NOT 000019c7: AND 000019c8: PUSH1 0x01 000019ca: OR 000019cb: SWAP1 000019cc: SSTORE 000019cd: PUSH1 0x04 000019cf: SWAP1 000019d0: SWAP2 000019d1: MSTORE 000019d2: DUP2 000019d3: KECCAK256 000019d4: DUP2 000019d5: SWAP1 000019d6: SSTORE 000019d7: PUSH2 0x19dd 000019da: DUP5 000019db: SWAP1 000019dc: JUMP 000019dd: JUMPDEST 000019de: SWAP1 000019df: POP 000019e0: DUP2 000019e1: PUSH1 0x01 000019e3: PUSH1 0x01 000019e5: PUSH1 0xa0 000019e7: SHL 000019e8: SUB 000019e9: DUP3 000019ea: AND 000019eb: PUSH2 0x1b3f 000019ee: JUMPI 000019ef: PUSH1 0x02 000019f1: SLOAD 000019f2: PUSH1 0x40 000019f4: MLOAD 000019f5: PUSH1 0x24 000019f7: DUP2 000019f8: ADD 000019f9: DUP7 000019fa: SWAP1 000019fb: MSTORE 000019fc: PUSH1 0x00 000019fe: SWAP2 000019ff: PUSH1 0x01 00001a01: PUSH1 0x01 00001a03: PUSH1 0xa0 00001a05: SHL 00001a06: SUB 00001a07: AND 00001a08: SWAP1 00001a09: PUSH1 0x44 00001a0b: ADD 00001a0c: PUSH1 0x40 00001a0e: DUP1 00001a0f: MLOAD 00001a10: PUSH1 0x1f 00001a12: NOT 00001a13: DUP2 00001a14: DUP5 00001a15: SUB 00001a16: ADD 00001a17: DUP2 00001a18: MSTORE 00001a19: SWAP2 00001a1a: DUP2 00001a1b: MSTORE 00001a1c: PUSH1 0x20 00001a1e: DUP3 00001a1f: ADD 00001a20: DUP1 00001a21: MLOAD 00001a22: PUSH1 0x01 00001a24: PUSH1 0x01 00001a26: PUSH1 0xe0 00001a28: SHL 00001a29: SUB 00001a2a: AND 00001a2b: PUSH4 0x2e1a7d4d 00001a30: PUSH1 0xe0 00001a32: SHL 00001a33: OR 00001a34: SWAP1 00001a35: MSTORE 00001a36: MLOAD 00001a37: PUSH2 0x1a40 00001a3a: SWAP2 00001a3b: SWAP1 00001a3c: PUSH2 0x25bd 00001a3f: JUMP 00001a40: JUMPDEST 00001a41: PUSH1 0x00 00001a43: PUSH1 0x40 00001a45: MLOAD 00001a46: DUP1 00001a47: DUP4 00001a48: SUB 00001a49: DUP2 00001a4a: PUSH1 0x00 00001a4c: DUP7 00001a4d: GAS 00001a4e: CALL 00001a4f: SWAP2 00001a50: POP 00001a51: POP 00001a52: RETURNDATASIZE 00001a53: DUP1 00001a54: PUSH1 0x00 00001a56: DUP2 00001a57: EQ 00001a58: PUSH2 0x1a7d 00001a5b: JUMPI 00001a5c: PUSH1 0x40 00001a5e: MLOAD 00001a5f: SWAP2 00001a60: POP 00001a61: PUSH1 0x1f 00001a63: NOT 00001a64: PUSH1 0x3f 00001a66: RETURNDATASIZE 00001a67: ADD 00001a68: AND 00001a69: DUP3 00001a6a: ADD 00001a6b: PUSH1 0x40 00001a6d: MSTORE 00001a6e: RETURNDATASIZE 00001a6f: DUP3 00001a70: MSTORE 00001a71: RETURNDATASIZE 00001a72: PUSH1 0x00 00001a74: PUSH1 0x20 00001a76: DUP5 00001a77: ADD 00001a78: RETURNDATACOPY 00001a79: PUSH2 0x1a82 00001a7c: JUMP 00001a7d: JUMPDEST 00001a7e: PUSH1 0x60 00001a80: SWAP2 00001a81: POP 00001a82: JUMPDEST 00001a83: POP 00001a84: POP 00001a85: SWAP1 00001a86: POP 00001a87: DUP1 00001a88: PUSH2 0x1aa4 00001a8b: JUMPI 00001a8c: PUSH1 0x40 00001a8e: MLOAD 00001a8f: PUSH4 0x5140f6bf 00001a94: PUSH1 0xe1 00001a96: SHL 00001a97: DUP2 00001a98: MSTORE 00001a99: PUSH1 0x04 00001a9b: ADD 00001a9c: PUSH1 0x40 00001a9e: MLOAD 00001a9f: DUP1 00001aa0: SWAP2 00001aa1: SUB 00001aa2: SWAP1 00001aa3: REVERT 00001aa4: JUMPDEST 00001aa5: PUSH1 0x00 00001aa7: DUP3 00001aa8: PUSH1 0x01 00001aaa: PUSH1 0x01 00001aac: PUSH1 0xa0 00001aae: SHL 00001aaf: SUB 00001ab0: AND 00001ab1: DUP7 00001ab2: PUSH2 0x0dac 00001ab5: SWAP1 00001ab6: PUSH1 0x40 00001ab8: MLOAD 00001ab9: PUSH1 0x00 00001abb: PUSH1 0x40 00001abd: MLOAD 00001abe: DUP1 00001abf: DUP4 00001ac0: SUB 00001ac1: DUP2 00001ac2: DUP6 00001ac3: DUP9 00001ac4: DUP9 00001ac5: CALL 00001ac6: SWAP4 00001ac7: POP 00001ac8: POP 00001ac9: POP 00001aca: POP 00001acb: RETURNDATASIZE 00001acc: DUP1 00001acd: PUSH1 0x00 00001acf: DUP2 00001ad0: EQ 00001ad1: PUSH2 0x1af6 00001ad4: JUMPI 00001ad5: PUSH1 0x40 00001ad7: MLOAD 00001ad8: SWAP2 00001ad9: POP 00001ada: PUSH1 0x1f 00001adc: NOT 00001add: PUSH1 0x3f 00001adf: RETURNDATASIZE 00001ae0: ADD 00001ae1: AND 00001ae2: DUP3 00001ae3: ADD 00001ae4: PUSH1 0x40 00001ae6: MSTORE 00001ae7: RETURNDATASIZE 00001ae8: DUP3 00001ae9: MSTORE 00001aea: RETURNDATASIZE 00001aeb: PUSH1 0x00 00001aed: PUSH1 0x20 00001aef: DUP5 00001af0: ADD 00001af1: RETURNDATACOPY 00001af2: PUSH2 0x1afb 00001af5: JUMP 00001af6: JUMPDEST 00001af7: PUSH1 0x60 00001af9: SWAP2 00001afa: POP 00001afb: JUMPDEST 00001afc: POP 00001afd: POP 00001afe: SWAP1 00001aff: POP 00001b00: DUP1 00001b01: PUSH2 0x1b38 00001b04: JUMPI 00001b05: PUSH1 0x40 00001b07: MLOAD 00001b08: DUP9 00001b09: DUP2 00001b0a: MSTORE 00001b0b: PUSH32 0xc8474031e7695217dfb277d2c9b53316979ff23d2b0a1d002e277510971be3c0 00001b2c: SWAP1 00001b2d: PUSH1 0x20 00001b2f: ADD 00001b30: PUSH1 0x40 00001b32: MLOAD 00001b33: DUP1 00001b34: SWAP2 00001b35: SUB 00001b36: SWAP1 00001b37: LOG1 00001b38: JUMPDEST 00001b39: POP 00001b3a: POP 00001b3b: PUSH2 0x1c10 00001b3e: JUMP 00001b3f: JUMPDEST 00001b40: PUSH1 0x01 00001b42: PUSH1 0x01 00001b44: PUSH1 0xa0 00001b46: SHL 00001b47: SUB 00001b48: DUP3 00001b49: AND 00001b4a: PUSH1 0x00 00001b4c: SWAP1 00001b4d: DUP2 00001b4e: MSTORE 00001b4f: PUSH1 0x09 00001b51: PUSH1 0x20 00001b53: MSTORE 00001b54: PUSH1 0x40 00001b56: SWAP1 00001b57: KECCAK256 00001b58: SLOAD 00001b59: PUSH1 0xff 00001b5b: AND 00001b5c: PUSH2 0x1bca 00001b5f: JUMPI 00001b60: PUSH1 0x40 00001b62: MLOAD 00001b63: PUSH4 0x40c10f19 00001b68: PUSH1 0xe0 00001b6a: SHL 00001b6b: DUP2 00001b6c: MSTORE 00001b6d: PUSH1 0x01 00001b6f: PUSH1 0x01 00001b71: PUSH1 0xa0 00001b73: SHL 00001b74: SUB 00001b75: DUP3 00001b76: DUP2 00001b77: AND 00001b78: PUSH1 0x04 00001b7a: DUP4 00001b7b: ADD 00001b7c: MSTORE 00001b7d: PUSH1 0x24 00001b7f: DUP3 00001b80: ADD 00001b81: DUP7 00001b82: SWAP1 00001b83: MSTORE 00001b84: DUP4 00001b85: SWAP2 00001b86: SWAP1 00001b87: DUP3 00001b88: AND 00001b89: SWAP1 00001b8a: PUSH4 0x40c10f19 00001b8f: SWAP1 00001b90: PUSH1 0x44 00001b92: ADD 00001b93: PUSH1 0x00 00001b95: PUSH1 0x40 00001b97: MLOAD 00001b98: DUP1 00001b99: DUP4 00001b9a: SUB 00001b9b: DUP2 00001b9c: PUSH1 0x00 00001b9e: DUP8 00001b9f: DUP1 00001ba0: EXTCODESIZE 00001ba1: ISZERO 00001ba2: DUP1 00001ba3: ISZERO 00001ba4: PUSH2 0x1bac 00001ba7: JUMPI 00001ba8: PUSH1 0x00 00001baa: DUP1 00001bab: REVERT 00001bac: JUMPDEST 00001bad: POP 00001bae: GAS 00001baf: CALL 00001bb0: ISZERO 00001bb1: DUP1 00001bb2: ISZERO 00001bb3: PUSH2 0x1bc0 00001bb6: JUMPI 00001bb7: RETURNDATASIZE 00001bb8: PUSH1 0x00 00001bba: DUP1 00001bbb: RETURNDATACOPY 00001bbc: RETURNDATASIZE 00001bbd: PUSH1 0x00 00001bbf: REVERT 00001bc0: JUMPDEST 00001bc1: POP 00001bc2: POP 00001bc3: POP 00001bc4: POP 00001bc5: POP 00001bc6: PUSH2 0x1c10 00001bc9: JUMP 00001bca: JUMPDEST 00001bcb: DUP2 00001bcc: PUSH2 0x1bd6 00001bcf: DUP2 00001bd0: DUP4 00001bd1: DUP8 00001bd2: PUSH2 0x1e47 00001bd5: JUMP 00001bd6: JUMPDEST 00001bd7: PUSH2 0x1c0e 00001bda: JUMPI 00001bdb: PUSH1 0x40 00001bdd: MLOAD 00001bde: DUP8 00001bdf: DUP2 00001be0: MSTORE 00001be1: PUSH32 0xe8c367fc923e93a5b6174b9e709e10ae2113089a40621f67c5da23e001ff50e0 00001c02: SWAP1 00001c03: PUSH1 0x20 00001c05: ADD 00001c06: PUSH1 0x40 00001c08: MLOAD 00001c09: DUP1 00001c0a: SWAP2 00001c0b: SUB 00001c0c: SWAP1 00001c0d: LOG1 00001c0e: JUMPDEST 00001c0f: POP 00001c10: JUMPDEST 00001c11: PUSH1 0x40 00001c13: MLOAD 00001c14: DUP7 00001c15: DUP2 00001c16: MSTORE 00001c17: PUSH32 0xed6b6ea75ec116db755ad82449230664750da9104c4450d6cd078879a65aed8e 00001c38: SWAP1 00001c39: PUSH1 0x20 00001c3b: ADD 00001c3c: PUSH1 0x40 00001c3e: MLOAD 00001c3f: DUP1 00001c40: SWAP2 00001c41: SUB 00001c42: SWAP1 00001c43: LOG1 00001c44: POP 00001c45: POP 00001c46: POP 00001c47: POP 00001c48: POP 00001c49: POP 00001c4a: JUMP 00001c4b: JUMPDEST 00001c4c: PUSH1 0x00 00001c4e: PUSH2 0x1c60 00001c51: PUSH1 0x01 00001c53: PUSH1 0x01 00001c55: PUSH1 0xa0 00001c57: SHL 00001c58: SUB 00001c59: DUP5 00001c5a: AND 00001c5b: DUP4 00001c5c: PUSH2 0x1f31 00001c5f: JUMP 00001c60: JUMPDEST 00001c61: SWAP1 00001c62: POP 00001c63: DUP1 00001c64: MLOAD 00001c65: PUSH1 0x00 00001c67: EQ 00001c68: ISZERO 00001c69: DUP1 00001c6a: ISZERO 00001c6b: PUSH2 0x1c85 00001c6e: JUMPI 00001c6f: POP 00001c70: DUP1 00001c71: DUP1 00001c72: PUSH1 0x20 00001c74: ADD 00001c75: SWAP1 00001c76: MLOAD 00001c77: DUP2 00001c78: ADD 00001c79: SWAP1 00001c7a: PUSH2 0x1c83 00001c7d: SWAP2 00001c7e: SWAP1 00001c7f: PUSH2 0x25ef 00001c82: JUMP 00001c83: JUMPDEST 00001c84: ISZERO 00001c85: JUMPDEST 00001c86: ISZERO 00001c87: PUSH2 0x0a6a 00001c8a: JUMPI 00001c8b: PUSH1 0x40 00001c8d: MLOAD 00001c8e: PUSH4 0x5274afe7 00001c93: PUSH1 0xe0 00001c95: SHL 00001c96: DUP2 00001c97: MSTORE 00001c98: PUSH1 0x01 00001c9a: PUSH1 0x01 00001c9c: PUSH1 0xa0 00001c9e: SHL 00001c9f: SUB 00001ca0: DUP5 00001ca1: AND 00001ca2: PUSH1 0x04 00001ca4: DUP3 00001ca5: ADD 00001ca6: MSTORE 00001ca7: PUSH1 0x24 00001ca9: ADD 00001caa: PUSH2 0x0c9b 00001cad: JUMP 00001cae: JUMPDEST 00001caf: PUSH2 0x1cb7 00001cb2: DUP3 00001cb3: PUSH2 0x1f3f 00001cb6: JUMP 00001cb7: JUMPDEST 00001cb8: PUSH1 0x40 00001cba: MLOAD 00001cbb: PUSH1 0x01 00001cbd: PUSH1 0x01 00001cbf: PUSH1 0xa0 00001cc1: SHL 00001cc2: SUB 00001cc3: DUP4 00001cc4: AND 00001cc5: SWAP1 00001cc6: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 00001ce7: SWAP1 00001ce8: PUSH1 0x00 00001cea: SWAP1 00001ceb: LOG2 00001cec: DUP1 00001ced: MLOAD 00001cee: ISZERO 00001cef: PUSH2 0x1cfc 00001cf2: JUMPI 00001cf3: PUSH2 0x0a6a 00001cf6: DUP3 00001cf7: DUP3 00001cf8: PUSH2 0x1fa4 00001cfb: JUMP 00001cfc: JUMPDEST 00001cfd: PUSH2 0x0abd 00001d00: PUSH2 0x201a 00001d03: JUMP 00001d04: JUMPDEST 00001d05: PUSH32 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300 00001d26: DUP1 00001d27: SLOAD 00001d28: PUSH1 0x01 00001d2a: PUSH1 0x01 00001d2c: PUSH1 0xa0 00001d2e: SHL 00001d2f: SUB 00001d30: NOT 00001d31: DUP2 00001d32: AND 00001d33: PUSH1 0x01 00001d35: PUSH1 0x01 00001d37: PUSH1 0xa0 00001d39: SHL 00001d3a: SUB 00001d3b: DUP5 00001d3c: DUP2 00001d3d: AND 00001d3e: SWAP2 00001d3f: DUP3 00001d40: OR 00001d41: DUP5 00001d42: SSTORE 00001d43: PUSH1 0x40 00001d45: MLOAD 00001d46: SWAP3 00001d47: AND 00001d48: SWAP2 00001d49: DUP3 00001d4a: SWAP1 00001d4b: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001d6c: SWAP1 00001d6d: PUSH1 0x00 00001d6f: SWAP1 00001d70: LOG3 00001d71: POP 00001d72: POP 00001d73: POP 00001d74: JUMP 00001d75: JUMPDEST 00001d76: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 00001d97: SLOAD 00001d98: PUSH1 0x01 00001d9a: PUSH1 0x40 00001d9c: SHL 00001d9d: SWAP1 00001d9e: DIV 00001d9f: PUSH1 0xff 00001da1: AND 00001da2: PUSH2 0x0a7f 00001da5: JUMPI 00001da6: PUSH1 0x40 00001da8: MLOAD 00001da9: PUSH4 0x1afcd79f 00001dae: PUSH1 0xe3 00001db0: SHL 00001db1: DUP2 00001db2: MSTORE 00001db3: PUSH1 0x04 00001db5: ADD 00001db6: PUSH1 0x40 00001db8: MLOAD 00001db9: DUP1 00001dba: SWAP2 00001dbb: SUB 00001dbc: SWAP1 00001dbd: REVERT 00001dbe: JUMPDEST 00001dbf: PUSH2 0x1dc6 00001dc2: PUSH2 0x1d75 00001dc5: JUMP 00001dc6: JUMPDEST 00001dc7: PUSH1 0x00 00001dc9: DUP1 00001dca: DUP1 00001dcb: SSTORE 00001dcc: PUSH1 0x01 00001dce: SSTORE 00001dcf: PUSH1 0x02 00001dd1: DUP1 00001dd2: SLOAD 00001dd3: PUSH1 0x01 00001dd5: PUSH1 0x01 00001dd7: PUSH1 0xa0 00001dd9: SHL 00001dda: SUB 00001ddb: NOT 00001ddc: AND 00001ddd: PUSH1 0x01 00001ddf: PUSH1 0x01 00001de1: PUSH1 0xa0 00001de3: SHL 00001de4: SUB 00001de5: DUP4 00001de6: AND 00001de7: OR 00001de8: SWAP1 00001de9: SSTORE 00001dea: PUSH2 0x18f4 00001ded: DUP5 00001dee: DUP5 00001def: DUP5 00001df0: PUSH2 0x13e5 00001df3: JUMP 00001df4: JUMPDEST 00001df5: PUSH2 0x1dfc 00001df8: PUSH2 0x1d75 00001dfb: JUMP 00001dfc: JUMPDEST 00001dfd: PUSH1 0x01 00001dff: PUSH1 0x01 00001e01: PUSH1 0xa0 00001e03: SHL 00001e04: SUB 00001e05: DUP2 00001e06: AND 00001e07: PUSH2 0x0ca4 00001e0a: JUMPI 00001e0b: PUSH1 0x40 00001e0d: MLOAD 00001e0e: PUSH4 0x1e4fbdf7 00001e13: PUSH1 0xe0 00001e15: SHL 00001e16: DUP2 00001e17: MSTORE 00001e18: PUSH1 0x00 00001e1a: PUSH1 0x04 00001e1c: DUP3 00001e1d: ADD 00001e1e: MSTORE 00001e1f: PUSH1 0x24 00001e21: ADD 00001e22: PUSH2 0x0c9b 00001e25: JUMP 00001e26: JUMPDEST 00001e27: PUSH2 0x1e2e 00001e2a: PUSH2 0x1d75 00001e2d: JUMP 00001e2e: JUMPDEST 00001e2f: PUSH1 0x00 00001e31: DUP1 00001e32: MLOAD 00001e33: PUSH1 0x20 00001e35: PUSH2 0x2646 00001e38: DUP4 00001e39: CODECOPY 00001e3a: DUP2 00001e3b: MLOAD 00001e3c: SWAP2 00001e3d: MSTORE 00001e3e: DUP1 00001e3f: SLOAD 00001e40: PUSH1 0xff 00001e42: NOT 00001e43: AND 00001e44: SWAP1 00001e45: SSTORE 00001e46: JUMP 00001e47: JUMPDEST 00001e48: PUSH1 0x40 00001e4a: DUP1 00001e4b: MLOAD 00001e4c: PUSH1 0x01 00001e4e: PUSH1 0x01 00001e50: PUSH1 0xa0 00001e52: SHL 00001e53: SUB 00001e54: DUP5 00001e55: DUP2 00001e56: AND 00001e57: PUSH1 0x24 00001e59: DUP4 00001e5a: ADD 00001e5b: MSTORE 00001e5c: PUSH1 0x44 00001e5e: DUP1 00001e5f: DUP4 00001e60: ADD 00001e61: DUP6 00001e62: SWAP1 00001e63: MSTORE 00001e64: DUP4 00001e65: MLOAD 00001e66: DUP1 00001e67: DUP5 00001e68: SUB 00001e69: SWAP1 00001e6a: SWAP2 00001e6b: ADD 00001e6c: DUP2 00001e6d: MSTORE 00001e6e: PUSH1 0x64 00001e70: SWAP1 00001e71: SWAP3 00001e72: ADD 00001e73: DUP4 00001e74: MSTORE 00001e75: PUSH1 0x20 00001e77: DUP3 00001e78: ADD 00001e79: DUP1 00001e7a: MLOAD 00001e7b: PUSH1 0x01 00001e7d: PUSH1 0x01 00001e7f: PUSH1 0xe0 00001e81: SHL 00001e82: SUB 00001e83: AND 00001e84: PUSH4 0xa9059cbb 00001e89: PUSH1 0xe0 00001e8b: SHL 00001e8c: OR 00001e8d: SWAP1 00001e8e: MSTORE 00001e8f: SWAP2 00001e90: MLOAD 00001e91: PUSH1 0x00 00001e93: SWAP3 00001e94: DUP4 00001e95: SWAP3 00001e96: DUP4 00001e97: SWAP3 00001e98: SWAP2 00001e99: DUP9 00001e9a: AND 00001e9b: SWAP2 00001e9c: PUSH2 0x1ea5 00001e9f: SWAP2 00001ea0: SWAP1 00001ea1: PUSH2 0x25bd 00001ea4: JUMP 00001ea5: JUMPDEST 00001ea6: PUSH1 0x00 00001ea8: PUSH1 0x40 00001eaa: MLOAD 00001eab: DUP1 00001eac: DUP4 00001ead: SUB 00001eae: DUP2 00001eaf: PUSH1 0x00 00001eb1: DUP7 00001eb2: GAS 00001eb3: CALL 00001eb4: SWAP2 00001eb5: POP 00001eb6: POP 00001eb7: RETURNDATASIZE 00001eb8: DUP1 00001eb9: PUSH1 0x00 00001ebb: DUP2 00001ebc: EQ 00001ebd: PUSH2 0x1ee2 00001ec0: JUMPI 00001ec1: PUSH1 0x40 00001ec3: MLOAD 00001ec4: SWAP2 00001ec5: POP 00001ec6: PUSH1 0x1f 00001ec8: NOT 00001ec9: PUSH1 0x3f 00001ecb: RETURNDATASIZE 00001ecc: ADD 00001ecd: AND 00001ece: DUP3 00001ecf: ADD 00001ed0: PUSH1 0x40 00001ed2: MSTORE 00001ed3: RETURNDATASIZE 00001ed4: DUP3 00001ed5: MSTORE 00001ed6: RETURNDATASIZE 00001ed7: PUSH1 0x00 00001ed9: PUSH1 0x20 00001edb: DUP5 00001edc: ADD 00001edd: RETURNDATACOPY 00001ede: PUSH2 0x1ee7 00001ee1: JUMP 00001ee2: JUMPDEST 00001ee3: PUSH1 0x60 00001ee5: SWAP2 00001ee6: POP 00001ee7: JUMPDEST 00001ee8: POP 00001ee9: SWAP2 00001eea: POP 00001eeb: SWAP2 00001eec: POP 00001eed: DUP2 00001eee: DUP1 00001eef: ISZERO 00001ef0: PUSH2 0x1f11 00001ef3: JUMPI 00001ef4: POP 00001ef5: DUP1 00001ef6: MLOAD 00001ef7: ISZERO 00001ef8: DUP1 00001ef9: PUSH2 0x1f11 00001efc: JUMPI 00001efd: POP 00001efe: DUP1 00001eff: DUP1 00001f00: PUSH1 0x20 00001f02: ADD 00001f03: SWAP1 00001f04: MLOAD 00001f05: DUP2 00001f06: ADD 00001f07: SWAP1 00001f08: PUSH2 0x1f11 00001f0b: SWAP2 00001f0c: SWAP1 00001f0d: PUSH2 0x25ef 00001f10: JUMP 00001f11: JUMPDEST 00001f12: DUP1 00001f13: ISZERO 00001f14: PUSH2 0x1f27 00001f17: JUMPI 00001f18: POP 00001f19: PUSH1 0x00 00001f1b: DUP7 00001f1c: PUSH1 0x01 00001f1e: PUSH1 0x01 00001f20: PUSH1 0xa0 00001f22: SHL 00001f23: SUB 00001f24: AND 00001f25: EXTCODESIZE 00001f26: GT 00001f27: JUMPDEST 00001f28: SWAP7 00001f29: SWAP6 00001f2a: POP 00001f2b: POP 00001f2c: POP 00001f2d: POP 00001f2e: POP 00001f2f: POP 00001f30: JUMP 00001f31: JUMPDEST 00001f32: PUSH1 0x60 00001f34: PUSH2 0x1276 00001f37: DUP4 00001f38: DUP4 00001f39: PUSH1 0x00 00001f3b: PUSH2 0x2039 00001f3e: JUMP 00001f3f: JUMPDEST 00001f40: DUP1 00001f41: PUSH1 0x01 00001f43: PUSH1 0x01 00001f45: PUSH1 0xa0 00001f47: SHL 00001f48: SUB 00001f49: AND 00001f4a: EXTCODESIZE 00001f4b: PUSH1 0x00 00001f4d: SUB 00001f4e: PUSH2 0x1f75 00001f51: JUMPI 00001f52: PUSH1 0x40 00001f54: MLOAD 00001f55: PUSH4 0x4c9c8ce3 00001f5a: PUSH1 0xe0 00001f5c: SHL 00001f5d: DUP2 00001f5e: MSTORE 00001f5f: PUSH1 0x01 00001f61: PUSH1 0x01 00001f63: PUSH1 0xa0 00001f65: SHL 00001f66: SUB 00001f67: DUP3 00001f68: AND 00001f69: PUSH1 0x04 00001f6b: DUP3 00001f6c: ADD 00001f6d: MSTORE 00001f6e: PUSH1 0x24 00001f70: ADD 00001f71: PUSH2 0x0c9b 00001f74: JUMP 00001f75: JUMPDEST 00001f76: PUSH1 0x00 00001f78: DUP1 00001f79: MLOAD 00001f7a: PUSH1 0x20 00001f7c: PUSH2 0x2626 00001f7f: DUP4 00001f80: CODECOPY 00001f81: DUP2 00001f82: MLOAD 00001f83: SWAP2 00001f84: MSTORE 00001f85: DUP1 00001f86: SLOAD 00001f87: PUSH1 0x01 00001f89: PUSH1 0x01 00001f8b: PUSH1 0xa0 00001f8d: SHL 00001f8e: SUB 00001f8f: NOT 00001f90: AND 00001f91: PUSH1 0x01 00001f93: PUSH1 0x01 00001f95: PUSH1 0xa0 00001f97: SHL 00001f98: SUB 00001f99: SWAP3 00001f9a: SWAP1 00001f9b: SWAP3 00001f9c: AND 00001f9d: SWAP2 00001f9e: SWAP1 00001f9f: SWAP2 00001fa0: OR 00001fa1: SWAP1 00001fa2: SSTORE 00001fa3: JUMP 00001fa4: JUMPDEST 00001fa5: PUSH1 0x60 00001fa7: PUSH1 0x00 00001fa9: DUP1 00001faa: DUP5 00001fab: PUSH1 0x01 00001fad: PUSH1 0x01 00001faf: PUSH1 0xa0 00001fb1: SHL 00001fb2: SUB 00001fb3: AND 00001fb4: DUP5 00001fb5: PUSH1 0x40 00001fb7: MLOAD 00001fb8: PUSH2 0x1fc1 00001fbb: SWAP2 00001fbc: SWAP1 00001fbd: PUSH2 0x25bd 00001fc0: JUMP 00001fc1: JUMPDEST 00001fc2: PUSH1 0x00 00001fc4: PUSH1 0x40 00001fc6: MLOAD 00001fc7: DUP1 00001fc8: DUP4 00001fc9: SUB 00001fca: DUP2 00001fcb: DUP6 00001fcc: GAS 00001fcd: DELEGATECALL 00001fce: SWAP2 00001fcf: POP 00001fd0: POP 00001fd1: RETURNDATASIZE 00001fd2: DUP1 00001fd3: PUSH1 0x00 00001fd5: DUP2 00001fd6: EQ 00001fd7: PUSH2 0x1ffc 00001fda: JUMPI 00001fdb: PUSH1 0x40 00001fdd: MLOAD 00001fde: SWAP2 00001fdf: POP 00001fe0: PUSH1 0x1f 00001fe2: NOT 00001fe3: PUSH1 0x3f 00001fe5: RETURNDATASIZE 00001fe6: ADD 00001fe7: AND 00001fe8: DUP3 00001fe9: ADD 00001fea: PUSH1 0x40 00001fec: MSTORE 00001fed: RETURNDATASIZE 00001fee: DUP3 00001fef: MSTORE 00001ff0: RETURNDATASIZE 00001ff1: PUSH1 0x00 00001ff3: PUSH1 0x20 00001ff5: DUP5 00001ff6: ADD 00001ff7: RETURNDATACOPY 00001ff8: PUSH2 0x2001 00001ffb: JUMP 00001ffc: JUMPDEST 00001ffd: PUSH1 0x60 00001fff: SWAP2 00002000: POP 00002001: JUMPDEST 00002002: POP 00002003: SWAP2 00002004: POP 00002005: SWAP2 00002006: POP 00002007: PUSH2 0x2011 0000200a: DUP6 0000200b: DUP4 0000200c: DUP4 0000200d: PUSH2 0x20c8 00002010: JUMP 00002011: JUMPDEST 00002012: SWAP6 00002013: SWAP5 00002014: POP 00002015: POP 00002016: POP 00002017: POP 00002018: POP 00002019: JUMP 0000201a: JUMPDEST 0000201b: CALLVALUE 0000201c: ISZERO 0000201d: PUSH2 0x0a7f 00002020: JUMPI 00002021: PUSH1 0x40 00002023: MLOAD 00002024: PUSH4 0xb398979f 00002029: PUSH1 0xe0 0000202b: SHL 0000202c: DUP2 0000202d: MSTORE 0000202e: PUSH1 0x04 00002030: ADD 00002031: PUSH1 0x40 00002033: MLOAD 00002034: DUP1 00002035: SWAP2 00002036: SUB 00002037: SWAP1 00002038: REVERT 00002039: JUMPDEST 0000203a: PUSH1 0x60 0000203c: DUP2 0000203d: SELFBALANCE 0000203e: LT 0000203f: ISZERO 00002040: PUSH2 0x205e 00002043: JUMPI 00002044: PUSH1 0x40 00002046: MLOAD 00002047: PUSH4 0xcd786059 0000204c: PUSH1 0xe0 0000204e: SHL 0000204f: DUP2 00002050: MSTORE 00002051: ADDRESS 00002052: PUSH1 0x04 00002054: DUP3 00002055: ADD 00002056: MSTORE 00002057: PUSH1 0x24 00002059: ADD 0000205a: PUSH2 0x0c9b 0000205d: JUMP 0000205e: JUMPDEST 0000205f: PUSH1 0x00 00002061: DUP1 00002062: DUP6 00002063: PUSH1 0x01 00002065: PUSH1 0x01 00002067: PUSH1 0xa0 00002069: SHL 0000206a: SUB 0000206b: AND 0000206c: DUP5 0000206d: DUP7 0000206e: PUSH1 0x40 00002070: MLOAD 00002071: PUSH2 0x207a 00002074: SWAP2 00002075: SWAP1 00002076: PUSH2 0x25bd 00002079: JUMP 0000207a: JUMPDEST 0000207b: PUSH1 0x00 0000207d: PUSH1 0x40 0000207f: MLOAD 00002080: DUP1 00002081: DUP4 00002082: SUB 00002083: DUP2 00002084: DUP6 00002085: DUP8 00002086: GAS 00002087: CALL 00002088: SWAP3 00002089: POP 0000208a: POP 0000208b: POP 0000208c: RETURNDATASIZE 0000208d: DUP1 0000208e: PUSH1 0x00 00002090: DUP2 00002091: EQ 00002092: PUSH2 0x20b7 00002095: JUMPI 00002096: PUSH1 0x40 00002098: MLOAD 00002099: SWAP2 0000209a: POP 0000209b: PUSH1 0x1f 0000209d: NOT 0000209e: PUSH1 0x3f 000020a0: RETURNDATASIZE 000020a1: ADD 000020a2: AND 000020a3: DUP3 000020a4: ADD 000020a5: PUSH1 0x40 000020a7: MSTORE 000020a8: RETURNDATASIZE 000020a9: DUP3 000020aa: MSTORE 000020ab: RETURNDATASIZE 000020ac: PUSH1 0x00 000020ae: PUSH1 0x20 000020b0: DUP5 000020b1: ADD 000020b2: RETURNDATACOPY 000020b3: PUSH2 0x20bc 000020b6: JUMP 000020b7: JUMPDEST 000020b8: PUSH1 0x60 000020ba: SWAP2 000020bb: POP 000020bc: JUMPDEST 000020bd: POP 000020be: SWAP2 000020bf: POP 000020c0: SWAP2 000020c1: POP 000020c2: PUSH2 0x1f27 000020c5: DUP7 000020c6: DUP4 000020c7: DUP4 000020c8: JUMPDEST 000020c9: PUSH1 0x60 000020cb: DUP3 000020cc: PUSH2 0x20dd 000020cf: JUMPI 000020d0: PUSH2 0x20d8 000020d3: DUP3 000020d4: PUSH2 0x2124 000020d7: JUMP 000020d8: JUMPDEST 000020d9: PUSH2 0x1276 000020dc: JUMP 000020dd: JUMPDEST 000020de: DUP2 000020df: MLOAD 000020e0: ISZERO 000020e1: DUP1 000020e2: ISZERO 000020e3: PUSH2 0x20f4 000020e6: JUMPI 000020e7: POP 000020e8: PUSH1 0x01 000020ea: PUSH1 0x01 000020ec: PUSH1 0xa0 000020ee: SHL 000020ef: SUB 000020f0: DUP5 000020f1: AND 000020f2: EXTCODESIZE 000020f3: ISZERO 000020f4: JUMPDEST 000020f5: ISZERO 000020f6: PUSH2 0x211d 000020f9: JUMPI 000020fa: PUSH1 0x40 000020fc: MLOAD 000020fd: PUSH4 0x9996b315 00002102: PUSH1 0xe0 00002104: SHL 00002105: DUP2 00002106: MSTORE 00002107: PUSH1 0x01 00002109: PUSH1 0x01 0000210b: PUSH1 0xa0 0000210d: SHL 0000210e: SUB 0000210f: DUP6 00002110: AND 00002111: PUSH1 0x04 00002113: DUP3 00002114: ADD 00002115: MSTORE 00002116: PUSH1 0x24 00002118: ADD 00002119: PUSH2 0x0c9b 0000211c: JUMP 0000211d: JUMPDEST 0000211e: POP 0000211f: DUP1 00002120: PUSH2 0x1276 00002123: JUMP 00002124: JUMPDEST 00002125: DUP1 00002126: MLOAD 00002127: ISZERO 00002128: PUSH2 0x2134 0000212b: JUMPI 0000212c: DUP1 0000212d: MLOAD 0000212e: DUP1 0000212f: DUP3 00002130: PUSH1 0x20 00002132: ADD 00002133: REVERT 00002134: JUMPDEST 00002135: PUSH1 0x40 00002137: MLOAD 00002138: PUSH4 0x0a12f521 0000213d: PUSH1 0xe1 0000213f: SHL 00002140: DUP2 00002141: MSTORE 00002142: PUSH1 0x04 00002144: ADD 00002145: PUSH1 0x40 00002147: MLOAD 00002148: DUP1 00002149: SWAP2 0000214a: SUB 0000214b: SWAP1 0000214c: REVERT 0000214d: JUMPDEST 0000214e: DUP1 0000214f: ISZERO 00002150: ISZERO 00002151: DUP2 00002152: EQ 00002153: PUSH2 0x0cad 00002156: JUMPI 00002157: PUSH1 0x00 00002159: DUP1 0000215a: REVERT 0000215b: JUMPDEST 0000215c: PUSH1 0x00 0000215e: DUP1 0000215f: PUSH1 0x00 00002161: PUSH1 0x60 00002163: DUP5 00002164: DUP7 00002165: SUB 00002166: SLT 00002167: ISZERO 00002168: PUSH2 0x2170 0000216b: JUMPI 0000216c: PUSH1 0x00 0000216e: DUP1 0000216f: REVERT 00002170: JUMPDEST 00002171: DUP4 00002172: CALLDATALOAD 00002173: SWAP3 00002174: POP 00002175: PUSH1 0x20 00002177: DUP5 00002178: ADD 00002179: CALLDATALOAD 0000217a: SWAP2 0000217b: POP 0000217c: PUSH1 0x40 0000217e: DUP5 0000217f: ADD 00002180: CALLDATALOAD 00002181: PUSH2 0x2189 00002184: DUP2 00002185: PUSH2 0x214d 00002188: JUMP 00002189: JUMPDEST 0000218a: DUP1 0000218b: SWAP2 0000218c: POP 0000218d: POP 0000218e: SWAP3 0000218f: POP 00002190: SWAP3 00002191: POP 00002192: SWAP3 00002193: JUMP 00002194: JUMPDEST 00002195: PUSH1 0x00 00002197: DUP1 00002198: DUP4 00002199: PUSH1 0x1f 0000219b: DUP5 0000219c: ADD 0000219d: SLT 0000219e: PUSH2 0x21a6 000021a1: JUMPI 000021a2: PUSH1 0x00 000021a4: DUP1 000021a5: REVERT 000021a6: JUMPDEST 000021a7: POP 000021a8: DUP2 000021a9: CALLDATALOAD 000021aa: PUSH8 0xffffffffffffffff 000021b3: DUP2 000021b4: GT 000021b5: ISZERO 000021b6: PUSH2 0x21be 000021b9: JUMPI 000021ba: PUSH1 0x00 000021bc: DUP1 000021bd: REVERT 000021be: JUMPDEST 000021bf: PUSH1 0x20 000021c1: DUP4 000021c2: ADD 000021c3: SWAP2 000021c4: POP 000021c5: DUP4 000021c6: PUSH1 0x20 000021c8: DUP3 000021c9: PUSH1 0x05 000021cb: SHL 000021cc: DUP6 000021cd: ADD 000021ce: ADD 000021cf: GT 000021d0: ISZERO 000021d1: PUSH2 0x21d9 000021d4: JUMPI 000021d5: PUSH1 0x00 000021d7: DUP1 000021d8: REVERT 000021d9: JUMPDEST 000021da: SWAP3 000021db: POP 000021dc: SWAP3 000021dd: SWAP1 000021de: POP 000021df: JUMP 000021e0: JUMPDEST 000021e1: PUSH1 0x00 000021e3: DUP1 000021e4: PUSH1 0x00 000021e6: PUSH1 0x40 000021e8: DUP5 000021e9: DUP7 000021ea: SUB 000021eb: SLT 000021ec: ISZERO 000021ed: PUSH2 0x21f5 000021f0: JUMPI 000021f1: PUSH1 0x00 000021f3: DUP1 000021f4: REVERT 000021f5: JUMPDEST 000021f6: DUP4 000021f7: CALLDATALOAD 000021f8: PUSH8 0xffffffffffffffff 00002201: DUP2 00002202: GT 00002203: ISZERO 00002204: PUSH2 0x220c 00002207: JUMPI 00002208: PUSH1 0x00 0000220a: DUP1 0000220b: REVERT 0000220c: JUMPDEST 0000220d: PUSH2 0x2218 00002210: DUP7 00002211: DUP3 00002212: DUP8 00002213: ADD 00002214: PUSH2 0x2194 00002217: JUMP 00002218: JUMPDEST 00002219: SWAP1 0000221a: SWAP8 0000221b: SWAP1 0000221c: SWAP7 0000221d: POP 0000221e: PUSH1 0x20 00002220: SWAP6 00002221: SWAP1 00002222: SWAP6 00002223: ADD 00002224: CALLDATALOAD 00002225: SWAP5 00002226: SWAP4 00002227: POP 00002228: POP 00002229: POP 0000222a: POP 0000222b: JUMP 0000222c: JUMPDEST 0000222d: PUSH1 0x01 0000222f: PUSH1 0x01 00002231: PUSH1 0xa0 00002233: SHL 00002234: SUB 00002235: DUP2 00002236: AND 00002237: DUP2 00002238: EQ 00002239: PUSH2 0x0cad 0000223c: JUMPI 0000223d: PUSH1 0x00 0000223f: DUP1 00002240: REVERT 00002241: JUMPDEST 00002242: PUSH1 0x00 00002244: PUSH1 0x20 00002246: DUP3 00002247: DUP5 00002248: SUB 00002249: SLT 0000224a: ISZERO 0000224b: PUSH2 0x2253 0000224e: JUMPI 0000224f: PUSH1 0x00 00002251: DUP1 00002252: REVERT 00002253: JUMPDEST 00002254: DUP2 00002255: CALLDATALOAD 00002256: PUSH2 0x1276 00002259: DUP2 0000225a: PUSH2 0x222c 0000225d: JUMP 0000225e: JUMPDEST 0000225f: PUSH1 0x00 00002261: PUSH1 0x20 00002263: DUP3 00002264: DUP5 00002265: SUB 00002266: SLT 00002267: ISZERO 00002268: PUSH2 0x2270 0000226b: JUMPI 0000226c: PUSH1 0x00 0000226e: DUP1 0000226f: REVERT 00002270: JUMPDEST 00002271: POP 00002272: CALLDATALOAD 00002273: SWAP2 00002274: SWAP1 00002275: POP 00002276: JUMP 00002277: JUMPDEST 00002278: PUSH1 0x00 0000227a: DUP1 0000227b: PUSH1 0x40 0000227d: DUP4 0000227e: DUP6 0000227f: SUB 00002280: SLT 00002281: ISZERO 00002282: PUSH2 0x228a 00002285: JUMPI 00002286: PUSH1 0x00 00002288: DUP1 00002289: REVERT 0000228a: JUMPDEST 0000228b: DUP3 0000228c: CALLDATALOAD 0000228d: SWAP2 0000228e: POP 0000228f: PUSH1 0x20 00002291: DUP4 00002292: ADD 00002293: CALLDATALOAD 00002294: PUSH2 0x229c 00002297: DUP2 00002298: PUSH2 0x222c 0000229b: JUMP 0000229c: JUMPDEST 0000229d: DUP1 0000229e: SWAP2 0000229f: POP 000022a0: POP 000022a1: SWAP3 000022a2: POP 000022a3: SWAP3 000022a4: SWAP1 000022a5: POP 000022a6: JUMP 000022a7: JUMPDEST 000022a8: PUSH1 0x00 000022aa: DUP1 000022ab: PUSH1 0x00 000022ad: PUSH1 0x60 000022af: DUP5 000022b0: DUP7 000022b1: SUB 000022b2: SLT 000022b3: ISZERO 000022b4: PUSH2 0x22bc 000022b7: JUMPI 000022b8: PUSH1 0x00 000022ba: DUP1 000022bb: REVERT 000022bc: JUMPDEST 000022bd: DUP4 000022be: CALLDATALOAD 000022bf: PUSH2 0x22c7 000022c2: DUP2 000022c3: PUSH2 0x222c 000022c6: JUMP 000022c7: JUMPDEST 000022c8: SWAP3 000022c9: POP 000022ca: PUSH1 0x20 000022cc: DUP5 000022cd: ADD 000022ce: CALLDATALOAD 000022cf: PUSH2 0x22d7 000022d2: DUP2 000022d3: PUSH2 0x222c 000022d6: JUMP 000022d7: JUMPDEST 000022d8: SWAP3 000022d9: SWAP6 000022da: SWAP3 000022db: SWAP5 000022dc: POP 000022dd: POP 000022de: POP 000022df: PUSH1 0x40 000022e1: SWAP2 000022e2: SWAP1 000022e3: SWAP2 000022e4: ADD 000022e5: CALLDATALOAD 000022e6: SWAP1 000022e7: JUMP 000022e8: JUMPDEST 000022e9: PUSH4 0x4e487b71 000022ee: PUSH1 0xe0 000022f0: SHL 000022f1: PUSH1 0x00 000022f3: MSTORE 000022f4: PUSH1 0x41 000022f6: PUSH1 0x04 000022f8: MSTORE 000022f9: PUSH1 0x24 000022fb: PUSH1 0x00 000022fd: REVERT 000022fe: JUMPDEST 000022ff: PUSH1 0x00 00002301: DUP1 00002302: PUSH1 0x40 00002304: DUP4 00002305: DUP6 00002306: SUB 00002307: SLT 00002308: ISZERO 00002309: PUSH2 0x2311 0000230c: JUMPI 0000230d: PUSH1 0x00 0000230f: DUP1 00002310: REVERT 00002311: JUMPDEST 00002312: DUP3 00002313: CALLDATALOAD 00002314: PUSH2 0x231c 00002317: DUP2 00002318: PUSH2 0x222c 0000231b: JUMP 0000231c: JUMPDEST 0000231d: SWAP2 0000231e: POP 0000231f: PUSH1 0x20 00002321: DUP4 00002322: ADD 00002323: CALLDATALOAD 00002324: PUSH8 0xffffffffffffffff 0000232d: DUP1 0000232e: DUP3 0000232f: GT 00002330: ISZERO 00002331: PUSH2 0x2339 00002334: JUMPI 00002335: PUSH1 0x00 00002337: DUP1 00002338: REVERT 00002339: JUMPDEST 0000233a: DUP2 0000233b: DUP6 0000233c: ADD 0000233d: SWAP2 0000233e: POP 0000233f: DUP6 00002340: PUSH1 0x1f 00002342: DUP4 00002343: ADD 00002344: SLT 00002345: PUSH2 0x234d 00002348: JUMPI 00002349: PUSH1 0x00 0000234b: DUP1 0000234c: REVERT 0000234d: JUMPDEST 0000234e: DUP2 0000234f: CALLDATALOAD 00002350: DUP2 00002351: DUP2 00002352: GT 00002353: ISZERO 00002354: PUSH2 0x235f 00002357: JUMPI 00002358: PUSH2 0x235f 0000235b: PUSH2 0x22e8 0000235e: JUMP 0000235f: JUMPDEST 00002360: PUSH1 0x40 00002362: MLOAD 00002363: PUSH1 0x1f 00002365: DUP3 00002366: ADD 00002367: PUSH1 0x1f 00002369: NOT 0000236a: SWAP1 0000236b: DUP2 0000236c: AND 0000236d: PUSH1 0x3f 0000236f: ADD 00002370: AND 00002371: DUP2 00002372: ADD 00002373: SWAP1 00002374: DUP4 00002375: DUP3 00002376: GT 00002377: DUP2 00002378: DUP4 00002379: LT 0000237a: OR 0000237b: ISZERO 0000237c: PUSH2 0x2387 0000237f: JUMPI 00002380: PUSH2 0x2387 00002383: PUSH2 0x22e8 00002386: JUMP 00002387: JUMPDEST 00002388: DUP2 00002389: PUSH1 0x40 0000238b: MSTORE 0000238c: DUP3 0000238d: DUP2 0000238e: MSTORE 0000238f: DUP9 00002390: PUSH1 0x20 00002392: DUP5 00002393: DUP8 00002394: ADD 00002395: ADD 00002396: GT 00002397: ISZERO 00002398: PUSH2 0x23a0 0000239b: JUMPI 0000239c: PUSH1 0x00 0000239e: DUP1 0000239f: REVERT 000023a0: JUMPDEST 000023a1: DUP3 000023a2: PUSH1 0x20 000023a4: DUP7 000023a5: ADD 000023a6: PUSH1 0x20 000023a8: DUP4 000023a9: ADD 000023aa: CALLDATACOPY 000023ab: PUSH1 0x00 000023ad: PUSH1 0x20 000023af: DUP5 000023b0: DUP4 000023b1: ADD 000023b2: ADD 000023b3: MSTORE 000023b4: DUP1 000023b5: SWAP6 000023b6: POP 000023b7: POP 000023b8: POP 000023b9: POP 000023ba: POP 000023bb: POP 000023bc: SWAP3 000023bd: POP 000023be: SWAP3 000023bf: SWAP1 000023c0: POP 000023c1: JUMP 000023c2: JUMPDEST 000023c3: PUSH1 0x00 000023c5: DUP1 000023c6: PUSH1 0x40 000023c8: DUP4 000023c9: DUP6 000023ca: SUB 000023cb: SLT 000023cc: ISZERO 000023cd: PUSH2 0x23d5 000023d0: JUMPI 000023d1: PUSH1 0x00 000023d3: DUP1 000023d4: REVERT 000023d5: JUMPDEST 000023d6: POP 000023d7: POP 000023d8: DUP1 000023d9: CALLDATALOAD 000023da: SWAP3 000023db: PUSH1 0x20 000023dd: SWAP1 000023de: SWAP2 000023df: ADD 000023e0: CALLDATALOAD 000023e1: SWAP2 000023e2: POP 000023e3: JUMP 000023e4: JUMPDEST 000023e5: PUSH1 0x00 000023e7: DUP1 000023e8: PUSH1 0x40 000023ea: DUP4 000023eb: DUP6 000023ec: SUB 000023ed: SLT 000023ee: ISZERO 000023ef: PUSH2 0x23f7 000023f2: JUMPI 000023f3: PUSH1 0x00 000023f5: DUP1 000023f6: REVERT 000023f7: JUMPDEST 000023f8: DUP3 000023f9: CALLDATALOAD 000023fa: SWAP2 000023fb: POP 000023fc: PUSH1 0x20 000023fe: DUP4 000023ff: ADD 00002400: CALLDATALOAD 00002401: PUSH2 0x229c 00002404: DUP2 00002405: PUSH2 0x214d 00002408: JUMP 00002409: JUMPDEST 0000240a: PUSH1 0x00 0000240c: DUP1 0000240d: PUSH1 0x40 0000240f: DUP4 00002410: DUP6 00002411: SUB 00002412: SLT 00002413: ISZERO 00002414: PUSH2 0x241c 00002417: JUMPI 00002418: PUSH1 0x00 0000241a: DUP1 0000241b: REVERT 0000241c: JUMPDEST 0000241d: DUP3 0000241e: CALLDATALOAD 0000241f: PUSH2 0x2427 00002422: DUP2 00002423: PUSH2 0x222c 00002426: JUMP 00002427: JUMPDEST 00002428: SWAP5 00002429: PUSH1 0x20 0000242b: SWAP4 0000242c: SWAP1 0000242d: SWAP4 0000242e: ADD 0000242f: CALLDATALOAD 00002430: SWAP4 00002431: POP 00002432: POP 00002433: POP 00002434: JUMP 00002435: JUMPDEST 00002436: PUSH1 0x00 00002438: JUMPDEST 00002439: DUP4 0000243a: DUP2 0000243b: LT 0000243c: ISZERO 0000243d: PUSH2 0x2450 00002440: JUMPI 00002441: DUP2 00002442: DUP2 00002443: ADD 00002444: MLOAD 00002445: DUP4 00002446: DUP3 00002447: ADD 00002448: MSTORE 00002449: PUSH1 0x20 0000244b: ADD 0000244c: PUSH2 0x2438 0000244f: JUMP 00002450: JUMPDEST 00002451: POP 00002452: POP 00002453: PUSH1 0x00 00002455: SWAP2 00002456: ADD 00002457: MSTORE 00002458: JUMP 00002459: JUMPDEST 0000245a: PUSH1 0x20 0000245c: DUP2 0000245d: MSTORE 0000245e: PUSH1 0x00 00002460: DUP3 00002461: MLOAD 00002462: DUP1 00002463: PUSH1 0x20 00002465: DUP5 00002466: ADD 00002467: MSTORE 00002468: PUSH2 0x2478 0000246b: DUP2 0000246c: PUSH1 0x40 0000246e: DUP6 0000246f: ADD 00002470: PUSH1 0x20 00002472: DUP8 00002473: ADD 00002474: PUSH2 0x2435 00002477: JUMP 00002478: JUMPDEST 00002479: PUSH1 0x1f 0000247b: ADD 0000247c: PUSH1 0x1f 0000247e: NOT 0000247f: AND 00002480: SWAP2 00002481: SWAP1 00002482: SWAP2 00002483: ADD 00002484: PUSH1 0x40 00002486: ADD 00002487: SWAP3 00002488: SWAP2 00002489: POP 0000248a: POP 0000248b: JUMP 0000248c: JUMPDEST 0000248d: PUSH1 0x00 0000248f: DUP1 00002490: PUSH1 0x00 00002492: PUSH1 0x60 00002494: DUP5 00002495: DUP7 00002496: SUB 00002497: SLT 00002498: ISZERO 00002499: PUSH2 0x24a1 0000249c: JUMPI 0000249d: PUSH1 0x00 0000249f: DUP1 000024a0: REVERT 000024a1: JUMPDEST 000024a2: POP 000024a3: POP 000024a4: DUP2 000024a5: CALLDATALOAD 000024a6: SWAP4 000024a7: PUSH1 0x20 000024a9: DUP4 000024aa: ADD 000024ab: CALLDATALOAD 000024ac: SWAP4 000024ad: POP 000024ae: PUSH1 0x40 000024b0: SWAP1 000024b1: SWAP3 000024b2: ADD 000024b3: CALLDATALOAD 000024b4: SWAP2 000024b5: SWAP1 000024b6: POP 000024b7: JUMP 000024b8: JUMPDEST 000024b9: PUSH1 0x00 000024bb: DUP1 000024bc: PUSH1 0x00 000024be: DUP1 000024bf: PUSH1 0x00 000024c1: PUSH1 0x80 000024c3: DUP7 000024c4: DUP9 000024c5: SUB 000024c6: SLT 000024c7: ISZERO 000024c8: PUSH2 0x24d0 000024cb: JUMPI 000024cc: PUSH1 0x00 000024ce: DUP1 000024cf: REVERT 000024d0: JUMPDEST 000024d1: DUP6 000024d2: CALLDATALOAD 000024d3: PUSH8 0xffffffffffffffff 000024dc: DUP2 000024dd: GT 000024de: ISZERO 000024df: PUSH2 0x24e7 000024e2: JUMPI 000024e3: PUSH1 0x00 000024e5: DUP1 000024e6: REVERT 000024e7: JUMPDEST 000024e8: PUSH2 0x24f3 000024eb: DUP9 000024ec: DUP3 000024ed: DUP10 000024ee: ADD 000024ef: PUSH2 0x2194 000024f2: JUMP 000024f3: JUMPDEST 000024f4: SWAP1 000024f5: SWAP7 000024f6: POP 000024f7: SWAP5 000024f8: POP 000024f9: POP 000024fa: PUSH1 0x20 000024fc: DUP7 000024fd: ADD 000024fe: CALLDATALOAD 000024ff: SWAP3 00002500: POP 00002501: PUSH1 0x40 00002503: DUP7 00002504: ADD 00002505: CALLDATALOAD 00002506: PUSH2 0x250e 00002509: DUP2 0000250a: PUSH2 0x222c 0000250d: JUMP 0000250e: JUMPDEST 0000250f: SWAP2 00002510: POP 00002511: PUSH1 0x60 00002513: DUP7 00002514: ADD 00002515: CALLDATALOAD 00002516: PUSH2 0x251e 00002519: DUP2 0000251a: PUSH2 0x222c 0000251d: JUMP 0000251e: JUMPDEST 0000251f: DUP1 00002520: SWAP2 00002521: POP 00002522: POP 00002523: SWAP3 00002524: SWAP6 00002525: POP 00002526: SWAP3 00002527: SWAP6 00002528: SWAP1 00002529: SWAP4 0000252a: POP 0000252b: JUMP 0000252c: JUMPDEST 0000252d: PUSH1 0x00 0000252f: DUP1 00002530: PUSH1 0x00 00002532: DUP1 00002533: PUSH1 0x00 00002535: DUP1 00002536: PUSH1 0xc0 00002538: DUP8 00002539: DUP10 0000253a: SUB 0000253b: SLT 0000253c: ISZERO 0000253d: PUSH2 0x2545 00002540: JUMPI 00002541: PUSH1 0x00 00002543: DUP1 00002544: REVERT 00002545: JUMPDEST 00002546: POP 00002547: POP 00002548: DUP5 00002549: CALLDATALOAD 0000254a: SWAP7 0000254b: PUSH1 0x20 0000254d: DUP7 0000254e: ADD 0000254f: CALLDATALOAD 00002550: SWAP7 00002551: POP 00002552: PUSH1 0x40 00002554: DUP7 00002555: ADD 00002556: CALLDATALOAD 00002557: SWAP6 00002558: PUSH1 0x60 0000255a: DUP2 0000255b: ADD 0000255c: CALLDATALOAD 0000255d: SWAP6 0000255e: POP 0000255f: PUSH1 0x80 00002561: DUP2 00002562: ADD 00002563: CALLDATALOAD 00002564: SWAP5 00002565: POP 00002566: PUSH1 0xa0 00002568: ADD 00002569: CALLDATALOAD 0000256a: SWAP3 0000256b: POP 0000256c: SWAP1 0000256d: POP 0000256e: JUMP 0000256f: JUMPDEST 00002570: PUSH1 0x00 00002572: DUP1 00002573: PUSH1 0x00 00002575: PUSH1 0x60 00002577: DUP5 00002578: DUP7 00002579: SUB 0000257a: SLT 0000257b: ISZERO 0000257c: PUSH2 0x2584 0000257f: JUMPI 00002580: PUSH1 0x00 00002582: DUP1 00002583: REVERT 00002584: JUMPDEST 00002585: DUP4 00002586: CALLDATALOAD 00002587: SWAP3 00002588: POP 00002589: PUSH1 0x20 0000258b: DUP5 0000258c: ADD 0000258d: CALLDATALOAD 0000258e: PUSH2 0x22d7 00002591: DUP2 00002592: PUSH2 0x222c 00002595: JUMP 00002596: JUMPDEST 00002597: PUSH1 0x00 00002599: PUSH1 0x01 0000259b: DUP3 0000259c: ADD 0000259d: PUSH2 0x25b6 000025a0: JUMPI 000025a1: PUSH4 0x4e487b71 000025a6: PUSH1 0xe0 000025a8: SHL 000025a9: PUSH1 0x00 000025ab: MSTORE 000025ac: PUSH1 0x11 000025ae: PUSH1 0x04 000025b0: MSTORE 000025b1: PUSH1 0x24 000025b3: PUSH1 0x00 000025b5: REVERT 000025b6: JUMPDEST 000025b7: POP 000025b8: PUSH1 0x01 000025ba: ADD 000025bb: SWAP1 000025bc: JUMP 000025bd: JUMPDEST 000025be: PUSH1 0x00 000025c0: DUP3 000025c1: MLOAD 000025c2: PUSH2 0x25cf 000025c5: DUP2 000025c6: DUP5 000025c7: PUSH1 0x20 000025c9: DUP8 000025ca: ADD 000025cb: PUSH2 0x2435 000025ce: JUMP 000025cf: JUMPDEST 000025d0: SWAP2 000025d1: SWAP1 000025d2: SWAP2 000025d3: ADD 000025d4: SWAP3 000025d5: SWAP2 000025d6: POP 000025d7: POP 000025d8: JUMP 000025d9: JUMPDEST 000025da: PUSH4 0x4e487b71 000025df: PUSH1 0xe0 000025e1: SHL 000025e2: PUSH1 0x00 000025e4: MSTORE 000025e5: PUSH1 0x32 000025e7: PUSH1 0x04 000025e9: MSTORE 000025ea: PUSH1 0x24 000025ec: PUSH1 0x00 000025ee: REVERT 000025ef: JUMPDEST 000025f0: PUSH1 0x00 000025f2: PUSH1 0x20 000025f4: DUP3 000025f5: DUP5 000025f6: SUB 000025f7: SLT 000025f8: ISZERO 000025f9: PUSH2 0x2601 000025fc: JUMPI 000025fd: PUSH1 0x00 000025ff: DUP1 00002600: REVERT 00002601: JUMPDEST 00002602: DUP2 00002603: MLOAD 00002604: PUSH2 0x1276 00002607: DUP2 00002608: PUSH2 0x214d 0000260b: JUMP 0000260c: JUMPDEST 0000260d: PUSH1 0x00 0000260f: PUSH1 0x20 00002611: DUP3 00002612: DUP5 00002613: SUB 00002614: SLT 00002615: ISZERO 00002616: PUSH2 0x261e 00002619: JUMPI 0000261a: PUSH1 0x00 0000261c: DUP1 0000261d: REVERT 0000261e: JUMPDEST 0000261f: POP 00002620: MLOAD 00002621: SWAP2 00002622: SWAP1 00002623: POP 00002624: JUMP 00002625: INVALID 00002626: CALLDATASIZE 00002627: ADDMOD 00002628: SWAP5 00002629: LOG1 0000262a: EXTCODESIZE 0000262b: LOG1 0000262c: LOG3 0000262d: UNKNOWN(0x21) 0000262e: MOD 0000262f: PUSH8 0xc828492db98dca3e 00002638: KECCAK256 00002639: PUSH23 0xcc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee8 00002651: DUP2 00002652: DUP5 00002653: UNKNOWN(0xC2) 00002654: UNKNOWN(0x1F) 00002655: UNKNOWN(0x4F) 00002656: UNKNOWN(0x21) 00002657: DUP3 00002658: UNKNOWN(0xAB) 00002659: PC 0000265a: UNKNOWN(0x27) 0000265b: UNKNOWN(0xCB) 0000265c: EXTCODESIZE 0000265d: PUSH31 0x07fbedcd63f03300a26469706673582212209838e950c870b1d66c3069978a 0000267d: DUP8 0000267e: UNKNOWN(0xD1) 0000267f: POP 00002680: UNKNOWN(0x2F) 00002681: UNKNOWN(0xEC) 00002682: UNKNOWN(0xED) 00002683: UNKNOWN(0xEC) 00002684: SWAP16 00002685: PUSH0 00002686: GAS 00002687: PUSH7 0x28fcbac1a01af4 0000268f: SHL 00002690: PUSH5 0x736f6c6343 00002696: STOP 00002697: ADDMOD 00002698: EQ 00002699: STOP 0000269a: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x8d2aac5606e6701bb253abe374ba9d130c5da07aad50ffa8c7b56de42bcf37ce
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x8d2aac5606e6701bb253abe374ba9d130c5da07aad50ffa8c7b56de42bcf37ce",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xe30c3978",
"selector": "0xe30c3978",
"calldata_variants": [
"0xe30c3978",
"0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf20f5108",
"selector": "0xf20f5108",
"calldata_variants": [
"0xf20f5108",
"0xf20f51080000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2cda82e",
"selector": "0xf2cda82e",
"calldata_variants": [
"0xf2cda82e",
"0xf2cda82e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9432517",
"selector": "0xf9432517",
"calldata_variants": [
"0xf9432517",
"0xf94325170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe4865ec",
"selector": "0xbe4865ec",
"calldata_variants": [
"0xbe4865ec",
"0xbe4865ec0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe8f909a",
"selector": "0xbe8f909a",
"calldata_variants": [
"0xbe8f909a",
"0xbe8f909a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1b4a1e3",
"selector": "0xc1b4a1e3",
"calldata_variants": [
"0xc1b4a1e3",
"0xc1b4a1e30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8141,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xcbac5acc95d6d44b578b197235a83facf9db2d4ea30df563f94bb84499b410fb
call_targets:
0x49643fc85fb1f25b6775ebbbdc69295d45105abc
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xcbac5acc95d6d44b578b197235a83facf9db2d4ea30df563f94bb84499b410fb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x49643fc85fb1f25b6775ebbbdc69295d45105abc"
],
"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": "0xe30c3978",
"selector": "0xe30c3978",
"calldata_variants": [
"0xe30c3978",
"0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf20f5108",
"selector": "0xf20f5108",
"calldata_variants": [
"0xf20f5108",
"0xf20f51080000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2cda82e",
"selector": "0xf2cda82e",
"calldata_variants": [
"0xf2cda82e",
"0xf2cda82e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9432517",
"selector": "0xf9432517",
"calldata_variants": [
"0xf9432517",
"0xf94325170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe4865ec",
"selector": "0xbe4865ec",
"calldata_variants": [
"0xbe4865ec",
"0xbe4865ec0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe8f909a",
"selector": "0xbe8f909a",
"calldata_variants": [
"0xbe8f909a",
"0xbe8f909a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1b4a1e3",
"selector": "0xc1b4a1e3",
"calldata_variants": [
"0xc1b4a1e3",
"0xc1b4a1e30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2354,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3015,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3664,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 9,
"guards_detected": [],
"untrusted_call_count": 9
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xcbac5acc95d6d44b578b197235a83facf9db2d4ea30df563f94bb84499b410fb
call_targets:
0x49643fc85fb1f25b6775ebbbdc69295d45105abc
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xcbac5acc95d6d44b578b197235a83facf9db2d4ea30df563f94bb84499b410fb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x49643fc85fb1f25b6775ebbbdc69295d45105abc"
],
"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": "0xe30c3978",
"selector": "0xe30c3978",
"calldata_variants": [
"0xe30c3978",
"0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf20f5108",
"selector": "0xf20f5108",
"calldata_variants": [
"0xf20f5108",
"0xf20f51080000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2cda82e",
"selector": "0xf2cda82e",
"calldata_variants": [
"0xf2cda82e",
"0xf2cda82e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9432517",
"selector": "0xf9432517",
"calldata_variants": [
"0xf9432517",
"0xf94325170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe4865ec",
"selector": "0xbe4865ec",
"calldata_variants": [
"0xbe4865ec",
"0xbe4865ec0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbe8f909a",
"selector": "0xbe8f909a",
"calldata_variants": [
"0xbe8f909a",
"0xbe8f909a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc1b4a1e3",
"selector": "0xc1b4a1e3",
"calldata_variants": [
"0xc1b4a1e3",
"0xc1b4a1e30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2354,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3015,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3664,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 9,
"guards_detected": []
}
|
| high | access_control | codex | Old committee members remain authorized after rotation | 85 | no | — |
viewevidence_json{
"evidence": "`setCommittee` increments `committeeId` and only adds new members, while `receiveRequest` accepts any `_committeeId` and checks membership/threshold for that id.",
"locations": [
"contracts/AbstractMost.sol:302",
"contracts/AbstractMost.sol:333",
"contracts/AbstractMost.sol:367"
],
"recommendation": "Gate `receiveRequest` to only accept the current `committeeId`, or maintain an explicit allowlist with expiry for previous committees and disable old ones on rotation. Consider clearing or marking old committee memberships as inactive.",
"exploit_scenario": "After the owner rotates the committee, members of a previous committee can still call `receiveRequest` with their old `_committeeId` and arbitrary transfer parameters. Because the contract only checks membership for the supplied `_committeeId`, the old committee can reach its historical threshold and mint/unlock tokens without the current committee\u2019s approval."
}
|
| medium | oracle | codex | Oracle price validation missing allows minimum limit bypass or revert | 75 | no | — |
viewevidence_json{
"evidence": "`minimumTransferAmount` uses `latestRoundData()` without validating price or staleness and casts `usdPrice` to `uint256`; `Most.checkTransferAllowed` ignores errors and allows transfers.",
"locations": [
"contracts/TransferLimit.sol:67",
"contracts/TransferLimit.sol:70",
"contracts/Most.sol:41"
],
"recommendation": "Validate `usdPrice > 0`, check `updatedAt`/`answeredInRound` for freshness, and avoid fail-open behavior on oracle errors (or make it configurable). If the intent is to enforce a minimum, consider `Math.max` instead of `Math.min`.",
"exploit_scenario": "If the Chainlink oracle returns 0 or a negative price, `minimumTransferAmount` divides by `uint256(usdPrice)` which can revert or underflow to a huge value. In `Most.checkTransferAllowed`, any revert is swallowed, so the transfer limit is effectively disabled during oracle outages or manipulations."
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| low | math | codex | StableSwap accounting assumes exact token transfers (fee-on-transfer breaks invariants) | 65 | no | — |
viewevidence_json{
"evidence": "`add_liquidity` and `exchange` update `balances` by the requested amount and then call `transfer_in`/`safeTransferFrom` without reconciling actual received amounts.",
"locations": [
"contracts/StableSwap/StableSwapTwoPool.sol:322",
"contracts/StableSwap/StableSwapTwoPool.sol:554",
"contracts/StableSwap/StableSwapTwoPool.sol:784"
],
"recommendation": "Restrict pool coins to standard ERC20s with exact transfers (enforce in factory) or measure actual balances before/after transfers and update `balances` by the delta.",
"exploit_scenario": "If a pool coin is fee-on-transfer or deflationary, the contract updates internal `balances` using the nominal `amounts`/`amount_in`, but fewer tokens are actually received. This can inflate pool accounting and allow LPs to mint/burn against overstated balances, potentially draining the pool."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 9
}
|