019d5666-722e-7090-ac76-01dc76d2ad3b
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 |
|---|---|---|---|---|
| 42890 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 42891 | proxy.resolve | complete | 1 / 3 | 1 week ago |
| 42892 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 42893 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 42894 | capability.graph | complete | 1 / 3 | 1 week ago |
| 42895 | detector.run | complete | 1 / 3 | 1 week ago |
| 42896 | validation.fork | complete | 1 / 3 | 1 week ago |
| 42983 | report.consolidate | complete | 1 / 6 | 1 week ago |
| 42984 | tool.slither | failed | 2 / 2 | 1 week ago |
{
"status": "not_proxy"
}
Traceback (most recent call last):
File "/var/www/tripwire/worker/worker.py", line 198, in main
payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
stdout_text, stderr_text, result_json = _run_slither(
~~~~~~~~~~~~^
workspace,
^^^^^^^^^^
...<4 lines>...
target_path=target_path,
^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-d8zzzvm4)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-d8zzzvm4)
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-d8zzzvm4/out/build-info is not a directory.
{"no_findings":true,"summary":"Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.","findings":[]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-x0fjpb7d
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d56a2-fa71-7420-afd3-fe80aade690d
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && ls -la && printf '\\n--- AUDIT_BUNDLE head ---\\n' && wc -l AUDIT_BUNDLE.txt && sed -n '1,220p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
/tmp/codex-x0fjpb7d
total 144
drwx------ 2 noahkuhn noahkuhn 4096 Apr 4 03:56 .
drwxrwxrwt 254 nobody nogroup 24576 Apr 4 03:56 ..
-rw-rw-r-- 1 noahkuhn noahkuhn 49855 Apr 4 03:56 AUDIT_BUNDLE.txt
-rw-rw-r-- 1 noahkuhn noahkuhn 815 Apr 4 03:56 codex-output-schema.json
-rw-rw-r-- 1 noahkuhn noahkuhn 9309 Apr 4 03:56 CryptoZinjaTorii.sol
-rw-rw-r-- 1 noahkuhn noahkuhn 41310 Apr 4 03:56 OpenzeppelinERC721.sol
--- AUDIT_BUNDLE head ---
1323 AUDIT_BUNDLE.txt
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: CryptoZinjaTorii.sol
================================================================================
pragma solidity >=0.8.10 <=0.8.10;
import "./OpenzeppelinERC721.sol";
// =========== =========== =========== =========== ===========
// | | | | | | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | |
// | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | |
// | | | | | | | | | |
//ZZZZZZZZZZZZZZZZZZZ iiii jjjj
//Z:::::::::::::::::Z i::::i j::::j
//Z:::::::::::::::::Z iiii jjjj
//Z:::ZZZZZZZZ:::::Z
//ZZZZZ Z:::::Z iiiiiiinnnn nnnnnnnn jjjjjjj aaaaaaaaaaaaa
// Z:::::Z i:::::in:::nn::::::::nn j:::::j a::::::::::::a
// Z:::::Z i::::in::::::::::::::nn j::::j aaaaaaaaa:::::a
// Z:::::Z i::::inn:::::::::::::::nj::::j a::::a
// Z:::::Z i::::i n:::::nnnn:::::nj::::j aaaaaaa:::::a
// Z:::::Z i::::i n::::n n::::nj::::j aa::::::::::::a
// Z:::::Z i::::i n::::n n::::nj::::j a::::aaaa::::::a
//ZZZ:::::Z ZZZZZ i::::i n::::n n::::nj::::ja::::a a:::::a
//Z::::::ZZZZZZZZ:::Zi::::::i n::::n n::::nj::::ja::::a a:::::a
//Z:::::::::::::::::Zi::::::i n::::n n::::nj::::ja:::::aaaa::::::a
//Z:::::::::::::::::Zi::::::i n::::n n::::nj::::j a::::::::::aa:::a
//ZZZZZZZZZZZZZZZZZZZiiiiiiii nnnnnn nnnnnnj::::j aaaaaaaaaa aaaa
// j::::j
// jjjj j::::j
// j::::jj j:::::j
// j::::::jjj::::::j
// jj::::::::::::j
// jjj::::::jjj
// jjjjjj
// =========== =========== =========== =========== ===========
// | | | | | | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | |
// | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | | | | | | |
// =========== =========== =========== =========== ===========
// | | | | | | | | | |
// | | | | | | | | | |
contract Torii is ERC721URIStorage , ERC721Enumerable{
address public owner;
uint public nftid = 0;
mapping(uint => string) toriiMessage;
//zinja metadata
string[5] z;
//O-torii metadata
string[4] o;
//senbon-torii metadata
string[4] s;
mapping(uint=>string) builtyear;
function multiMint(uint qty) public {
require( _msgSender() == owner );
uint target = nftid - 1 + qty;
for (uint i = nftid; i <= target; i++ ){
_safeMint( owner , nftid);
builtyear[nftid] = calcYear();
nftid++;
}
}
function _beforeTokenTransfer(address from, address to, uint256 tokenId)
internal
override(ERC721,ERC721Enumerable)
{
super._beforeTokenTransfer(from, to, tokenId);
}
function _burn(uint256 tokenId) internal override(ERC721,ERC721URIStorage) {
super._burn(tokenId);
}
function tokenURI(uint256 tokenId)
public
view
override(ERC721,ERC721URIStorage)
returns (string memory)
{
if(tokenId == 0){
string memory Otorii = string(abi.encodePacked(z[0],o[0],Strings.toString(tokenId),o[1],z[1],o[2],z[2],o[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
return Otorii;
}
string memory json = string(abi.encodePacked(z[0],s[0],Strings.toString(tokenId),s[1],z[1],s[2],z[2],s[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
return json;
}
function setToriiMessage(uint _tokenId , string memory _toriiMessage ) public {
require(_msgSender() == ownerOf(_tokenId));
toriiMessage[_tokenId] = _toriiMessage;
}
function readToriiMessage(uint _tokenId ) public view returns(string memory){
if(keccak256(abi.encodePacked(toriiMessage[_tokenId])) == keccak256(abi.encodePacked("")) ){
return "no name";
}
return toriiMessage[_tokenId];
}
function calcYear() public view returns (string memory){
return Strings.toString(calcYearLogic(block.timestamp));
}
function calcYearLogic(uint _unixtime) public pure returns (uint){
return 1970 + _unixtime/((31536000 * 3 + 31622400)/4);
}
function supportsInterface(bytes4 interfaceId)
public
view
override(ERC721,ERC721Enumerable)
returns (bool)
{
return super.supportsInterface(interfaceId);
}
constructor() ERC721("torii" , "TORII" ) {
z[0] = "data:application/json;utf8,{\"name\":\"";
s[0] = "\u3010\u5343\u672c\u9ce5\u5c45\u3011Engrave name on the Senbon-Torii #";
o[0] = "\u3010\u5275\u5efa\u8a18\u5ff5 \u5927\u9ce5\u5c45\u3011Engrave name on the O-Torii";
s[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306b\u5b58\u5728\u3059\u308b\u5343\u672c\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5171\u306b\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
o[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306e\u4e2d\u592e\u306b\u5b58\u5728\u3059\u308b\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u8a18\u5ff5\u3059\u3079\u304d\u5275\u5efa\u8a18\u5ff5\u306e\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5927\u304d\u304f\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
z[1] = "Crypto Zinja\u306e\u6b63\u5f0f\u30aa\u30fc\u30d7\u30f3\u3068\u5171\u306b\u3053\u3061\u3089\u306e\u30da\u30fc\u30b8\u304b\u3089\u540d\u524d\u3092\u523b\u3080\u4e8b\u304c\u51fa\u6765\u307e\u3059\u3002 https://conata.world/zinja \u3000\u523b\u3080\u540d\u524d\u306b\u95a2\u3057\u3066\u306f\u304a\u540d\u524d\u3001\u4f01\u696d\u540d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306a\u3069\u597d\u304d\u306a\u6587\u5b57\u3092\u523b\u3093\u3067\u9802\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Crypto Zinja\u306f\u65e5\u672c\u53e4\u6765\u306e\u6587\u5316\u3092\u984c\u6750\u306b\u73fe\u5b9f\u7a7a\u9593\u3092\u5dfb\u304d\u8fbc\u307f\u62e1\u5f35\u3057\u3066\u3044\u304f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u3053\u306e\u7a7a\u9593\u3092\u5171\u306b\u80b2\u3066\u3066\u304f\u3060\u3055\u308b\u3042\u306a\u305f\u306b\u611f\u8b1d\u3092\u8fbc\u3081\u3066\u3002 \\n \\nThis is an NFT for the right to have your name engraved on the ";
s[2] = "Senbon";
o[2] = "O";
z[2] = "-Torii gate of Crypto Zinja, which will be built in Metaverse. You can inscribe your name on this page when Crypto Zinja is officially opened: https://conata.world/zinja You can inscribe your name, company name, project name, etc. Crypto Zinja is a project to involve and expand the real space based on the ancient Japanese culture. I would like to express our gratitude to you who will nurture this space with us.\",\"animation_url\":\"";
s[3] = "https://arweave.net/NsU6pqKl04X6m0E7_fEKut3j5kBYQ1421cf1NW9gtGY\",\"image\":\"https://arweave.net/7FdbwyAuZ80xjZMm71Fz7ssCovFd1wtmKhGTqEvu-7U\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"Senbon-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
o[3] = "https://arweave.net/ioEuPnHgNSwwP1lrh4t6JKl0tTE-lkymCHAnDBLaCF4\",\"image\":\"https://arweave.net/Fl6pX4mF5RvldLIlVq5FFlWw9MGaV7GdxSfuO2hpXFw\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"O-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
z[3] = "\"},{\"trait_type\": \"Dedication Name\", \"value\": \"";
z[4] = "\"}]}";
owner = _msgSender();
_safeMint( owner , nftid);
builtyear[0] = "2021";
nftid++;
}
}
================================================================================
FILE: OpenzeppelinERC721.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
exec
/bin/bash -lc "sed -n '221,440p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant alphabet = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = alphabet[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
*/
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
exec
/bin/bash -lc "sed -n '441,660p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
exec
/bin/bash -lc "sed -n '661,880p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
mapping (uint256 => address) private _owners;
// Mapping owner address to token count
mapping (address => uint256) private _balances;
// Mapping from token ID to approved address
mapping (uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping (address => mapping (address => bool)) private _operatorApprovals;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor (string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC721).interfaceId
|| interfaceId == type(IERC721Metadata).interfaceId
|| super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0
? string(abi.encodePacked(baseURI, tokenId.toString()))
: '';
}
/**
* @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
* in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not owner nor approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
require(operator != _msgSender(), "ERC721: approve to caller");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(address from, address to, uint256 tokenId) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_safeTransfer(from, to, tokenId, _data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `_data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
exec
/bin/bash -lc "sed -n '881,1100p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
_mint(to, tokenId);
require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
// Clear approvals
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(address from, address to, uint256 tokenId) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits a {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param _data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
private returns (bool)
{
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
return retval == IERC721Receiver(to).onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
// solhint-disable-next-line no-inline-assembly
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Enumerable is IERC721 {
/**
* @dev Returns the total amount of tokens stored by the contract.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns a token ID owned by `owner` at a given `index` of its token list.
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
/**
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
* Use along with {totalSupply} to enumerate all tokens.
*/
function tokenByIndex(uint256 index) external view returns (uint256);
exec
/bin/bash -lc "sed -n '1101,1323p' AUDIT_BUNDLE.txt" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
}
/**
* @dev This implements an optional extension of {ERC721} defined in the EIP that adds
* enumerability of all the token ids in the contract as well as all token ids owned by each
* account.
*/
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
// Mapping from owner to list of owned token IDs
mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
// Mapping from token ID to index of the owner tokens list
mapping(uint256 => uint256) private _ownedTokensIndex;
// Array with all token ids, used for enumeration
uint256[] private _allTokens;
// Mapping from token id to position in the allTokens array
mapping(uint256 => uint256) private _allTokensIndex;
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
return interfaceId == type(IERC721Enumerable).interfaceId
|| super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
return _ownedTokens[owner][index];
}
/**
* @dev See {IERC721Enumerable-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _allTokens.length;
}
/**
* @dev See {IERC721Enumerable-tokenByIndex}.
*/
function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
return _allTokens[index];
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
super._beforeTokenTransfer(from, to, tokenId);
if (from == address(0)) {
_addTokenToAllTokensEnumeration(tokenId);
} else if (from != to) {
_removeTokenFromOwnerEnumeration(from, tokenId);
}
if (to == address(0)) {
_removeTokenFromAllTokensEnumeration(tokenId);
} else if (to != from) {
_addTokenToOwnerEnumeration(to, tokenId);
}
}
/**
* @dev Private function to add a token to this extension's ownership-tracking data structures.
* @param to address representing the new owner of the given token ID
* @param tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
uint256 length = ERC721.balanceOf(to);
_ownedTokens[to][length] = tokenId;
_ownedTokensIndex[tokenId] = length;
}
/**
* @dev Private function to add a token to this extension's token tracking data structures.
* @param tokenId uint256 ID of the token to be added to the tokens list
*/
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
/**
* @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
* while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
* gas optimizations e.g. when performing a transfer operation (avoiding double writes).
* This has O(1) time complexity, but alters the order of the _ownedTokens array.
* @param from address representing the previous owner of the given token ID
* @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
// To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
uint256 tokenIndex = _ownedTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
}
// This also deletes the contents at the last position of the array
delete _ownedTokensIndex[tokenId];
delete _ownedTokens[from][lastTokenIndex];
}
/**
* @dev Private function to remove a token from this extension's token tracking data structures.
* This has O(1) time complexity, but alters the order of the _allTokens array.
* @param tokenId uint256 ID of the token to be removed from the tokens list
*/
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
// To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = _allTokens.length - 1;
uint256 tokenIndex = _allTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
// rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
// an 'if' statement (like in _removeTokenFromOwnerEnumeration)
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
// This also deletes the contents at the last position of the array
delete _allTokensIndex[tokenId];
_allTokens.pop();
}
}
/**
* @dev ERC721 token with storage based token URI management.
*/
abstract contract ERC721URIStorage is ERC721 {
using Strings for uint256;
// Optional mapping for token URIs
mapping (uint256 => string) private _tokenURIs;
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token");
string memory _tokenURI = _tokenURIs[tokenId];
string memory base = _baseURI();
// If there is no base URI, return the token URI.
if (bytes(base).length == 0) {
return _tokenURI;
}
// If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
if (bytes(_tokenURI).length > 0) {
return string(abi.encodePacked(base, _tokenURI));
}
return super.tokenURI(tokenId);
}
/**
* @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
_tokenURIs[tokenId] = _tokenURI;
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual override {
super._burn(tokenId);
if (bytes(_tokenURIs[tokenId]).length != 0) {
delete _tokenURIs[tokenId];
}
}
}
exec
/bin/bash -lc "nl -ba CryptoZinjaTorii.sol | sed -n '1,220p'" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
1 pragma solidity >=0.8.10 <=0.8.10;
2
3 import "./OpenzeppelinERC721.sol";
4
5
6 // =========== =========== =========== =========== ===========
7 // | | | | | | | | | | | | | | |
8 // =========== =========== =========== =========== ===========
9 // | | | | | | | | | |
10 // | | | | | | | | | |
11
12
13 // =========== =========== =========== =========== ===========
14 // | | | | | | | | | | | | | | |
15 // =========== =========== =========== =========== ===========
16 // | | | | | | | | | |
17 // | | | | | | | | | |
18
19
20
21 //ZZZZZZZZZZZZZZZZZZZ iiii jjjj
22 //Z:::::::::::::::::Z i::::i j::::j
23 //Z:::::::::::::::::Z iiii jjjj
24 //Z:::ZZZZZZZZ:::::Z
25 //ZZZZZ Z:::::Z iiiiiiinnnn nnnnnnnn jjjjjjj aaaaaaaaaaaaa
26 // Z:::::Z i:::::in:::nn::::::::nn j:::::j a::::::::::::a
27 // Z:::::Z i::::in::::::::::::::nn j::::j aaaaaaaaa:::::a
28 // Z:::::Z i::::inn:::::::::::::::nj::::j a::::a
29 // Z:::::Z i::::i n:::::nnnn:::::nj::::j aaaaaaa:::::a
30 // Z:::::Z i::::i n::::n n::::nj::::j aa::::::::::::a
31 // Z:::::Z i::::i n::::n n::::nj::::j a::::aaaa::::::a
32 //ZZZ:::::Z ZZZZZ i::::i n::::n n::::nj::::ja::::a a:::::a
33 //Z::::::ZZZZZZZZ:::Zi::::::i n::::n n::::nj::::ja::::a a:::::a
34 //Z:::::::::::::::::Zi::::::i n::::n n::::nj::::ja:::::aaaa::::::a
35 //Z:::::::::::::::::Zi::::::i n::::n n::::nj::::j a::::::::::aa:::a
36 //ZZZZZZZZZZZZZZZZZZZiiiiiiii nnnnnn nnnnnnj::::j aaaaaaaaaa aaaa
37 // j::::j
38 // jjjj j::::j
39 // j::::jj j:::::j
40 // j::::::jjj::::::j
41 // jj::::::::::::j
42 // jjj::::::jjj
43 // jjjjjj
44
45
46
47 // =========== =========== =========== =========== ===========
48 // | | | | | | | | | | | | | | |
49 // =========== =========== =========== =========== ===========
50 // | | | | | | | | | |
51 // | | | | | | | | | |
52
53
54 // =========== =========== =========== =========== ===========
55 // | | | | | | | | | | | | | | |
56 // =========== =========== =========== =========== ===========
57 // | | | | | | | | | |
58 // | | | | | | | | | |
59
60
61
62 contract Torii is ERC721URIStorage , ERC721Enumerable{
63
64 address public owner;
65 uint public nftid = 0;
66 mapping(uint => string) toriiMessage;
67
68 //zinja metadata
69 string[5] z;
70
71 //O-torii metadata
72 string[4] o;
73
74 //senbon-torii metadata
75 string[4] s;
76
77 mapping(uint=>string) builtyear;
78
79 function multiMint(uint qty) public {
80 require( _msgSender() == owner );
81 uint target = nftid - 1 + qty;
82 for (uint i = nftid; i <= target; i++ ){
83 _safeMint( owner , nftid);
84 builtyear[nftid] = calcYear();
85 nftid++;
86 }
87 }
88
89 function _beforeTokenTransfer(address from, address to, uint256 tokenId)
90 internal
91 override(ERC721,ERC721Enumerable)
92 {
93 super._beforeTokenTransfer(from, to, tokenId);
94 }
95
96 function _burn(uint256 tokenId) internal override(ERC721,ERC721URIStorage) {
97 super._burn(tokenId);
98 }
99
100 function tokenURI(uint256 tokenId)
101 public
102 view
103 override(ERC721,ERC721URIStorage)
104 returns (string memory)
105 {
106 if(tokenId == 0){
107 string memory Otorii = string(abi.encodePacked(z[0],o[0],Strings.toString(tokenId),o[1],z[1],o[2],z[2],o[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
108 return Otorii;
109 }
110 string memory json = string(abi.encodePacked(z[0],s[0],Strings.toString(tokenId),s[1],z[1],s[2],z[2],s[3],builtyear[tokenId],z[3],readToriiMessage(tokenId),z[4]));
111 return json;
112 }
113
114 function setToriiMessage(uint _tokenId , string memory _toriiMessage ) public {
115 require(_msgSender() == ownerOf(_tokenId));
116 toriiMessage[_tokenId] = _toriiMessage;
117 }
118
119 function readToriiMessage(uint _tokenId ) public view returns(string memory){
120 if(keccak256(abi.encodePacked(toriiMessage[_tokenId])) == keccak256(abi.encodePacked("")) ){
121 return "no name";
122 }
123 return toriiMessage[_tokenId];
124 }
125
126 function calcYear() public view returns (string memory){
127 return Strings.toString(calcYearLogic(block.timestamp));
128 }
129
130 function calcYearLogic(uint _unixtime) public pure returns (uint){
131 return 1970 + _unixtime/((31536000 * 3 + 31622400)/4);
132 }
133
134
135 function supportsInterface(bytes4 interfaceId)
136 public
137 view
138 override(ERC721,ERC721Enumerable)
139 returns (bool)
140 {
141 return super.supportsInterface(interfaceId);
142 }
143
144
145
146 constructor() ERC721("torii" , "TORII" ) {
147
148 z[0] = "data:application/json;utf8,{\"name\":\"";
149 s[0] = "\u3010\u5343\u672c\u9ce5\u5c45\u3011Engrave name on the Senbon-Torii #";
150 o[0] = "\u3010\u5275\u5efa\u8a18\u5ff5 \u5927\u9ce5\u5c45\u3011Engrave name on the O-Torii";
151 s[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306b\u5b58\u5728\u3059\u308b\u5343\u672c\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5171\u306b\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
152 o[1] = "\",\"description\":\"Metaverse\u306b\u5275\u5efa\u3055\u308c\u308bCrypto Zinja\u306e\u4e2d\u592e\u306b\u5b58\u5728\u3059\u308b\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u6a29\u5229\u306eNFT\u3067\u3059\u3002\u8a18\u5ff5\u3059\u3079\u304d\u5275\u5efa\u8a18\u5ff5\u306e\u5927\u9ce5\u5c45\u306b\u540d\u524d\u3092\u523b\u3080\u3053\u3068\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5927\u304d\u304f\u652f\u3048\u3066\u4e0b\u3055\u308b\u8a3c\u3068\u306a\u308a\u307e\u3059\u3002";
153 z[1] = "Crypto Zinja\u306e\u6b63\u5f0f\u30aa\u30fc\u30d7\u30f3\u3068\u5171\u306b\u3053\u3061\u3089\u306e\u30da\u30fc\u30b8\u304b\u3089\u540d\u524d\u3092\u523b\u3080\u4e8b\u304c\u51fa\u6765\u307e\u3059\u3002 https://conata.world/zinja \u3000\u523b\u3080\u540d\u524d\u306b\u95a2\u3057\u3066\u306f\u304a\u540d\u524d\u3001\u4f01\u696d\u540d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306a\u3069\u597d\u304d\u306a\u6587\u5b57\u3092\u523b\u3093\u3067\u9802\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Crypto Zinja\u306f\u65e5\u672c\u53e4\u6765\u306e\u6587\u5316\u3092\u984c\u6750\u306b\u73fe\u5b9f\u7a7a\u9593\u3092\u5dfb\u304d\u8fbc\u307f\u62e1\u5f35\u3057\u3066\u3044\u304f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u3053\u306e\u7a7a\u9593\u3092\u5171\u306b\u80b2\u3066\u3066\u304f\u3060\u3055\u308b\u3042\u306a\u305f\u306b\u611f\u8b1d\u3092\u8fbc\u3081\u3066\u3002 \\n \\nThis is an NFT for the right to have your name engraved on the ";
154 s[2] = "Senbon";
155 o[2] = "O";
156 z[2] = "-Torii gate of Crypto Zinja, which will be built in Metaverse. You can inscribe your name on this page when Crypto Zinja is officially opened: https://conata.world/zinja You can inscribe your name, company name, project name, etc. Crypto Zinja is a project to involve and expand the real space based on the ancient Japanese culture. I would like to express our gratitude to you who will nurture this space with us.\",\"animation_url\":\"";
157 s[3] = "https://arweave.net/NsU6pqKl04X6m0E7_fEKut3j5kBYQ1421cf1NW9gtGY\",\"image\":\"https://arweave.net/7FdbwyAuZ80xjZMm71Fz7ssCovFd1wtmKhGTqEvu-7U\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"Senbon-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
158 o[3] = "https://arweave.net/ioEuPnHgNSwwP1lrh4t6JKl0tTE-lkymCHAnDBLaCF4\",\"image\":\"https://arweave.net/Fl6pX4mF5RvldLIlVq5FFlWw9MGaV7GdxSfuO2hpXFw\",\"external_url\":\"https://conata.world/zinja\",\"attributes\":[{ \"trait_type\": \"Artist\", \"value\": \"AIMI SEKIGUCHI\"},{\"trait_type\": \"Tori-name\", \"value\": \"O-Torii\"},{\"trait_type\": \"Year\", \"value\": \"";
159 z[3] = "\"},{\"trait_type\": \"Dedication Name\", \"value\": \"";
160 z[4] = "\"}]}";
161 owner = _msgSender();
162 _safeMint( owner , nftid);
163
164
165 builtyear[0] = "2021";
166 nftid++;
167 }
168 }
exec
/bin/bash -lc "nl -ba OpenzeppelinERC721.sol | sed -n '1,260p'" in /tmp/codex-x0fjpb7d
succeeded in 0ms:
1 // SPDX-License-Identifier: MIT
2
3 pragma solidity ^0.8.0;
4
5 /**
6 * @dev Interface of the ERC165 standard, as defined in the
7 * https://eips.ethereum.org/EIPS/eip-165[EIP].
8 *
9 * Implementers can declare support of contract interfaces, which can then be
10 * queried by others ({ERC165Checker}).
11 *
12 * For an implementation, see {ERC165}.
13 */
14 interface IERC165 {
15 /**
16 * @dev Returns true if this contract implements the interface defined by
17 * `interfaceId`. See the corresponding
18 * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
19 * to learn more about how these ids are created.
20 *
21 * This function call must use less than 30 000 gas.
22 */
23 function supportsInterface(bytes4 interfaceId) external view returns (bool);
24 }
25
26
27
28
29
30
31 /**
32 * @dev Required interface of an ERC721 compliant contract.
33 */
34 interface IERC721 is IERC165 {
35 /**
36 * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
37 */
38 event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
39
40 /**
41 * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
42 */
43 event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
44
45 /**
46 * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
47 */
48 event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
49
50 /**
51 * @dev Returns the number of tokens in ``owner``'s account.
52 */
53 function balanceOf(address owner) external view returns (uint256 balance);
54
55 /**
56 * @dev Returns the owner of the `tokenId` token.
57 *
58 * Requirements:
59 *
60 * - `tokenId` must exist.
61 */
62 function ownerOf(uint256 tokenId) external view returns (address owner);
63
64 /**
65 * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
66 * are aware of the ERC721 protocol to prevent tokens from being forever locked.
67 *
68 * Requirements:
69 *
70 * - `from` cannot be the zero address.
71 * - `to` cannot be the zero address.
72 * - `tokenId` token must exist and be owned by `from`.
73 * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
74 * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
75 *
76 * Emits a {Transfer} event.
77 */
78 function safeTransferFrom(address from, address to, uint256 tokenId) external;
79
80 /**
81 * @dev Transfers `tokenId` token from `from` to `to`.
82 *
83 * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
84 *
85 * Requirements:
86 *
87 * - `from` cannot be the zero address.
88 * - `to` cannot be the zero address.
89 * - `tokenId` token must be owned by `from`.
90 * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
91 *
92 * Emits a {Transfer} event.
93 */
94 function transferFrom(address from, address to, uint256 tokenId) external;
95
96 /**
97 * @dev Gives permission to `to` to transfer `tokenId` token to another account.
98 * The approval is cleared when the token is transferred.
99 *
100 * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
101 *
102 * Requirements:
103 *
104 * - The caller must own the token or be an approved operator.
105 * - `tokenId` must exist.
106 *
107 * Emits an {Approval} event.
108 */
109 function approve(address to, uint256 tokenId) external;
110
111 /**
112 * @dev Returns the account approved for `tokenId` token.
113 *
114 * Requirements:
115 *
116 * - `tokenId` must exist.
117 */
118 function getApproved(uint256 tokenId) external view returns (address operator);
119
120 /**
121 * @dev Approve or remove `operator` as an operator for the caller.
122 * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
123 *
124 * Requirements:
125 *
126 * - The `operator` cannot be the caller.
127 *
128 * Emits an {ApprovalForAll} event.
129 */
130 function setApprovalForAll(address operator, bool _approved) external;
131
132 /**
133 * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
134 *
135 * See {setApprovalForAll}
136 */
137 function isApprovedForAll(address owner, address operator) external view returns (bool);
138
139 /**
140 * @dev Safely transfers `tokenId` token from `from` to `to`.
141 *
142 * Requirements:
143 *
144 * - `from` cannot be the zero address.
145 * - `to` cannot be the zero address.
146 * - `tokenId` token must exist and be owned by `from`.
147 * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
148 * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
149 *
150 * Emits a {Transfer} event.
151 */
152 function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
153 }
154
155
156
157
158 /**
159 * @dev String operations.
160 */
161 library Strings {
162 bytes16 private constant alphabet = "0123456789abcdef";
163
164 /**
165 * @dev Converts a `uint256` to its ASCII `string` decimal representation.
166 */
167 function toString(uint256 value) internal pure returns (string memory) {
168 // Inspired by OraclizeAPI's implementation - MIT licence
169 // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
170
171 if (value == 0) {
172 return "0";
173 }
174 uint256 temp = value;
175 uint256 digits;
176 while (temp != 0) {
177 digits++;
178 temp /= 10;
179 }
180 bytes memory buffer = new bytes(digits);
181 while (value != 0) {
182 digits -= 1;
183 buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
184 value /= 10;
185 }
186 return string(buffer);
187 }
188
189 /**
190 * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
191 */
192 function toHexString(uint256 value) internal pure returns (string memory) {
193 if (value == 0) {
194 return "0x00";
195 }
196 uint256 temp = value;
197 uint256 length = 0;
198 while (temp != 0) {
199 length++;
200 temp >>= 8;
201 }
202 return toHexString(value, length);
203 }
204
205 /**
206 * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
207 */
208 function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
209 bytes memory buffer = new bytes(2 * length + 2);
210 buffer[0] = "0";
211 buffer[1] = "x";
212 for (uint256 i = 2 * length + 1; i > 1; --i) {
213 buffer[i] = alphabet[value & 0xf];
214 value >>= 4;
215 }
216 require(value == 0, "Strings: hex length insufficient");
217 return string(buffer);
218 }
219
220 }
221
222
223
224
225
226
227
228
229
230 /**
231 * @title ERC721 token receiver interface
232 * @dev Interface for any contract that wants to support safeTransfers
233 * from ERC721 asset contracts.
234 */
235 interface IERC721Receiver {
236 /**
237 * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
238 * by `operator` from `from`, this function is called.
239 *
240 * It must return its Solidity selector to confirm the token transfer.
241 * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
242 *
243 * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
244 */
245 function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
246 }
247
248
249
250
251
252
253
254 /**
255 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
256 * @dev See https://eips.ethereum.org/EIPS/eip-721
257 */
258 interface IERC721Metadata is IERC721 {
259
260 /**
exec
/bin/bash -lc "rg --files -g '*.sol' -g '"'!lib/**'"' -g '"'!@openzeppelin/**'"' ." in /tmp/codex-x0fjpb7d
succeeded in 0ms:
./CryptoZinjaTorii.sol
./OpenzeppelinERC721.sol
codex
{"no_findings":true,"summary":"Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.","findings":[]}
tokens used
46,975
{
"codex": {
"ran_at": "2026-04-04T03:58:04.628397+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 2,
"import_count": 1,
"first_party_contracts_count": 2
},
"summary": "Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.",
"raw_final": {
"summary": "Read AUDIT_BUNDLE.txt in full. The only custom logic is `CryptoZinjaTorii.sol` around owner-only minting and holder-controlled metadata, and I did not identify any meaningful exploitable issues in the requested categories.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x014d 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x6352211e 00000026: GT 00000027: PUSH2 0x00c3 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0x95d89b41 00000031: GT 00000032: PUSH2 0x007c 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0x95d89b41 0000003c: EQ 0000003d: PUSH2 0x03d8 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xa22cb465 00000047: EQ 00000048: PUSH2 0x03f6 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xab00492f 00000052: EQ 00000053: PUSH2 0x0412 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xb88d4fde 0000005d: EQ 0000005e: PUSH2 0x042e 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xc87b56dd 00000068: EQ 00000069: PUSH2 0x044a 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0xe985e9c5 00000073: EQ 00000074: PUSH2 0x047a 00000077: JUMPI 00000078: PUSH2 0x014d 0000007b: JUMP 0000007c: JUMPDEST 0000007d: DUP1 0000007e: PUSH4 0x6352211e 00000083: EQ 00000084: PUSH2 0x0302 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0x6a2a0696 0000008e: EQ 0000008f: PUSH2 0x0332 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x6fd976bc 00000099: EQ 0000009a: PUSH2 0x034e 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x70a08231 000000a4: EQ 000000a5: PUSH2 0x036c 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x74222b84 000000af: EQ 000000b0: PUSH2 0x039c 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x8da5cb5b 000000ba: EQ 000000bb: PUSH2 0x03ba 000000be: JUMPI 000000bf: PUSH2 0x014d 000000c2: JUMP 000000c3: JUMPDEST 000000c4: DUP1 000000c5: PUSH4 0x23b872dd 000000ca: GT 000000cb: PUSH2 0x0115 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x23b872dd 000000d5: EQ 000000d6: PUSH2 0x020a 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x2f745c59 000000e0: EQ 000000e1: PUSH2 0x0226 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x33c93012 000000eb: EQ 000000ec: PUSH2 0x0256 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x3cabd8ac 000000f6: EQ 000000f7: PUSH2 0x0286 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x42842e0e 00000101: EQ 00000102: PUSH2 0x02b6 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0x4f6ccce7 0000010c: EQ 0000010d: PUSH2 0x02d2 00000110: JUMPI 00000111: PUSH2 0x014d 00000114: JUMP 00000115: JUMPDEST 00000116: DUP1 00000117: PUSH4 0x01ffc9a7 0000011c: EQ 0000011d: PUSH2 0x0152 00000120: JUMPI 00000121: DUP1 00000122: PUSH4 0x06fdde03 00000127: EQ 00000128: PUSH2 0x0182 0000012b: JUMPI 0000012c: DUP1 0000012d: PUSH4 0x081812fc 00000132: EQ 00000133: PUSH2 0x01a0 00000136: JUMPI 00000137: DUP1 00000138: PUSH4 0x095ea7b3 0000013d: EQ 0000013e: PUSH2 0x01d0 00000141: JUMPI 00000142: DUP1 00000143: PUSH4 0x18160ddd 00000148: EQ 00000149: PUSH2 0x01ec 0000014c: JUMPI 0000014d: JUMPDEST 0000014e: PUSH1 0x00 00000150: DUP1 00000151: REVERT 00000152: JUMPDEST 00000153: PUSH2 0x016c 00000156: PUSH1 0x04 00000158: DUP1 00000159: CALLDATASIZE 0000015a: SUB 0000015b: DUP2 0000015c: ADD 0000015d: SWAP1 0000015e: PUSH2 0x0167 00000161: SWAP2 00000162: SWAP1 00000163: PUSH2 0x239c 00000166: JUMP 00000167: JUMPDEST 00000168: PUSH2 0x04aa 0000016b: JUMP 0000016c: JUMPDEST 0000016d: PUSH1 0x40 0000016f: MLOAD 00000170: PUSH2 0x0179 00000173: SWAP2 00000174: SWAP1 00000175: PUSH2 0x23e4 00000178: JUMP 00000179: JUMPDEST 0000017a: PUSH1 0x40 0000017c: MLOAD 0000017d: DUP1 0000017e: SWAP2 0000017f: SUB 00000180: SWAP1 00000181: RETURN 00000182: JUMPDEST 00000183: PUSH2 0x018a 00000186: PUSH2 0x04bc 00000189: JUMP 0000018a: JUMPDEST 0000018b: PUSH1 0x40 0000018d: MLOAD 0000018e: PUSH2 0x0197 00000191: SWAP2 00000192: SWAP1 00000193: PUSH2 0x2498 00000196: JUMP 00000197: JUMPDEST 00000198: PUSH1 0x40 0000019a: MLOAD 0000019b: DUP1 0000019c: SWAP2 0000019d: SUB 0000019e: SWAP1 0000019f: RETURN 000001a0: JUMPDEST 000001a1: PUSH2 0x01ba 000001a4: PUSH1 0x04 000001a6: DUP1 000001a7: CALLDATASIZE 000001a8: SUB 000001a9: DUP2 000001aa: ADD 000001ab: SWAP1 000001ac: PUSH2 0x01b5 000001af: SWAP2 000001b0: SWAP1 000001b1: PUSH2 0x24f0 000001b4: JUMP 000001b5: JUMPDEST 000001b6: PUSH2 0x054e 000001b9: JUMP 000001ba: JUMPDEST 000001bb: PUSH1 0x40 000001bd: MLOAD 000001be: PUSH2 0x01c7 000001c1: SWAP2 000001c2: SWAP1 000001c3: PUSH2 0x255e 000001c6: JUMP 000001c7: JUMPDEST 000001c8: PUSH1 0x40 000001ca: MLOAD 000001cb: DUP1 000001cc: SWAP2 000001cd: SUB 000001ce: SWAP1 000001cf: RETURN 000001d0: JUMPDEST 000001d1: PUSH2 0x01ea 000001d4: PUSH1 0x04 000001d6: DUP1 000001d7: CALLDATASIZE 000001d8: SUB 000001d9: DUP2 000001da: ADD 000001db: SWAP1 000001dc: PUSH2 0x01e5 000001df: SWAP2 000001e0: SWAP1 000001e1: PUSH2 0x25a5 000001e4: JUMP 000001e5: JUMPDEST 000001e6: PUSH2 0x05d3 000001e9: JUMP 000001ea: JUMPDEST 000001eb: STOP 000001ec: JUMPDEST 000001ed: PUSH2 0x01f4 000001f0: PUSH2 0x06eb 000001f3: JUMP 000001f4: JUMPDEST 000001f5: PUSH1 0x40 000001f7: MLOAD 000001f8: PUSH2 0x0201 000001fb: SWAP2 000001fc: SWAP1 000001fd: PUSH2 0x25f4 00000200: JUMP 00000201: JUMPDEST 00000202: PUSH1 0x40 00000204: MLOAD 00000205: DUP1 00000206: SWAP2 00000207: SUB 00000208: SWAP1 00000209: RETURN 0000020a: JUMPDEST 0000020b: PUSH2 0x0224 0000020e: PUSH1 0x04 00000210: DUP1 00000211: CALLDATASIZE 00000212: SUB 00000213: DUP2 00000214: ADD 00000215: SWAP1 00000216: PUSH2 0x021f 00000219: SWAP2 0000021a: SWAP1 0000021b: PUSH2 0x260f 0000021e: JUMP 0000021f: JUMPDEST 00000220: PUSH2 0x06f8 00000223: JUMP 00000224: JUMPDEST 00000225: STOP 00000226: JUMPDEST 00000227: PUSH2 0x0240 0000022a: PUSH1 0x04 0000022c: DUP1 0000022d: CALLDATASIZE 0000022e: SUB 0000022f: DUP2 00000230: ADD 00000231: SWAP1 00000232: PUSH2 0x023b 00000235: SWAP2 00000236: SWAP1 00000237: PUSH2 0x25a5 0000023a: JUMP 0000023b: JUMPDEST 0000023c: PUSH2 0x0758 0000023f: JUMP 00000240: JUMPDEST 00000241: PUSH1 0x40 00000243: MLOAD 00000244: PUSH2 0x024d 00000247: SWAP2 00000248: SWAP1 00000249: PUSH2 0x25f4 0000024c: JUMP 0000024d: JUMPDEST 0000024e: PUSH1 0x40 00000250: MLOAD 00000251: DUP1 00000252: SWAP2 00000253: SUB 00000254: SWAP1 00000255: RETURN 00000256: JUMPDEST 00000257: PUSH2 0x0270 0000025a: PUSH1 0x04 0000025c: DUP1 0000025d: CALLDATASIZE 0000025e: SUB 0000025f: DUP2 00000260: ADD 00000261: SWAP1 00000262: PUSH2 0x026b 00000265: SWAP2 00000266: SWAP1 00000267: PUSH2 0x24f0 0000026a: JUMP 0000026b: JUMPDEST 0000026c: PUSH2 0x07fd 0000026f: JUMP 00000270: JUMPDEST 00000271: PUSH1 0x40 00000273: MLOAD 00000274: PUSH2 0x027d 00000277: SWAP2 00000278: SWAP1 00000279: PUSH2 0x25f4 0000027c: JUMP 0000027d: JUMPDEST 0000027e: PUSH1 0x40 00000280: MLOAD 00000281: DUP1 00000282: SWAP2 00000283: SUB 00000284: SWAP1 00000285: RETURN 00000286: JUMPDEST 00000287: PUSH2 0x02a0 0000028a: PUSH1 0x04 0000028c: DUP1 0000028d: CALLDATASIZE 0000028e: SUB 0000028f: DUP2 00000290: ADD 00000291: SWAP1 00000292: PUSH2 0x029b 00000295: SWAP2 00000296: SWAP1 00000297: PUSH2 0x24f0 0000029a: JUMP 0000029b: JUMPDEST 0000029c: PUSH2 0x0823 0000029f: JUMP 000002a0: JUMPDEST 000002a1: PUSH1 0x40 000002a3: MLOAD 000002a4: PUSH2 0x02ad 000002a7: SWAP2 000002a8: SWAP1 000002a9: PUSH2 0x2498 000002ac: JUMP 000002ad: JUMPDEST 000002ae: PUSH1 0x40 000002b0: MLOAD 000002b1: DUP1 000002b2: SWAP2 000002b3: SUB 000002b4: SWAP1 000002b5: RETURN 000002b6: JUMPDEST 000002b7: PUSH2 0x02d0 000002ba: PUSH1 0x04 000002bc: DUP1 000002bd: CALLDATASIZE 000002be: SUB 000002bf: DUP2 000002c0: ADD 000002c1: SWAP1 000002c2: PUSH2 0x02cb 000002c5: SWAP2 000002c6: SWAP1 000002c7: PUSH2 0x260f 000002ca: JUMP 000002cb: JUMPDEST 000002cc: PUSH2 0x096a 000002cf: JUMP 000002d0: JUMPDEST 000002d1: STOP 000002d2: JUMPDEST 000002d3: PUSH2 0x02ec 000002d6: PUSH1 0x04 000002d8: DUP1 000002d9: CALLDATASIZE 000002da: SUB 000002db: DUP2 000002dc: ADD 000002dd: SWAP1 000002de: PUSH2 0x02e7 000002e1: SWAP2 000002e2: SWAP1 000002e3: PUSH2 0x24f0 000002e6: JUMP 000002e7: JUMPDEST 000002e8: PUSH2 0x098a 000002eb: JUMP 000002ec: JUMPDEST 000002ed: PUSH1 0x40 000002ef: MLOAD 000002f0: PUSH2 0x02f9 000002f3: SWAP2 000002f4: SWAP1 000002f5: PUSH2 0x25f4 000002f8: JUMP 000002f9: JUMPDEST 000002fa: PUSH1 0x40 000002fc: MLOAD 000002fd: DUP1 000002fe: SWAP2 000002ff: SUB 00000300: SWAP1 00000301: RETURN 00000302: JUMPDEST 00000303: PUSH2 0x031c 00000306: PUSH1 0x04 00000308: DUP1 00000309: CALLDATASIZE 0000030a: SUB 0000030b: DUP2 0000030c: ADD 0000030d: SWAP1 0000030e: PUSH2 0x0317 00000311: SWAP2 00000312: SWAP1 00000313: PUSH2 0x24f0 00000316: JUMP 00000317: JUMPDEST 00000318: PUSH2 0x09fb 0000031b: JUMP 0000031c: JUMPDEST 0000031d: PUSH1 0x40 0000031f: MLOAD 00000320: PUSH2 0x0329 00000323: SWAP2 00000324: SWAP1 00000325: PUSH2 0x255e 00000328: JUMP 00000329: JUMPDEST 0000032a: PUSH1 0x40 0000032c: MLOAD 0000032d: DUP1 0000032e: SWAP2 0000032f: SUB 00000330: SWAP1 00000331: RETURN 00000332: JUMPDEST 00000333: PUSH2 0x034c 00000336: PUSH1 0x04 00000338: DUP1 00000339: CALLDATASIZE 0000033a: SUB 0000033b: DUP2 0000033c: ADD 0000033d: SWAP1 0000033e: PUSH2 0x0347 00000341: SWAP2 00000342: SWAP1 00000343: PUSH2 0x2797 00000346: JUMP 00000347: JUMPDEST 00000348: PUSH2 0x0aad 0000034b: JUMP 0000034c: JUMPDEST 0000034d: STOP 0000034e: JUMPDEST 0000034f: PUSH2 0x0356 00000352: PUSH2 0x0b20 00000355: JUMP 00000356: JUMPDEST 00000357: PUSH1 0x40 00000359: MLOAD 0000035a: PUSH2 0x0363 0000035d: SWAP2 0000035e: SWAP1 0000035f: PUSH2 0x25f4 00000362: JUMP 00000363: JUMPDEST 00000364: PUSH1 0x40 00000366: MLOAD 00000367: DUP1 00000368: SWAP2 00000369: SUB 0000036a: SWAP1 0000036b: RETURN 0000036c: JUMPDEST 0000036d: PUSH2 0x0386 00000370: PUSH1 0x04 00000372: DUP1 00000373: CALLDATASIZE 00000374: SUB 00000375: DUP2 00000376: ADD 00000377: SWAP1 00000378: PUSH2 0x0381 0000037b: SWAP2 0000037c: SWAP1 0000037d: PUSH2 0x27f3 00000380: JUMP 00000381: JUMPDEST 00000382: PUSH2 0x0b26 00000385: JUMP 00000386: JUMPDEST 00000387: PUSH1 0x40 00000389: MLOAD 0000038a: PUSH2 0x0393 0000038d: SWAP2 0000038e: SWAP1 0000038f: PUSH2 0x25f4 00000392: JUMP 00000393: JUMPDEST 00000394: PUSH1 0x40 00000396: MLOAD 00000397: DUP1 00000398: SWAP2 00000399: SUB 0000039a: SWAP1 0000039b: RETURN 0000039c: JUMPDEST 0000039d: PUSH2 0x03a4 000003a0: PUSH2 0x0bde 000003a3: JUMP 000003a4: JUMPDEST 000003a5: PUSH1 0x40 000003a7: MLOAD 000003a8: PUSH2 0x03b1 000003ab: SWAP2 000003ac: SWAP1 000003ad: PUSH2 0x2498 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH1 0x40 000003b4: MLOAD 000003b5: DUP1 000003b6: SWAP2 000003b7: SUB 000003b8: SWAP1 000003b9: RETURN 000003ba: JUMPDEST 000003bb: PUSH2 0x03c2 000003be: PUSH2 0x0bf6 000003c1: JUMP 000003c2: JUMPDEST 000003c3: PUSH1 0x40 000003c5: MLOAD 000003c6: PUSH2 0x03cf 000003c9: SWAP2 000003ca: SWAP1 000003cb: PUSH2 0x255e 000003ce: JUMP 000003cf: JUMPDEST 000003d0: PUSH1 0x40 000003d2: MLOAD 000003d3: DUP1 000003d4: SWAP2 000003d5: SUB 000003d6: SWAP1 000003d7: RETURN 000003d8: JUMPDEST 000003d9: PUSH2 0x03e0 000003dc: PUSH2 0x0c1c 000003df: JUMP 000003e0: JUMPDEST 000003e1: PUSH1 0x40 000003e3: MLOAD 000003e4: PUSH2 0x03ed 000003e7: SWAP2 000003e8: SWAP1 000003e9: PUSH2 0x2498 000003ec: JUMP 000003ed: JUMPDEST 000003ee: PUSH1 0x40 000003f0: MLOAD 000003f1: DUP1 000003f2: SWAP2 000003f3: SUB 000003f4: SWAP1 000003f5: RETURN 000003f6: JUMPDEST 000003f7: PUSH2 0x0410 000003fa: PUSH1 0x04 000003fc: DUP1 000003fd: CALLDATASIZE 000003fe: SUB 000003ff: DUP2 00000400: ADD 00000401: SWAP1 00000402: PUSH2 0x040b 00000405: SWAP2 00000406: SWAP1 00000407: PUSH2 0x284c 0000040a: JUMP 0000040b: JUMPDEST 0000040c: PUSH2 0x0cae 0000040f: JUMP 00000410: JUMPDEST 00000411: STOP 00000412: JUMPDEST 00000413: PUSH2 0x042c 00000416: PUSH1 0x04 00000418: DUP1 00000419: CALLDATASIZE 0000041a: SUB 0000041b: DUP2 0000041c: ADD 0000041d: SWAP1 0000041e: PUSH2 0x0427 00000421: SWAP2 00000422: SWAP1 00000423: PUSH2 0x24f0 00000426: JUMP 00000427: JUMPDEST 00000428: PUSH2 0x0e2f 0000042b: JUMP 0000042c: JUMPDEST 0000042d: STOP 0000042e: JUMPDEST 0000042f: PUSH2 0x0448 00000432: PUSH1 0x04 00000434: DUP1 00000435: CALLDATASIZE 00000436: SUB 00000437: DUP2 00000438: ADD 00000439: SWAP1 0000043a: PUSH2 0x0443 0000043d: SWAP2 0000043e: SWAP1 0000043f: PUSH2 0x292d 00000442: JUMP 00000443: JUMPDEST 00000444: PUSH2 0x0f4c 00000447: JUMP 00000448: JUMPDEST 00000449: STOP 0000044a: JUMPDEST 0000044b: PUSH2 0x0464 0000044e: PUSH1 0x04 00000450: DUP1 00000451: CALLDATASIZE 00000452: SUB 00000453: DUP2 00000454: ADD 00000455: SWAP1 00000456: PUSH2 0x045f 00000459: SWAP2 0000045a: SWAP1 0000045b: PUSH2 0x24f0 0000045e: JUMP 0000045f: JUMPDEST 00000460: PUSH2 0x0fae 00000463: JUMP 00000464: JUMPDEST 00000465: PUSH1 0x40 00000467: MLOAD 00000468: PUSH2 0x0471 0000046b: SWAP2 0000046c: SWAP1 0000046d: PUSH2 0x2498 00000470: JUMP 00000471: JUMPDEST 00000472: PUSH1 0x40 00000474: MLOAD 00000475: DUP1 00000476: SWAP2 00000477: SUB 00000478: SWAP1 00000479: RETURN 0000047a: JUMPDEST 0000047b: PUSH2 0x0494 0000047e: PUSH1 0x04 00000480: DUP1 00000481: CALLDATASIZE 00000482: SUB 00000483: DUP2 00000484: ADD 00000485: SWAP1 00000486: PUSH2 0x048f 00000489: SWAP2 0000048a: SWAP1 0000048b: PUSH2 0x29b0 0000048e: JUMP 0000048f: JUMPDEST 00000490: PUSH2 0x11fe 00000493: JUMP 00000494: JUMPDEST 00000495: PUSH1 0x40 00000497: MLOAD 00000498: PUSH2 0x04a1 0000049b: SWAP2 0000049c: SWAP1 0000049d: PUSH2 0x23e4 000004a0: JUMP 000004a1: JUMPDEST 000004a2: PUSH1 0x40 000004a4: MLOAD 000004a5: DUP1 000004a6: SWAP2 000004a7: SUB 000004a8: SWAP1 000004a9: RETURN 000004aa: JUMPDEST 000004ab: PUSH1 0x00 000004ad: PUSH2 0x04b5 000004b0: DUP3 000004b1: PUSH2 0x13be 000004b4: JUMP 000004b5: JUMPDEST 000004b6: SWAP1 000004b7: POP 000004b8: SWAP2 000004b9: SWAP1 000004ba: POP 000004bb: JUMP 000004bc: JUMPDEST 000004bd: PUSH1 0x60 000004bf: PUSH1 0x00 000004c1: DUP1 000004c2: SLOAD 000004c3: PUSH2 0x04cb 000004c6: SWAP1 000004c7: PUSH2 0x2a1f 000004ca: JUMP 000004cb: JUMPDEST 000004cc: DUP1 000004cd: PUSH1 0x1f 000004cf: ADD 000004d0: PUSH1 0x20 000004d2: DUP1 000004d3: SWAP2 000004d4: DIV 000004d5: MUL 000004d6: PUSH1 0x20 000004d8: ADD 000004d9: PUSH1 0x40 000004db: MLOAD 000004dc: SWAP1 000004dd: DUP2 000004de: ADD 000004df: PUSH1 0x40 000004e1: MSTORE 000004e2: DUP1 000004e3: SWAP3 000004e4: SWAP2 000004e5: SWAP1 000004e6: DUP2 000004e7: DUP2 000004e8: MSTORE 000004e9: PUSH1 0x20 000004eb: ADD 000004ec: DUP3 000004ed: DUP1 000004ee: SLOAD 000004ef: PUSH2 0x04f7 000004f2: SWAP1 000004f3: PUSH2 0x2a1f 000004f6: JUMP 000004f7: JUMPDEST 000004f8: DUP1 000004f9: ISZERO 000004fa: PUSH2 0x0544 000004fd: JUMPI 000004fe: DUP1 000004ff: PUSH1 0x1f 00000501: LT 00000502: PUSH2 0x0519 00000505: JUMPI 00000506: PUSH2 0x0100 00000509: DUP1 0000050a: DUP4 0000050b: SLOAD 0000050c: DIV 0000050d: MUL 0000050e: DUP4 0000050f: MSTORE 00000510: SWAP2 00000511: PUSH1 0x20 00000513: ADD 00000514: SWAP2 00000515: PUSH2 0x0544 00000518: JUMP 00000519: JUMPDEST 0000051a: DUP3 0000051b: ADD 0000051c: SWAP2 0000051d: SWAP1 0000051e: PUSH1 0x00 00000520: MSTORE 00000521: PUSH1 0x20 00000523: PUSH1 0x00 00000525: KECCAK256 00000526: SWAP1 00000527: JUMPDEST 00000528: DUP2 00000529: SLOAD 0000052a: DUP2 0000052b: MSTORE 0000052c: SWAP1 0000052d: PUSH1 0x01 0000052f: ADD 00000530: SWAP1 00000531: PUSH1 0x20 00000533: ADD 00000534: DUP1 00000535: DUP4 00000536: GT 00000537: PUSH2 0x0527 0000053a: JUMPI 0000053b: DUP3 0000053c: SWAP1 0000053d: SUB 0000053e: PUSH1 0x1f 00000540: AND 00000541: DUP3 00000542: ADD 00000543: SWAP2 00000544: JUMPDEST 00000545: POP 00000546: POP 00000547: POP 00000548: POP 00000549: POP 0000054a: SWAP1 0000054b: POP 0000054c: SWAP1 0000054d: JUMP 0000054e: JUMPDEST 0000054f: PUSH1 0x00 00000551: PUSH2 0x0559 00000554: DUP3 00000555: PUSH2 0x1438 00000558: JUMP 00000559: JUMPDEST 0000055a: PUSH2 0x0598 0000055d: JUMPI 0000055e: PUSH1 0x40 00000560: MLOAD 00000561: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000582: DUP2 00000583: MSTORE 00000584: PUSH1 0x04 00000586: ADD 00000587: PUSH2 0x058f 0000058a: SWAP1 0000058b: PUSH2 0x2ac3 0000058e: JUMP 0000058f: JUMPDEST 00000590: PUSH1 0x40 00000592: MLOAD 00000593: DUP1 00000594: SWAP2 00000595: SUB 00000596: SWAP1 00000597: REVERT 00000598: JUMPDEST 00000599: PUSH1 0x04 0000059b: PUSH1 0x00 0000059d: DUP4 0000059e: DUP2 0000059f: MSTORE 000005a0: PUSH1 0x20 000005a2: ADD 000005a3: SWAP1 000005a4: DUP2 000005a5: MSTORE 000005a6: PUSH1 0x20 000005a8: ADD 000005a9: PUSH1 0x00 000005ab: KECCAK256 000005ac: PUSH1 0x00 000005ae: SWAP1 000005af: SLOAD 000005b0: SWAP1 000005b1: PUSH2 0x0100 000005b4: EXP 000005b5: SWAP1 000005b6: DIV 000005b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005cc: AND 000005cd: SWAP1 000005ce: POP 000005cf: SWAP2 000005d0: SWAP1 000005d1: POP 000005d2: JUMP 000005d3: JUMPDEST 000005d4: PUSH1 0x00 000005d6: PUSH2 0x05de 000005d9: DUP3 000005da: PUSH2 0x09fb 000005dd: JUMP 000005de: JUMPDEST 000005df: SWAP1 000005e0: POP 000005e1: DUP1 000005e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005f7: AND 000005f8: DUP4 000005f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000060e: AND 0000060f: EQ 00000610: ISZERO 00000611: PUSH2 0x064f 00000614: JUMPI 00000615: PUSH1 0x40 00000617: MLOAD 00000618: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000639: DUP2 0000063a: MSTORE 0000063b: PUSH1 0x04 0000063d: ADD 0000063e: PUSH2 0x0646 00000641: SWAP1 00000642: PUSH2 0x2b55 00000645: JUMP 00000646: JUMPDEST 00000647: PUSH1 0x40 00000649: MLOAD 0000064a: DUP1 0000064b: SWAP2 0000064c: SUB 0000064d: SWAP1 0000064e: REVERT 0000064f: JUMPDEST 00000650: DUP1 00000651: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000666: AND 00000667: PUSH2 0x066e 0000066a: PUSH2 0x14a4 0000066d: JUMP 0000066e: JUMPDEST 0000066f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000684: AND 00000685: EQ 00000686: DUP1 00000687: PUSH2 0x069d 0000068a: JUMPI 0000068b: POP 0000068c: PUSH2 0x069c 0000068f: DUP2 00000690: PUSH2 0x0697 00000693: PUSH2 0x14a4 00000696: JUMP 00000697: JUMPDEST 00000698: PUSH2 0x11fe 0000069b: JUMP 0000069c: JUMPDEST 0000069d: JUMPDEST 0000069e: PUSH2 0x06dc 000006a1: JUMPI 000006a2: PUSH1 0x40 000006a4: MLOAD 000006a5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006c6: DUP2 000006c7: MSTORE 000006c8: PUSH1 0x04 000006ca: ADD 000006cb: PUSH2 0x06d3 000006ce: SWAP1 000006cf: PUSH2 0x2be7 000006d2: JUMP 000006d3: JUMPDEST 000006d4: PUSH1 0x40 000006d6: MLOAD 000006d7: DUP1 000006d8: SWAP2 000006d9: SUB 000006da: SWAP1 000006db: REVERT 000006dc: JUMPDEST 000006dd: PUSH2 0x06e6 000006e0: DUP4 000006e1: DUP4 000006e2: PUSH2 0x14ac 000006e5: JUMP 000006e6: JUMPDEST 000006e7: POP 000006e8: POP 000006e9: POP 000006ea: JUMP 000006eb: JUMPDEST 000006ec: PUSH1 0x00 000006ee: PUSH1 0x09 000006f0: DUP1 000006f1: SLOAD 000006f2: SWAP1 000006f3: POP 000006f4: SWAP1 000006f5: POP 000006f6: SWAP1 000006f7: JUMP 000006f8: JUMPDEST 000006f9: PUSH2 0x0709 000006fc: PUSH2 0x0703 000006ff: PUSH2 0x14a4 00000702: JUMP 00000703: JUMPDEST 00000704: DUP3 00000705: PUSH2 0x1565 00000708: JUMP 00000709: JUMPDEST 0000070a: PUSH2 0x0748 0000070d: JUMPI 0000070e: PUSH1 0x40 00000710: MLOAD 00000711: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000732: DUP2 00000733: MSTORE 00000734: PUSH1 0x04 00000736: ADD 00000737: PUSH2 0x073f 0000073a: SWAP1 0000073b: PUSH2 0x2c79 0000073e: JUMP 0000073f: JUMPDEST 00000740: PUSH1 0x40 00000742: MLOAD 00000743: DUP1 00000744: SWAP2 00000745: SUB 00000746: SWAP1 00000747: REVERT 00000748: JUMPDEST 00000749: PUSH2 0x0753 0000074c: DUP4 0000074d: DUP4 0000074e: DUP4 0000074f: PUSH2 0x1643 00000752: JUMP 00000753: JUMPDEST 00000754: POP 00000755: POP 00000756: POP 00000757: JUMP 00000758: JUMPDEST 00000759: PUSH1 0x00 0000075b: PUSH2 0x0763 0000075e: DUP4 0000075f: PUSH2 0x0b26 00000762: JUMP 00000763: JUMPDEST 00000764: DUP3 00000765: LT 00000766: PUSH2 0x07a4 00000769: JUMPI 0000076a: PUSH1 0x40 0000076c: MLOAD 0000076d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000078e: DUP2 0000078f: MSTORE 00000790: PUSH1 0x04 00000792: ADD 00000793: PUSH2 0x079b 00000796: SWAP1 00000797: PUSH2 0x2d0b 0000079a: JUMP 0000079b: JUMPDEST 0000079c: PUSH1 0x40 0000079e: MLOAD 0000079f: DUP1 000007a0: SWAP2 000007a1: SUB 000007a2: SWAP1 000007a3: REVERT 000007a4: JUMPDEST 000007a5: PUSH1 0x07 000007a7: PUSH1 0x00 000007a9: DUP5 000007aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007bf: AND 000007c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007d5: AND 000007d6: DUP2 000007d7: MSTORE 000007d8: PUSH1 0x20 000007da: ADD 000007db: SWAP1 000007dc: DUP2 000007dd: MSTORE 000007de: PUSH1 0x20 000007e0: ADD 000007e1: PUSH1 0x00 000007e3: KECCAK256 000007e4: PUSH1 0x00 000007e6: DUP4 000007e7: DUP2 000007e8: MSTORE 000007e9: PUSH1 0x20 000007eb: ADD 000007ec: SWAP1 000007ed: DUP2 000007ee: MSTORE 000007ef: PUSH1 0x20 000007f1: ADD 000007f2: PUSH1 0x00 000007f4: KECCAK256 000007f5: SLOAD 000007f6: SWAP1 000007f7: POP 000007f8: SWAP3 000007f9: SWAP2 000007fa: POP 000007fb: POP 000007fc: JUMP 000007fd: JUMPDEST 000007fe: PUSH1 0x00 00000800: PUSH4 0x01e187e0 00000805: DUP3 00000806: PUSH2 0x080f 00000809: SWAP2 0000080a: SWAP1 0000080b: PUSH2 0x2d89 0000080e: JUMP 0000080f: JUMPDEST 00000810: PUSH2 0x07b2 00000813: PUSH2 0x081c 00000816: SWAP2 00000817: SWAP1 00000818: PUSH2 0x2dba 0000081b: JUMP 0000081c: JUMPDEST 0000081d: SWAP1 0000081e: POP 0000081f: SWAP2 00000820: SWAP1 00000821: POP 00000822: JUMP 00000823: JUMPDEST 00000824: PUSH1 0x60 00000826: PUSH1 0x40 00000828: MLOAD 00000829: PUSH1 0x20 0000082b: ADD 0000082c: PUSH2 0x0834 0000082f: SWAP1 00000830: PUSH2 0x2e41 00000833: JUMP 00000834: JUMPDEST 00000835: PUSH1 0x40 00000837: MLOAD 00000838: PUSH1 0x20 0000083a: DUP2 0000083b: DUP4 0000083c: SUB 0000083d: SUB 0000083e: DUP2 0000083f: MSTORE 00000840: SWAP1 00000841: PUSH1 0x40 00000843: MSTORE 00000844: DUP1 00000845: MLOAD 00000846: SWAP1 00000847: PUSH1 0x20 00000849: ADD 0000084a: KECCAK256 0000084b: PUSH1 0x0d 0000084d: PUSH1 0x00 0000084f: DUP5 00000850: DUP2 00000851: MSTORE 00000852: PUSH1 0x20 00000854: ADD 00000855: SWAP1 00000856: DUP2 00000857: MSTORE 00000858: PUSH1 0x20 0000085a: ADD 0000085b: PUSH1 0x00 0000085d: KECCAK256 0000085e: PUSH1 0x40 00000860: MLOAD 00000861: PUSH1 0x20 00000863: ADD 00000864: PUSH2 0x086d 00000867: SWAP2 00000868: SWAP1 00000869: PUSH2 0x2eea 0000086c: JUMP 0000086d: JUMPDEST 0000086e: PUSH1 0x40 00000870: MLOAD 00000871: PUSH1 0x20 00000873: DUP2 00000874: DUP4 00000875: SUB 00000876: SUB 00000877: DUP2 00000878: MSTORE 00000879: SWAP1 0000087a: PUSH1 0x40 0000087c: MSTORE 0000087d: DUP1 0000087e: MLOAD 0000087f: SWAP1 00000880: PUSH1 0x20 00000882: ADD 00000883: KECCAK256 00000884: EQ 00000885: ISZERO 00000886: PUSH2 0x08c6 00000889: JUMPI 0000088a: PUSH1 0x40 0000088c: MLOAD 0000088d: DUP1 0000088e: PUSH1 0x40 00000890: ADD 00000891: PUSH1 0x40 00000893: MSTORE 00000894: DUP1 00000895: PUSH1 0x07 00000897: DUP2 00000898: MSTORE 00000899: PUSH1 0x20 0000089b: ADD 0000089c: PUSH32 0x6e6f206e616d6500000000000000000000000000000000000000000000000000 000008bd: DUP2 000008be: MSTORE 000008bf: POP 000008c0: SWAP1 000008c1: POP 000008c2: PUSH2 0x0965 000008c5: JUMP 000008c6: JUMPDEST 000008c7: PUSH1 0x0d 000008c9: PUSH1 0x00 000008cb: DUP4 000008cc: DUP2 000008cd: MSTORE 000008ce: PUSH1 0x20 000008d0: ADD 000008d1: SWAP1 000008d2: DUP2 000008d3: MSTORE 000008d4: PUSH1 0x20 000008d6: ADD 000008d7: PUSH1 0x00 000008d9: KECCAK256 000008da: DUP1 000008db: SLOAD 000008dc: PUSH2 0x08e4 000008df: SWAP1 000008e0: PUSH2 0x2a1f 000008e3: JUMP 000008e4: JUMPDEST 000008e5: DUP1 000008e6: PUSH1 0x1f 000008e8: ADD 000008e9: PUSH1 0x20 000008eb: DUP1 000008ec: SWAP2 000008ed: DIV 000008ee: MUL 000008ef: PUSH1 0x20 000008f1: ADD 000008f2: PUSH1 0x40 000008f4: MLOAD 000008f5: SWAP1 000008f6: DUP2 000008f7: ADD 000008f8: PUSH1 0x40 000008fa: MSTORE 000008fb: DUP1 000008fc: SWAP3 000008fd: SWAP2 000008fe: SWAP1 000008ff: DUP2 00000900: DUP2 00000901: MSTORE 00000902: PUSH1 0x20 00000904: ADD 00000905: DUP3 00000906: DUP1 00000907: SLOAD 00000908: PUSH2 0x0910 0000090b: SWAP1 0000090c: PUSH2 0x2a1f 0000090f: JUMP 00000910: JUMPDEST 00000911: DUP1 00000912: ISZERO 00000913: PUSH2 0x095d 00000916: JUMPI 00000917: DUP1 00000918: PUSH1 0x1f 0000091a: LT 0000091b: PUSH2 0x0932 0000091e: JUMPI 0000091f: PUSH2 0x0100 00000922: DUP1 00000923: DUP4 00000924: SLOAD 00000925: DIV 00000926: MUL 00000927: DUP4 00000928: MSTORE 00000929: SWAP2 0000092a: PUSH1 0x20 0000092c: ADD 0000092d: SWAP2 0000092e: PUSH2 0x095d 00000931: JUMP 00000932: JUMPDEST 00000933: DUP3 00000934: ADD 00000935: SWAP2 00000936: SWAP1 00000937: PUSH1 0x00 00000939: MSTORE 0000093a: PUSH1 0x20 0000093c: PUSH1 0x00 0000093e: KECCAK256 0000093f: SWAP1 00000940: JUMPDEST 00000941: DUP2 00000942: SLOAD 00000943: DUP2 00000944: MSTORE 00000945: SWAP1 00000946: PUSH1 0x01 00000948: ADD 00000949: SWAP1 0000094a: PUSH1 0x20 0000094c: ADD 0000094d: DUP1 0000094e: DUP4 0000094f: GT 00000950: PUSH2 0x0940 00000953: JUMPI 00000954: DUP3 00000955: SWAP1 00000956: SUB 00000957: PUSH1 0x1f 00000959: AND 0000095a: DUP3 0000095b: ADD 0000095c: SWAP2 0000095d: JUMPDEST 0000095e: POP 0000095f: POP 00000960: POP 00000961: POP 00000962: POP 00000963: SWAP1 00000964: POP 00000965: JUMPDEST 00000966: SWAP2 00000967: SWAP1 00000968: POP 00000969: JUMP 0000096a: JUMPDEST 0000096b: PUSH2 0x0985 0000096e: DUP4 0000096f: DUP4 00000970: DUP4 00000971: PUSH1 0x40 00000973: MLOAD 00000974: DUP1 00000975: PUSH1 0x20 00000977: ADD 00000978: PUSH1 0x40 0000097a: MSTORE 0000097b: DUP1 0000097c: PUSH1 0x00 0000097e: DUP2 0000097f: MSTORE 00000980: POP 00000981: PUSH2 0x0f4c 00000984: JUMP 00000985: JUMPDEST 00000986: POP 00000987: POP 00000988: POP 00000989: JUMP 0000098a: JUMPDEST 0000098b: PUSH1 0x00 0000098d: PUSH2 0x0994 00000990: PUSH2 0x06eb 00000993: JUMP 00000994: JUMPDEST 00000995: DUP3 00000996: LT 00000997: PUSH2 0x09d5 0000099a: JUMPI 0000099b: PUSH1 0x40 0000099d: MLOAD 0000099e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009bf: DUP2 000009c0: MSTORE 000009c1: PUSH1 0x04 000009c3: ADD 000009c4: PUSH2 0x09cc 000009c7: SWAP1 000009c8: PUSH2 0x2f73 000009cb: JUMP 000009cc: JUMPDEST 000009cd: PUSH1 0x40 000009cf: MLOAD 000009d0: DUP1 000009d1: SWAP2 000009d2: SUB 000009d3: SWAP1 000009d4: REVERT 000009d5: JUMPDEST 000009d6: PUSH1 0x09 000009d8: DUP3 000009d9: DUP2 000009da: SLOAD 000009db: DUP2 000009dc: LT 000009dd: PUSH2 0x09e9 000009e0: JUMPI 000009e1: PUSH2 0x09e8 000009e4: PUSH2 0x2f93 000009e7: JUMP 000009e8: JUMPDEST 000009e9: JUMPDEST 000009ea: SWAP1 000009eb: PUSH1 0x00 000009ed: MSTORE 000009ee: PUSH1 0x20 000009f0: PUSH1 0x00 000009f2: KECCAK256 000009f3: ADD 000009f4: SLOAD 000009f5: SWAP1 000009f6: POP 000009f7: SWAP2 000009f8: SWAP1 000009f9: POP 000009fa: JUMP 000009fb: JUMPDEST 000009fc: PUSH1 0x00 000009fe: DUP1 000009ff: PUSH1 0x02 00000a01: PUSH1 0x00 00000a03: DUP5 00000a04: DUP2 00000a05: MSTORE 00000a06: PUSH1 0x20 00000a08: ADD 00000a09: SWAP1 00000a0a: DUP2 00000a0b: MSTORE 00000a0c: PUSH1 0x20 00000a0e: ADD 00000a0f: PUSH1 0x00 00000a11: KECCAK256 00000a12: PUSH1 0x00 00000a14: SWAP1 00000a15: SLOAD 00000a16: SWAP1 00000a17: PUSH2 0x0100 00000a1a: EXP 00000a1b: SWAP1 00000a1c: DIV 00000a1d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a32: AND 00000a33: SWAP1 00000a34: POP 00000a35: PUSH1 0x00 00000a37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a4c: AND 00000a4d: DUP2 00000a4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a63: AND 00000a64: EQ 00000a65: ISZERO 00000a66: PUSH2 0x0aa4 00000a69: JUMPI 00000a6a: PUSH1 0x40 00000a6c: MLOAD 00000a6d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a8e: DUP2 00000a8f: MSTORE 00000a90: PUSH1 0x04 00000a92: ADD 00000a93: PUSH2 0x0a9b 00000a96: SWAP1 00000a97: PUSH2 0x3034 00000a9a: JUMP 00000a9b: JUMPDEST 00000a9c: PUSH1 0x40 00000a9e: MLOAD 00000a9f: DUP1 00000aa0: SWAP2 00000aa1: SUB 00000aa2: SWAP1 00000aa3: REVERT 00000aa4: JUMPDEST 00000aa5: DUP1 00000aa6: SWAP2 00000aa7: POP 00000aa8: POP 00000aa9: SWAP2 00000aaa: SWAP1 00000aab: POP 00000aac: JUMP 00000aad: JUMPDEST 00000aae: PUSH2 0x0ab6 00000ab1: DUP3 00000ab2: PUSH2 0x09fb 00000ab5: JUMP 00000ab6: JUMPDEST 00000ab7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000acc: AND 00000acd: PUSH2 0x0ad4 00000ad0: PUSH2 0x14a4 00000ad3: JUMP 00000ad4: JUMPDEST 00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aea: AND 00000aeb: EQ 00000aec: PUSH2 0x0af4 00000aef: JUMPI 00000af0: PUSH1 0x00 00000af2: DUP1 00000af3: REVERT 00000af4: JUMPDEST 00000af5: DUP1 00000af6: PUSH1 0x0d 00000af8: PUSH1 0x00 00000afa: DUP5 00000afb: DUP2 00000afc: MSTORE 00000afd: PUSH1 0x20 00000aff: ADD 00000b00: SWAP1 00000b01: DUP2 00000b02: MSTORE 00000b03: PUSH1 0x20 00000b05: ADD 00000b06: PUSH1 0x00 00000b08: KECCAK256 00000b09: SWAP1 00000b0a: DUP1 00000b0b: MLOAD 00000b0c: SWAP1 00000b0d: PUSH1 0x20 00000b0f: ADD 00000b10: SWAP1 00000b11: PUSH2 0x0b1b 00000b14: SWAP3 00000b15: SWAP2 00000b16: SWAP1 00000b17: PUSH2 0x228d 00000b1a: JUMP 00000b1b: JUMPDEST 00000b1c: POP 00000b1d: POP 00000b1e: POP 00000b1f: JUMP 00000b20: JUMPDEST 00000b21: PUSH1 0x0c 00000b23: SLOAD 00000b24: DUP2 00000b25: JUMP 00000b26: JUMPDEST 00000b27: PUSH1 0x00 00000b29: DUP1 00000b2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b3f: AND 00000b40: DUP3 00000b41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b56: AND 00000b57: EQ 00000b58: ISZERO 00000b59: PUSH2 0x0b97 00000b5c: JUMPI 00000b5d: PUSH1 0x40 00000b5f: MLOAD 00000b60: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b81: DUP2 00000b82: MSTORE 00000b83: PUSH1 0x04 00000b85: ADD 00000b86: PUSH2 0x0b8e 00000b89: SWAP1 00000b8a: PUSH2 0x30c6 00000b8d: JUMP 00000b8e: JUMPDEST 00000b8f: PUSH1 0x40 00000b91: MLOAD 00000b92: DUP1 00000b93: SWAP2 00000b94: SUB 00000b95: SWAP1 00000b96: REVERT 00000b97: JUMPDEST 00000b98: PUSH1 0x03 00000b9a: PUSH1 0x00 00000b9c: DUP4 00000b9d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bb2: AND 00000bb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bc8: AND 00000bc9: DUP2 00000bca: MSTORE 00000bcb: PUSH1 0x20 00000bcd: ADD 00000bce: SWAP1 00000bcf: DUP2 00000bd0: MSTORE 00000bd1: PUSH1 0x20 00000bd3: ADD 00000bd4: PUSH1 0x00 00000bd6: KECCAK256 00000bd7: SLOAD 00000bd8: SWAP1 00000bd9: POP 00000bda: SWAP2 00000bdb: SWAP1 00000bdc: POP 00000bdd: JUMP 00000bde: JUMPDEST 00000bdf: PUSH1 0x60 00000be1: PUSH2 0x0bf1 00000be4: PUSH2 0x0bec 00000be7: TIMESTAMP 00000be8: PUSH2 0x07fd 00000beb: JUMP 00000bec: JUMPDEST 00000bed: PUSH2 0x189f 00000bf0: JUMP 00000bf1: JUMPDEST 00000bf2: SWAP1 00000bf3: POP 00000bf4: SWAP1 00000bf5: JUMP 00000bf6: JUMPDEST 00000bf7: PUSH1 0x0b 00000bf9: PUSH1 0x00 00000bfb: SWAP1 00000bfc: SLOAD 00000bfd: SWAP1 00000bfe: PUSH2 0x0100 00000c01: EXP 00000c02: SWAP1 00000c03: DIV 00000c04: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c19: AND 00000c1a: DUP2 00000c1b: JUMP 00000c1c: JUMPDEST 00000c1d: PUSH1 0x60 00000c1f: PUSH1 0x01 00000c21: DUP1 00000c22: SLOAD 00000c23: PUSH2 0x0c2b 00000c26: SWAP1 00000c27: PUSH2 0x2a1f 00000c2a: JUMP 00000c2b: JUMPDEST 00000c2c: DUP1 00000c2d: PUSH1 0x1f 00000c2f: ADD 00000c30: PUSH1 0x20 00000c32: DUP1 00000c33: SWAP2 00000c34: DIV 00000c35: MUL 00000c36: PUSH1 0x20 00000c38: ADD 00000c39: PUSH1 0x40 00000c3b: MLOAD 00000c3c: SWAP1 00000c3d: DUP2 00000c3e: ADD 00000c3f: PUSH1 0x40 00000c41: MSTORE 00000c42: DUP1 00000c43: SWAP3 00000c44: SWAP2 00000c45: SWAP1 00000c46: DUP2 00000c47: DUP2 00000c48: MSTORE 00000c49: PUSH1 0x20 00000c4b: ADD 00000c4c: DUP3 00000c4d: DUP1 00000c4e: SLOAD 00000c4f: PUSH2 0x0c57 00000c52: SWAP1 00000c53: PUSH2 0x2a1f 00000c56: JUMP 00000c57: JUMPDEST 00000c58: DUP1 00000c59: ISZERO 00000c5a: PUSH2 0x0ca4 00000c5d: JUMPI 00000c5e: DUP1 00000c5f: PUSH1 0x1f 00000c61: LT 00000c62: PUSH2 0x0c79 00000c65: JUMPI 00000c66: PUSH2 0x0100 00000c69: DUP1 00000c6a: DUP4 00000c6b: SLOAD 00000c6c: DIV 00000c6d: MUL 00000c6e: DUP4 00000c6f: MSTORE 00000c70: SWAP2 00000c71: PUSH1 0x20 00000c73: ADD 00000c74: SWAP2 00000c75: PUSH2 0x0ca4 00000c78: JUMP 00000c79: JUMPDEST 00000c7a: DUP3 00000c7b: ADD 00000c7c: SWAP2 00000c7d: SWAP1 00000c7e: PUSH1 0x00 00000c80: MSTORE 00000c81: PUSH1 0x20 00000c83: PUSH1 0x00 00000c85: KECCAK256 00000c86: SWAP1 00000c87: JUMPDEST 00000c88: DUP2 00000c89: SLOAD 00000c8a: DUP2 00000c8b: MSTORE 00000c8c: SWAP1 00000c8d: PUSH1 0x01 00000c8f: ADD 00000c90: SWAP1 00000c91: PUSH1 0x20 00000c93: ADD 00000c94: DUP1 00000c95: DUP4 00000c96: GT 00000c97: PUSH2 0x0c87 00000c9a: JUMPI 00000c9b: DUP3 00000c9c: SWAP1 00000c9d: SUB 00000c9e: PUSH1 0x1f 00000ca0: AND 00000ca1: DUP3 00000ca2: ADD 00000ca3: SWAP2 00000ca4: JUMPDEST 00000ca5: POP 00000ca6: POP 00000ca7: POP 00000ca8: POP 00000ca9: POP 00000caa: SWAP1 00000cab: POP 00000cac: SWAP1 00000cad: JUMP 00000cae: JUMPDEST 00000caf: PUSH2 0x0cb6 00000cb2: PUSH2 0x14a4 00000cb5: JUMP 00000cb6: JUMPDEST 00000cb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ccc: AND 00000ccd: DUP3 00000cce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ce3: AND 00000ce4: EQ 00000ce5: ISZERO 00000ce6: PUSH2 0x0d24 00000ce9: JUMPI 00000cea: PUSH1 0x40 00000cec: MLOAD 00000ced: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000d0e: DUP2 00000d0f: MSTORE 00000d10: PUSH1 0x04 00000d12: ADD 00000d13: PUSH2 0x0d1b 00000d16: SWAP1 00000d17: PUSH2 0x3132 00000d1a: JUMP 00000d1b: JUMPDEST 00000d1c: PUSH1 0x40 00000d1e: MLOAD 00000d1f: DUP1 00000d20: SWAP2 00000d21: SUB 00000d22: SWAP1 00000d23: REVERT 00000d24: JUMPDEST 00000d25: DUP1 00000d26: PUSH1 0x05 00000d28: PUSH1 0x00 00000d2a: PUSH2 0x0d31 00000d2d: PUSH2 0x14a4 00000d30: JUMP 00000d31: JUMPDEST 00000d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d47: AND 00000d48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d5d: AND 00000d5e: DUP2 00000d5f: MSTORE 00000d60: PUSH1 0x20 00000d62: ADD 00000d63: SWAP1 00000d64: DUP2 00000d65: MSTORE 00000d66: PUSH1 0x20 00000d68: ADD 00000d69: PUSH1 0x00 00000d6b: KECCAK256 00000d6c: PUSH1 0x00 00000d6e: DUP5 00000d6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d84: AND 00000d85: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d9a: AND 00000d9b: DUP2 00000d9c: MSTORE 00000d9d: PUSH1 0x20 00000d9f: ADD 00000da0: SWAP1 00000da1: DUP2 00000da2: MSTORE 00000da3: PUSH1 0x20 00000da5: ADD 00000da6: PUSH1 0x00 00000da8: KECCAK256 00000da9: PUSH1 0x00 00000dab: PUSH2 0x0100 00000dae: EXP 00000daf: DUP2 00000db0: SLOAD 00000db1: DUP2 00000db2: PUSH1 0xff 00000db4: MUL 00000db5: NOT 00000db6: AND 00000db7: SWAP1 00000db8: DUP4 00000db9: ISZERO 00000dba: ISZERO 00000dbb: MUL 00000dbc: OR 00000dbd: SWAP1 00000dbe: SSTORE 00000dbf: POP 00000dc0: DUP2 00000dc1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000dd6: AND 00000dd7: PUSH2 0x0dde 00000dda: PUSH2 0x14a4 00000ddd: JUMP 00000dde: JUMPDEST 00000ddf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000df4: AND 00000df5: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 00000e16: DUP4 00000e17: PUSH1 0x40 00000e19: MLOAD 00000e1a: PUSH2 0x0e23 00000e1d: SWAP2 00000e1e: SWAP1 00000e1f: PUSH2 0x23e4 00000e22: JUMP 00000e23: JUMPDEST 00000e24: PUSH1 0x40 00000e26: MLOAD 00000e27: DUP1 00000e28: SWAP2 00000e29: SUB 00000e2a: SWAP1 00000e2b: LOG3 00000e2c: POP 00000e2d: POP 00000e2e: JUMP 00000e2f: JUMPDEST 00000e30: PUSH1 0x0b 00000e32: PUSH1 0x00 00000e34: SWAP1 00000e35: SLOAD 00000e36: SWAP1 00000e37: PUSH2 0x0100 00000e3a: EXP 00000e3b: SWAP1 00000e3c: DIV 00000e3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e52: AND 00000e53: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e68: AND 00000e69: PUSH2 0x0e70 00000e6c: PUSH2 0x14a4 00000e6f: JUMP 00000e70: JUMPDEST 00000e71: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e86: AND 00000e87: EQ 00000e88: PUSH2 0x0e90 00000e8b: JUMPI 00000e8c: PUSH1 0x00 00000e8e: DUP1 00000e8f: REVERT 00000e90: JUMPDEST 00000e91: PUSH1 0x00 00000e93: DUP2 00000e94: PUSH1 0x01 00000e96: PUSH1 0x0c 00000e98: SLOAD 00000e99: PUSH2 0x0ea2 00000e9c: SWAP2 00000e9d: SWAP1 00000e9e: PUSH2 0x3152 00000ea1: JUMP 00000ea2: JUMPDEST 00000ea3: PUSH2 0x0eac 00000ea6: SWAP2 00000ea7: SWAP1 00000ea8: PUSH2 0x2dba 00000eab: JUMP 00000eac: JUMPDEST 00000ead: SWAP1 00000eae: POP 00000eaf: PUSH1 0x00 00000eb1: PUSH1 0x0c 00000eb3: SLOAD 00000eb4: SWAP1 00000eb5: POP 00000eb6: JUMPDEST 00000eb7: DUP2 00000eb8: DUP2 00000eb9: GT 00000eba: PUSH2 0x0f47 00000ebd: JUMPI 00000ebe: PUSH2 0x0eeb 00000ec1: PUSH1 0x0b 00000ec3: PUSH1 0x00 00000ec5: SWAP1 00000ec6: SLOAD 00000ec7: SWAP1 00000ec8: PUSH2 0x0100 00000ecb: EXP 00000ecc: SWAP1 00000ecd: DIV 00000ece: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ee3: AND 00000ee4: PUSH1 0x0c 00000ee6: SLOAD 00000ee7: PUSH2 0x1a00 00000eea: JUMP 00000eeb: JUMPDEST 00000eec: PUSH2 0x0ef3 00000eef: PUSH2 0x0bde 00000ef2: JUMP 00000ef3: JUMPDEST 00000ef4: PUSH1 0x1b 00000ef6: PUSH1 0x00 00000ef8: PUSH1 0x0c 00000efa: SLOAD 00000efb: DUP2 00000efc: MSTORE 00000efd: PUSH1 0x20 00000eff: ADD 00000f00: SWAP1 00000f01: DUP2 00000f02: MSTORE 00000f03: PUSH1 0x20 00000f05: ADD 00000f06: PUSH1 0x00 00000f08: KECCAK256 00000f09: SWAP1 00000f0a: DUP1 00000f0b: MLOAD 00000f0c: SWAP1 00000f0d: PUSH1 0x20 00000f0f: ADD 00000f10: SWAP1 00000f11: PUSH2 0x0f1b 00000f14: SWAP3 00000f15: SWAP2 00000f16: SWAP1 00000f17: PUSH2 0x228d 00000f1a: JUMP 00000f1b: JUMPDEST 00000f1c: POP 00000f1d: PUSH1 0x0c 00000f1f: PUSH1 0x00 00000f21: DUP2 00000f22: SLOAD 00000f23: DUP1 00000f24: SWAP3 00000f25: SWAP2 00000f26: SWAP1 00000f27: PUSH2 0x0f2f 00000f2a: SWAP1 00000f2b: PUSH2 0x3186 00000f2e: JUMP 00000f2f: JUMPDEST 00000f30: SWAP2 00000f31: SWAP1 00000f32: POP 00000f33: SSTORE 00000f34: POP 00000f35: DUP1 00000f36: DUP1 00000f37: PUSH2 0x0f3f 00000f3a: SWAP1 00000f3b: PUSH2 0x3186 00000f3e: JUMP 00000f3f: JUMPDEST 00000f40: SWAP2 00000f41: POP 00000f42: POP 00000f43: PUSH2 0x0eb6 00000f46: JUMP 00000f47: JUMPDEST 00000f48: POP 00000f49: POP 00000f4a: POP 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: PUSH2 0x0f5d 00000f50: PUSH2 0x0f57 00000f53: PUSH2 0x14a4 00000f56: JUMP 00000f57: JUMPDEST 00000f58: DUP4 00000f59: PUSH2 0x1565 00000f5c: JUMP 00000f5d: JUMPDEST 00000f5e: PUSH2 0x0f9c 00000f61: JUMPI 00000f62: PUSH1 0x40 00000f64: MLOAD 00000f65: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f86: DUP2 00000f87: MSTORE 00000f88: PUSH1 0x04 00000f8a: ADD 00000f8b: PUSH2 0x0f93 00000f8e: SWAP1 00000f8f: PUSH2 0x2c79 00000f92: JUMP 00000f93: JUMPDEST 00000f94: PUSH1 0x40 00000f96: MLOAD 00000f97: DUP1 00000f98: SWAP2 00000f99: SUB 00000f9a: SWAP1 00000f9b: REVERT 00000f9c: JUMPDEST 00000f9d: PUSH2 0x0fa8 00000fa0: DUP5 00000fa1: DUP5 00000fa2: DUP5 00000fa3: DUP5 00000fa4: PUSH2 0x1a1e 00000fa7: JUMP 00000fa8: JUMPDEST 00000fa9: POP 00000faa: POP 00000fab: POP 00000fac: POP 00000fad: JUMP 00000fae: JUMPDEST 00000faf: PUSH1 0x60 00000fb1: PUSH1 0x00 00000fb3: DUP3 00000fb4: EQ 00000fb5: ISZERO 00000fb6: PUSH2 0x10db 00000fb9: JUMPI 00000fba: PUSH1 0x00 00000fbc: PUSH1 0x0e 00000fbe: PUSH1 0x00 00000fc0: PUSH1 0x05 00000fc2: DUP2 00000fc3: LT 00000fc4: PUSH2 0x0fd0 00000fc7: JUMPI 00000fc8: PUSH2 0x0fcf 00000fcb: PUSH2 0x2f93 00000fce: JUMP 00000fcf: JUMPDEST 00000fd0: JUMPDEST 00000fd1: ADD 00000fd2: PUSH1 0x13 00000fd4: PUSH1 0x00 00000fd6: PUSH1 0x04 00000fd8: DUP2 00000fd9: LT 00000fda: PUSH2 0x0fe6 00000fdd: JUMPI 00000fde: PUSH2 0x0fe5 00000fe1: PUSH2 0x2f93 00000fe4: JUMP 00000fe5: JUMPDEST 00000fe6: JUMPDEST 00000fe7: ADD 00000fe8: PUSH2 0x0ff0 00000feb: DUP6 00000fec: PUSH2 0x189f 00000fef: JUMP 00000ff0: JUMPDEST 00000ff1: PUSH1 0x13 00000ff3: PUSH1 0x01 00000ff5: PUSH1 0x04 00000ff7: DUP2 00000ff8: LT 00000ff9: PUSH2 0x1005 00000ffc: JUMPI 00000ffd: PUSH2 0x1004 00001000: PUSH2 0x2f93 00001003: JUMP 00001004: JUMPDEST 00001005: JUMPDEST 00001006: ADD 00001007: PUSH1 0x0e 00001009: PUSH1 0x01 0000100b: PUSH1 0x05 0000100d: DUP2 0000100e: LT 0000100f: PUSH2 0x101b 00001012: JUMPI 00001013: PUSH2 0x101a 00001016: PUSH2 0x2f93 00001019: JUMP 0000101a: JUMPDEST 0000101b: JUMPDEST 0000101c: ADD 0000101d: PUSH1 0x13 0000101f: PUSH1 0x02 00001021: PUSH1 0x04 00001023: DUP2 00001024: LT 00001025: PUSH2 0x1031 00001028: JUMPI 00001029: PUSH2 0x1030 0000102c: PUSH2 0x2f93 0000102f: JUMP 00001030: JUMPDEST 00001031: JUMPDEST 00001032: ADD 00001033: PUSH1 0x0e 00001035: PUSH1 0x02 00001037: PUSH1 0x05 00001039: DUP2 0000103a: LT 0000103b: PUSH2 0x1047 0000103e: JUMPI 0000103f: PUSH2 0x1046 00001042: PUSH2 0x2f93 00001045: JUMP 00001046: JUMPDEST 00001047: JUMPDEST 00001048: ADD 00001049: PUSH1 0x13 0000104b: PUSH1 0x03 0000104d: PUSH1 0x04 0000104f: DUP2 00001050: LT 00001051: PUSH2 0x105d 00001054: JUMPI 00001055: PUSH2 0x105c 00001058: PUSH2 0x2f93 0000105b: JUMP 0000105c: JUMPDEST 0000105d: JUMPDEST 0000105e: ADD 0000105f: PUSH1 0x1b 00001061: PUSH1 0x00 00001063: DUP13 00001064: DUP2 00001065: MSTORE 00001066: PUSH1 0x20 00001068: ADD 00001069: SWAP1 0000106a: DUP2 0000106b: MSTORE 0000106c: PUSH1 0x20 0000106e: ADD 0000106f: PUSH1 0x00 00001071: KECCAK256 00001072: PUSH1 0x0e 00001074: PUSH1 0x03 00001076: PUSH1 0x05 00001078: DUP2 00001079: LT 0000107a: PUSH2 0x1086 0000107d: JUMPI 0000107e: PUSH2 0x1085 00001081: PUSH2 0x2f93 00001084: JUMP 00001085: JUMPDEST 00001086: JUMPDEST 00001087: ADD 00001088: PUSH2 0x1090 0000108b: DUP14 0000108c: PUSH2 0x0823 0000108f: JUMP 00001090: JUMPDEST 00001091: PUSH1 0x0e 00001093: PUSH1 0x04 00001095: PUSH1 0x05 00001097: DUP2 00001098: LT 00001099: PUSH2 0x10a5 0000109c: JUMPI 0000109d: PUSH2 0x10a4 000010a0: PUSH2 0x2f93 000010a3: JUMP 000010a4: JUMPDEST 000010a5: JUMPDEST 000010a6: ADD 000010a7: PUSH1 0x40 000010a9: MLOAD 000010aa: PUSH1 0x20 000010ac: ADD 000010ad: PUSH2 0x10c1 000010b0: SWAP13 000010b1: SWAP12 000010b2: SWAP11 000010b3: SWAP10 000010b4: SWAP9 000010b5: SWAP8 000010b6: SWAP7 000010b7: SWAP6 000010b8: SWAP5 000010b9: SWAP4 000010ba: SWAP3 000010bb: SWAP2 000010bc: SWAP1 000010bd: PUSH2 0x3200 000010c0: JUMP 000010c1: JUMPDEST 000010c2: PUSH1 0x40 000010c4: MLOAD 000010c5: PUSH1 0x20 000010c7: DUP2 000010c8: DUP4 000010c9: SUB 000010ca: SUB 000010cb: DUP2 000010cc: MSTORE 000010cd: SWAP1 000010ce: PUSH1 0x40 000010d0: MSTORE 000010d1: SWAP1 000010d2: POP 000010d3: DUP1 000010d4: SWAP2 000010d5: POP 000010d6: POP 000010d7: PUSH2 0x11f9 000010da: JUMP 000010db: JUMPDEST 000010dc: PUSH1 0x00 000010de: PUSH1 0x0e 000010e0: PUSH1 0x00 000010e2: PUSH1 0x05 000010e4: DUP2 000010e5: LT 000010e6: PUSH2 0x10f2 000010e9: JUMPI 000010ea: PUSH2 0x10f1 000010ed: PUSH2 0x2f93 000010f0: JUMP 000010f1: JUMPDEST 000010f2: JUMPDEST 000010f3: ADD 000010f4: PUSH1 0x17 000010f6: PUSH1 0x00 000010f8: PUSH1 0x04 000010fa: DUP2 000010fb: LT 000010fc: PUSH2 0x1108 000010ff: JUMPI 00001100: PUSH2 0x1107 00001103: PUSH2 0x2f93 00001106: JUMP 00001107: JUMPDEST 00001108: JUMPDEST 00001109: ADD 0000110a: PUSH2 0x1112 0000110d: DUP6 0000110e: PUSH2 0x189f 00001111: JUMP 00001112: JUMPDEST 00001113: PUSH1 0x17 00001115: PUSH1 0x01 00001117: PUSH1 0x04 00001119: DUP2 0000111a: LT 0000111b: PUSH2 0x1127 0000111e: JUMPI 0000111f: PUSH2 0x1126 00001122: PUSH2 0x2f93 00001125: JUMP 00001126: JUMPDEST 00001127: JUMPDEST 00001128: ADD 00001129: PUSH1 0x0e 0000112b: PUSH1 0x01 0000112d: PUSH1 0x05 0000112f: DUP2 00001130: LT 00001131: PUSH2 0x113d 00001134: JUMPI 00001135: PUSH2 0x113c 00001138: PUSH2 0x2f93 0000113b: JUMP 0000113c: JUMPDEST 0000113d: JUMPDEST 0000113e: ADD 0000113f: PUSH1 0x17 00001141: PUSH1 0x02 00001143: PUSH1 0x04 00001145: DUP2 00001146: LT 00001147: PUSH2 0x1153 0000114a: JUMPI 0000114b: PUSH2 0x1152 0000114e: PUSH2 0x2f93 00001151: JUMP 00001152: JUMPDEST 00001153: JUMPDEST 00001154: ADD 00001155: PUSH1 0x0e 00001157: PUSH1 0x02 00001159: PUSH1 0x05 0000115b: DUP2 0000115c: LT 0000115d: PUSH2 0x1169 00001160: JUMPI 00001161: PUSH2 0x1168 00001164: PUSH2 0x2f93 00001167: JUMP 00001168: JUMPDEST 00001169: JUMPDEST 0000116a: ADD 0000116b: PUSH1 0x17 0000116d: PUSH1 0x03 0000116f: PUSH1 0x04 00001171: DUP2 00001172: LT 00001173: PUSH2 0x117f 00001176: JUMPI 00001177: PUSH2 0x117e 0000117a: PUSH2 0x2f93 0000117d: JUMP 0000117e: JUMPDEST 0000117f: JUMPDEST 00001180: ADD 00001181: PUSH1 0x1b 00001183: PUSH1 0x00 00001185: DUP13 00001186: DUP2 00001187: MSTORE 00001188: PUSH1 0x20 0000118a: ADD 0000118b: SWAP1 0000118c: DUP2 0000118d: MSTORE 0000118e: PUSH1 0x20 00001190: ADD 00001191: PUSH1 0x00 00001193: KECCAK256 00001194: PUSH1 0x0e 00001196: PUSH1 0x03 00001198: PUSH1 0x05 0000119a: DUP2 0000119b: LT 0000119c: PUSH2 0x11a8 0000119f: JUMPI 000011a0: PUSH2 0x11a7 000011a3: PUSH2 0x2f93 000011a6: JUMP 000011a7: JUMPDEST 000011a8: JUMPDEST 000011a9: ADD 000011aa: PUSH2 0x11b2 000011ad: DUP14 000011ae: PUSH2 0x0823 000011b1: JUMP 000011b2: JUMPDEST 000011b3: PUSH1 0x0e 000011b5: PUSH1 0x04 000011b7: PUSH1 0x05 000011b9: DUP2 000011ba: LT 000011bb: PUSH2 0x11c7 000011be: JUMPI 000011bf: PUSH2 0x11c6 000011c2: PUSH2 0x2f93 000011c5: JUMP 000011c6: JUMPDEST 000011c7: JUMPDEST 000011c8: ADD 000011c9: PUSH1 0x40 000011cb: MLOAD 000011cc: PUSH1 0x20 000011ce: ADD 000011cf: PUSH2 0x11e3 000011d2: SWAP13 000011d3: SWAP12 000011d4: SWAP11 000011d5: SWAP10 000011d6: SWAP9 000011d7: SWAP8 000011d8: SWAP7 000011d9: SWAP6 000011da: SWAP5 000011db: SWAP4 000011dc: SWAP3 000011dd: SWAP2 000011de: SWAP1 000011df: PUSH2 0x3200 000011e2: JUMP 000011e3: JUMPDEST 000011e4: PUSH1 0x40 000011e6: MLOAD 000011e7: PUSH1 0x20 000011e9: DUP2 000011ea: DUP4 000011eb: SUB 000011ec: SUB 000011ed: DUP2 000011ee: MSTORE 000011ef: SWAP1 000011f0: PUSH1 0x40 000011f2: MSTORE 000011f3: SWAP1 000011f4: POP 000011f5: DUP1 000011f6: SWAP2 000011f7: POP 000011f8: POP 000011f9: JUMPDEST 000011fa: SWAP2 000011fb: SWAP1 000011fc: POP 000011fd: JUMP 000011fe: JUMPDEST 000011ff: PUSH1 0x00 00001201: PUSH1 0x05 00001203: PUSH1 0x00 00001205: DUP5 00001206: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000121b: AND 0000121c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001231: AND 00001232: DUP2 00001233: MSTORE 00001234: PUSH1 0x20 00001236: ADD 00001237: SWAP1 00001238: DUP2 00001239: MSTORE 0000123a: PUSH1 0x20 0000123c: ADD 0000123d: PUSH1 0x00 0000123f: KECCAK256 00001240: PUSH1 0x00 00001242: DUP4 00001243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001258: AND 00001259: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000126e: AND 0000126f: DUP2 00001270: MSTORE 00001271: PUSH1 0x20 00001273: ADD 00001274: SWAP1 00001275: DUP2 00001276: MSTORE 00001277: PUSH1 0x20 00001279: ADD 0000127a: PUSH1 0x00 0000127c: KECCAK256 0000127d: PUSH1 0x00 0000127f: SWAP1 00001280: SLOAD 00001281: SWAP1 00001282: PUSH2 0x0100 00001285: EXP 00001286: SWAP1 00001287: DIV 00001288: PUSH1 0xff 0000128a: AND 0000128b: SWAP1 0000128c: POP 0000128d: SWAP3 0000128e: SWAP2 0000128f: POP 00001290: POP 00001291: JUMP 00001292: JUMPDEST 00001293: PUSH1 0x00 00001295: DUP1 00001296: DUP3 00001297: EXTCODESIZE 00001298: SWAP1 00001299: POP 0000129a: PUSH1 0x00 0000129c: DUP2 0000129d: GT 0000129e: SWAP2 0000129f: POP 000012a0: POP 000012a1: SWAP2 000012a2: SWAP1 000012a3: POP 000012a4: JUMP 000012a5: JUMPDEST 000012a6: PUSH2 0x12b0 000012a9: DUP4 000012aa: DUP4 000012ab: DUP4 000012ac: PUSH2 0x13b9 000012af: JUMP 000012b0: JUMPDEST 000012b1: PUSH1 0x00 000012b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012c8: AND 000012c9: DUP4 000012ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012df: AND 000012e0: EQ 000012e1: ISZERO 000012e2: PUSH2 0x12f3 000012e5: JUMPI 000012e6: PUSH2 0x12ee 000012e9: DUP2 000012ea: PUSH2 0x1a7a 000012ed: JUMP 000012ee: JUMPDEST 000012ef: PUSH2 0x1332 000012f2: JUMP 000012f3: JUMPDEST 000012f4: DUP2 000012f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000130a: AND 0000130b: DUP4 0000130c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001321: AND 00001322: EQ 00001323: PUSH2 0x1331 00001326: JUMPI 00001327: PUSH2 0x1330 0000132a: DUP4 0000132b: DUP3 0000132c: PUSH2 0x1ac3 0000132f: JUMP 00001330: JUMPDEST 00001331: JUMPDEST 00001332: JUMPDEST 00001333: PUSH1 0x00 00001335: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000134a: AND 0000134b: DUP3 0000134c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001361: AND 00001362: EQ 00001363: ISZERO 00001364: PUSH2 0x1375 00001367: JUMPI 00001368: PUSH2 0x1370 0000136b: DUP2 0000136c: PUSH2 0x1c30 0000136f: JUMP 00001370: JUMPDEST 00001371: PUSH2 0x13b4 00001374: JUMP 00001375: JUMPDEST 00001376: DUP3 00001377: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000138c: AND 0000138d: DUP3 0000138e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013a3: AND 000013a4: EQ 000013a5: PUSH2 0x13b3 000013a8: JUMPI 000013a9: PUSH2 0x13b2 000013ac: DUP3 000013ad: DUP3 000013ae: PUSH2 0x1d01 000013b1: JUMP 000013b2: JUMPDEST 000013b3: JUMPDEST 000013b4: JUMPDEST 000013b5: POP 000013b6: POP 000013b7: POP 000013b8: JUMP 000013b9: JUMPDEST 000013ba: POP 000013bb: POP 000013bc: POP 000013bd: JUMP 000013be: JUMPDEST 000013bf: PUSH1 0x00 000013c1: PUSH32 0x780e9d6300000000000000000000000000000000000000000000000000000000 000013e2: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000013ff: NOT 00001400: AND 00001401: DUP3 00001402: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000141f: NOT 00001420: AND 00001421: EQ 00001422: DUP1 00001423: PUSH2 0x1431 00001426: JUMPI 00001427: POP 00001428: PUSH2 0x1430 0000142b: DUP3 0000142c: PUSH2 0x1d80 0000142f: JUMP 00001430: JUMPDEST 00001431: JUMPDEST 00001432: SWAP1 00001433: POP 00001434: SWAP2 00001435: SWAP1 00001436: POP 00001437: JUMP 00001438: JUMPDEST 00001439: PUSH1 0x00 0000143b: DUP1 0000143c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001451: AND 00001452: PUSH1 0x02 00001454: PUSH1 0x00 00001456: DUP5 00001457: DUP2 00001458: MSTORE 00001459: PUSH1 0x20 0000145b: ADD 0000145c: SWAP1 0000145d: DUP2 0000145e: MSTORE 0000145f: PUSH1 0x20 00001461: ADD 00001462: PUSH1 0x00 00001464: KECCAK256 00001465: PUSH1 0x00 00001467: SWAP1 00001468: SLOAD 00001469: SWAP1 0000146a: PUSH2 0x0100 0000146d: EXP 0000146e: SWAP1 0000146f: DIV 00001470: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001485: AND 00001486: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000149b: AND 0000149c: EQ 0000149d: ISZERO 0000149e: SWAP1 0000149f: POP 000014a0: SWAP2 000014a1: SWAP1 000014a2: POP 000014a3: JUMP 000014a4: JUMPDEST 000014a5: PUSH1 0x00 000014a7: CALLER 000014a8: SWAP1 000014a9: POP 000014aa: SWAP1 000014ab: JUMP 000014ac: JUMPDEST 000014ad: DUP2 000014ae: PUSH1 0x04 000014b0: PUSH1 0x00 000014b2: DUP4 000014b3: DUP2 000014b4: MSTORE 000014b5: PUSH1 0x20 000014b7: ADD 000014b8: SWAP1 000014b9: DUP2 000014ba: MSTORE 000014bb: PUSH1 0x20 000014bd: ADD 000014be: PUSH1 0x00 000014c0: KECCAK256 000014c1: PUSH1 0x00 000014c3: PUSH2 0x0100 000014c6: EXP 000014c7: DUP2 000014c8: SLOAD 000014c9: DUP2 000014ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014df: MUL 000014e0: NOT 000014e1: AND 000014e2: SWAP1 000014e3: DUP4 000014e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014f9: AND 000014fa: MUL 000014fb: OR 000014fc: SWAP1 000014fd: SSTORE 000014fe: POP 000014ff: DUP1 00001500: DUP3 00001501: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001516: AND 00001517: PUSH2 0x151f 0000151a: DUP4 0000151b: PUSH2 0x09fb 0000151e: JUMP 0000151f: JUMPDEST 00001520: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001535: AND 00001536: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001557: PUSH1 0x40 00001559: MLOAD 0000155a: PUSH1 0x40 0000155c: MLOAD 0000155d: DUP1 0000155e: SWAP2 0000155f: SUB 00001560: SWAP1 00001561: LOG4 00001562: POP 00001563: POP 00001564: JUMP 00001565: JUMPDEST 00001566: PUSH1 0x00 00001568: PUSH2 0x1570 0000156b: DUP3 0000156c: PUSH2 0x1438 0000156f: JUMP 00001570: JUMPDEST 00001571: PUSH2 0x15af 00001574: JUMPI 00001575: PUSH1 0x40 00001577: MLOAD 00001578: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001599: DUP2 0000159a: MSTORE 0000159b: PUSH1 0x04 0000159d: ADD 0000159e: PUSH2 0x15a6 000015a1: SWAP1 000015a2: PUSH2 0x3318 000015a5: JUMP 000015a6: JUMPDEST 000015a7: PUSH1 0x40 000015a9: MLOAD 000015aa: DUP1 000015ab: SWAP2 000015ac: SUB 000015ad: SWAP1 000015ae: REVERT 000015af: JUMPDEST 000015b0: PUSH1 0x00 000015b2: PUSH2 0x15ba 000015b5: DUP4 000015b6: PUSH2 0x09fb 000015b9: JUMP 000015ba: JUMPDEST 000015bb: SWAP1 000015bc: POP 000015bd: DUP1 000015be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015d3: AND 000015d4: DUP5 000015d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015ea: AND 000015eb: EQ 000015ec: DUP1 000015ed: PUSH2 0x1629 000015f0: JUMPI 000015f1: POP 000015f2: DUP4 000015f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001608: AND 00001609: PUSH2 0x1611 0000160c: DUP5 0000160d: PUSH2 0x054e 00001610: JUMP 00001611: JUMPDEST 00001612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001627: AND 00001628: EQ 00001629: JUMPDEST 0000162a: DUP1 0000162b: PUSH2 0x163a 0000162e: JUMPI 0000162f: POP 00001630: PUSH2 0x1639 00001633: DUP2 00001634: DUP6 00001635: PUSH2 0x11fe 00001638: JUMP 00001639: JUMPDEST 0000163a: JUMPDEST 0000163b: SWAP2 0000163c: POP 0000163d: POP 0000163e: SWAP3 0000163f: SWAP2 00001640: POP 00001641: POP 00001642: JUMP 00001643: JUMPDEST 00001644: DUP3 00001645: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000165a: AND 0000165b: PUSH2 0x1663 0000165e: DUP3 0000165f: PUSH2 0x09fb 00001662: JUMP 00001663: JUMPDEST 00001664: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001679: AND 0000167a: EQ 0000167b: PUSH2 0x16b9 0000167e: JUMPI 0000167f: PUSH1 0x40 00001681: MLOAD 00001682: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000016a3: DUP2 000016a4: MSTORE 000016a5: PUSH1 0x04 000016a7: ADD 000016a8: PUSH2 0x16b0 000016ab: SWAP1 000016ac: PUSH2 0x33aa 000016af: JUMP 000016b0: JUMPDEST 000016b1: PUSH1 0x40 000016b3: MLOAD 000016b4: DUP1 000016b5: SWAP2 000016b6: SUB 000016b7: SWAP1 000016b8: REVERT 000016b9: JUMPDEST 000016ba: PUSH1 0x00 000016bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016d1: AND 000016d2: DUP3 000016d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016e8: AND 000016e9: EQ 000016ea: ISZERO 000016eb: PUSH2 0x1729 000016ee: JUMPI 000016ef: PUSH1 0x40 000016f1: MLOAD 000016f2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001713: DUP2 00001714: MSTORE 00001715: PUSH1 0x04 00001717: ADD 00001718: PUSH2 0x1720 0000171b: SWAP1 0000171c: PUSH2 0x343c 0000171f: JUMP 00001720: JUMPDEST 00001721: PUSH1 0x40 00001723: MLOAD 00001724: DUP1 00001725: SWAP2 00001726: SUB 00001727: SWAP1 00001728: REVERT 00001729: JUMPDEST 0000172a: PUSH2 0x1734 0000172d: DUP4 0000172e: DUP4 0000172f: DUP4 00001730: PUSH2 0x1e62 00001733: JUMP 00001734: JUMPDEST 00001735: PUSH2 0x173f 00001738: PUSH1 0x00 0000173a: DUP3 0000173b: PUSH2 0x14ac 0000173e: JUMP 0000173f: JUMPDEST 00001740: PUSH1 0x01 00001742: PUSH1 0x03 00001744: PUSH1 0x00 00001746: DUP6 00001747: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000175c: AND 0000175d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001772: AND 00001773: DUP2 00001774: MSTORE 00001775: PUSH1 0x20 00001777: ADD 00001778: SWAP1 00001779: DUP2 0000177a: MSTORE 0000177b: PUSH1 0x20 0000177d: ADD 0000177e: PUSH1 0x00 00001780: KECCAK256 00001781: PUSH1 0x00 00001783: DUP3 00001784: DUP3 00001785: SLOAD 00001786: PUSH2 0x178f 00001789: SWAP2 0000178a: SWAP1 0000178b: PUSH2 0x3152 0000178e: JUMP 0000178f: JUMPDEST 00001790: SWAP3 00001791: POP 00001792: POP 00001793: DUP2 00001794: SWAP1 00001795: SSTORE 00001796: POP 00001797: PUSH1 0x01 00001799: PUSH1 0x03 0000179b: PUSH1 0x00 0000179d: DUP5 0000179e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017b3: AND 000017b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017c9: AND 000017ca: DUP2 000017cb: MSTORE 000017cc: PUSH1 0x20 000017ce: ADD 000017cf: SWAP1 000017d0: DUP2 000017d1: MSTORE 000017d2: PUSH1 0x20 000017d4: ADD 000017d5: PUSH1 0x00 000017d7: KECCAK256 000017d8: PUSH1 0x00 000017da: DUP3 000017db: DUP3 000017dc: SLOAD 000017dd: PUSH2 0x17e6 000017e0: SWAP2 000017e1: SWAP1 000017e2: PUSH2 0x2dba 000017e5: JUMP 000017e6: JUMPDEST 000017e7: SWAP3 000017e8: POP 000017e9: POP 000017ea: DUP2 000017eb: SWAP1 000017ec: SSTORE 000017ed: POP 000017ee: DUP2 000017ef: PUSH1 0x02 000017f1: PUSH1 0x00 000017f3: DUP4 000017f4: DUP2 000017f5: MSTORE 000017f6: PUSH1 0x20 000017f8: ADD 000017f9: SWAP1 000017fa: DUP2 000017fb: MSTORE 000017fc: PUSH1 0x20 000017fe: ADD 000017ff: PUSH1 0x00 00001801: KECCAK256 00001802: PUSH1 0x00 00001804: PUSH2 0x0100 00001807: EXP 00001808: DUP2 00001809: SLOAD 0000180a: DUP2 0000180b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001820: MUL 00001821: NOT 00001822: AND 00001823: SWAP1 00001824: DUP4 00001825: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000183a: AND 0000183b: MUL 0000183c: OR 0000183d: SWAP1 0000183e: SSTORE 0000183f: POP 00001840: DUP1 00001841: DUP3 00001842: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001857: AND 00001858: DUP5 00001859: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000186e: AND 0000186f: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001890: PUSH1 0x40 00001892: MLOAD 00001893: PUSH1 0x40 00001895: MLOAD 00001896: DUP1 00001897: SWAP2 00001898: SUB 00001899: SWAP1 0000189a: LOG4 0000189b: POP 0000189c: POP 0000189d: POP 0000189e: JUMP 0000189f: JUMPDEST 000018a0: PUSH1 0x60 000018a2: PUSH1 0x00 000018a4: DUP3 000018a5: EQ 000018a6: ISZERO 000018a7: PUSH2 0x18e7 000018aa: JUMPI 000018ab: PUSH1 0x40 000018ad: MLOAD 000018ae: DUP1 000018af: PUSH1 0x40 000018b1: ADD 000018b2: PUSH1 0x40 000018b4: MSTORE 000018b5: DUP1 000018b6: PUSH1 0x01 000018b8: DUP2 000018b9: MSTORE 000018ba: PUSH1 0x20 000018bc: ADD 000018bd: PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 000018de: DUP2 000018df: MSTORE 000018e0: POP 000018e1: SWAP1 000018e2: POP 000018e3: PUSH2 0x19fb 000018e6: JUMP 000018e7: JUMPDEST 000018e8: PUSH1 0x00 000018ea: DUP3 000018eb: SWAP1 000018ec: POP 000018ed: PUSH1 0x00 000018ef: JUMPDEST 000018f0: PUSH1 0x00 000018f2: DUP3 000018f3: EQ 000018f4: PUSH2 0x1919 000018f7: JUMPI 000018f8: DUP1 000018f9: DUP1 000018fa: PUSH2 0x1902 000018fd: SWAP1 000018fe: PUSH2 0x3186 00001901: JUMP 00001902: JUMPDEST 00001903: SWAP2 00001904: POP 00001905: POP 00001906: PUSH1 0x0a 00001908: DUP3 00001909: PUSH2 0x1912 0000190c: SWAP2 0000190d: SWAP1 0000190e: PUSH2 0x2d89 00001911: JUMP 00001912: JUMPDEST 00001913: SWAP2 00001914: POP 00001915: PUSH2 0x18ef 00001918: JUMP 00001919: JUMPDEST 0000191a: PUSH1 0x00 0000191c: DUP2 0000191d: PUSH8 0xffffffffffffffff 00001926: DUP2 00001927: GT 00001928: ISZERO 00001929: PUSH2 0x1935 0000192c: JUMPI 0000192d: PUSH2 0x1934 00001930: PUSH2 0x266c 00001933: JUMP 00001934: JUMPDEST 00001935: JUMPDEST 00001936: PUSH1 0x40 00001938: MLOAD 00001939: SWAP1 0000193a: DUP1 0000193b: DUP3 0000193c: MSTORE 0000193d: DUP1 0000193e: PUSH1 0x1f 00001940: ADD 00001941: PUSH1 0x1f 00001943: NOT 00001944: AND 00001945: PUSH1 0x20 00001947: ADD 00001948: DUP3 00001949: ADD 0000194a: PUSH1 0x40 0000194c: MSTORE 0000194d: DUP1 0000194e: ISZERO 0000194f: PUSH2 0x1967 00001952: JUMPI 00001953: DUP2 00001954: PUSH1 0x20 00001956: ADD 00001957: PUSH1 0x01 00001959: DUP3 0000195a: MUL 0000195b: DUP1 0000195c: CALLDATASIZE 0000195d: DUP4 0000195e: CALLDATACOPY 0000195f: DUP1 00001960: DUP3 00001961: ADD 00001962: SWAP2 00001963: POP 00001964: POP 00001965: SWAP1 00001966: POP 00001967: JUMPDEST 00001968: POP 00001969: SWAP1 0000196a: POP 0000196b: JUMPDEST 0000196c: PUSH1 0x00 0000196e: DUP6 0000196f: EQ 00001970: PUSH2 0x19f4 00001973: JUMPI 00001974: PUSH1 0x01 00001976: DUP3 00001977: PUSH2 0x1980 0000197a: SWAP2 0000197b: SWAP1 0000197c: PUSH2 0x3152 0000197f: JUMP 00001980: JUMPDEST 00001981: SWAP2 00001982: POP 00001983: PUSH1 0x0a 00001985: DUP6 00001986: PUSH2 0x198f 00001989: SWAP2 0000198a: SWAP1 0000198b: PUSH2 0x345c 0000198e: JUMP 0000198f: JUMPDEST 00001990: PUSH1 0x30 00001992: PUSH2 0x199b 00001995: SWAP2 00001996: SWAP1 00001997: PUSH2 0x2dba 0000199a: JUMP 0000199b: JUMPDEST 0000199c: PUSH1 0xf8 0000199e: SHL 0000199f: DUP2 000019a0: DUP4 000019a1: DUP2 000019a2: MLOAD 000019a3: DUP2 000019a4: LT 000019a5: PUSH2 0x19b1 000019a8: JUMPI 000019a9: PUSH2 0x19b0 000019ac: PUSH2 0x2f93 000019af: JUMP 000019b0: JUMPDEST 000019b1: JUMPDEST 000019b2: PUSH1 0x20 000019b4: ADD 000019b5: ADD 000019b6: SWAP1 000019b7: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000019d7: NOT 000019d8: AND 000019d9: SWAP1 000019da: DUP2 000019db: PUSH1 0x00 000019dd: BYTE 000019de: SWAP1 000019df: MSTORE8 000019e0: POP 000019e1: PUSH1 0x0a 000019e3: DUP6 000019e4: PUSH2 0x19ed 000019e7: SWAP2 000019e8: SWAP1 000019e9: PUSH2 0x2d89 000019ec: JUMP 000019ed: JUMPDEST 000019ee: SWAP5 000019ef: POP 000019f0: PUSH2 0x196b 000019f3: JUMP 000019f4: JUMPDEST 000019f5: DUP1 000019f6: SWAP4 000019f7: POP 000019f8: POP 000019f9: POP 000019fa: POP 000019fb: JUMPDEST 000019fc: SWAP2 000019fd: SWAP1 000019fe: POP 000019ff: JUMP 00001a00: JUMPDEST 00001a01: PUSH2 0x1a1a 00001a04: DUP3 00001a05: DUP3 00001a06: PUSH1 0x40 00001a08: MLOAD 00001a09: DUP1 00001a0a: PUSH1 0x20 00001a0c: ADD 00001a0d: PUSH1 0x40 00001a0f: MSTORE 00001a10: DUP1 00001a11: PUSH1 0x00 00001a13: DUP2 00001a14: MSTORE 00001a15: POP 00001a16: PUSH2 0x1e72 00001a19: JUMP 00001a1a: JUMPDEST 00001a1b: POP 00001a1c: POP 00001a1d: JUMP 00001a1e: JUMPDEST 00001a1f: PUSH2 0x1a29 00001a22: DUP5 00001a23: DUP5 00001a24: DUP5 00001a25: PUSH2 0x1643 00001a28: JUMP 00001a29: JUMPDEST 00001a2a: PUSH2 0x1a35 00001a2d: DUP5 00001a2e: DUP5 00001a2f: DUP5 00001a30: DUP5 00001a31: PUSH2 0x1ecd 00001a34: JUMP 00001a35: JUMPDEST 00001a36: PUSH2 0x1a74 00001a39: JUMPI 00001a3a: PUSH1 0x40 00001a3c: MLOAD 00001a3d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001a5e: DUP2 00001a5f: MSTORE 00001a60: PUSH1 0x04 00001a62: ADD 00001a63: PUSH2 0x1a6b 00001a66: SWAP1 00001a67: PUSH2 0x34ff 00001a6a: JUMP 00001a6b: JUMPDEST 00001a6c: PUSH1 0x40 00001a6e: MLOAD 00001a6f: DUP1 00001a70: SWAP2 00001a71: SUB 00001a72: SWAP1 00001a73: REVERT 00001a74: JUMPDEST 00001a75: POP 00001a76: POP 00001a77: POP 00001a78: POP 00001a79: JUMP 00001a7a: JUMPDEST 00001a7b: PUSH1 0x09 00001a7d: DUP1 00001a7e: SLOAD 00001a7f: SWAP1 00001a80: POP 00001a81: PUSH1 0x0a 00001a83: PUSH1 0x00 00001a85: DUP4 00001a86: DUP2 00001a87: MSTORE 00001a88: PUSH1 0x20 00001a8a: ADD 00001a8b: SWAP1 00001a8c: DUP2 00001a8d: MSTORE 00001a8e: PUSH1 0x20 00001a90: ADD 00001a91: PUSH1 0x00 00001a93: KECCAK256 00001a94: DUP2 00001a95: SWAP1 00001a96: SSTORE 00001a97: POP 00001a98: PUSH1 0x09 00001a9a: DUP2 00001a9b: SWAP1 00001a9c: DUP1 00001a9d: PUSH1 0x01 00001a9f: DUP2 00001aa0: SLOAD 00001aa1: ADD 00001aa2: DUP1 00001aa3: DUP3 00001aa4: SSTORE 00001aa5: DUP1 00001aa6: SWAP2 00001aa7: POP 00001aa8: POP 00001aa9: PUSH1 0x01 00001aab: SWAP1 00001aac: SUB 00001aad: SWAP1 00001aae: PUSH1 0x00 00001ab0: MSTORE 00001ab1: PUSH1 0x20 00001ab3: PUSH1 0x00 00001ab5: KECCAK256 00001ab6: ADD 00001ab7: PUSH1 0x00 00001ab9: SWAP1 00001aba: SWAP2 00001abb: SWAP1 00001abc: SWAP2 00001abd: SWAP1 00001abe: SWAP2 00001abf: POP 00001ac0: SSTORE 00001ac1: POP 00001ac2: JUMP 00001ac3: JUMPDEST 00001ac4: PUSH1 0x00 00001ac6: PUSH1 0x01 00001ac8: PUSH2 0x1ad0 00001acb: DUP5 00001acc: PUSH2 0x0b26 00001acf: JUMP 00001ad0: JUMPDEST 00001ad1: PUSH2 0x1ada 00001ad4: SWAP2 00001ad5: SWAP1 00001ad6: PUSH2 0x3152 00001ad9: JUMP 00001ada: JUMPDEST 00001adb: SWAP1 00001adc: POP 00001add: PUSH1 0x00 00001adf: PUSH1 0x08 00001ae1: PUSH1 0x00 00001ae3: DUP5 00001ae4: DUP2 00001ae5: MSTORE 00001ae6: PUSH1 0x20 00001ae8: ADD 00001ae9: SWAP1 00001aea: DUP2 00001aeb: MSTORE 00001aec: PUSH1 0x20 00001aee: ADD 00001aef: PUSH1 0x00 00001af1: KECCAK256 00001af2: SLOAD 00001af3: SWAP1 00001af4: POP 00001af5: DUP2 00001af6: DUP2 00001af7: EQ 00001af8: PUSH2 0x1bbf 00001afb: JUMPI 00001afc: PUSH1 0x00 00001afe: PUSH1 0x07 00001b00: PUSH1 0x00 00001b02: DUP7 00001b03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b18: AND 00001b19: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b2e: AND 00001b2f: DUP2 00001b30: MSTORE 00001b31: PUSH1 0x20 00001b33: ADD 00001b34: SWAP1 00001b35: DUP2 00001b36: MSTORE 00001b37: PUSH1 0x20 00001b39: ADD 00001b3a: PUSH1 0x00 00001b3c: KECCAK256 00001b3d: PUSH1 0x00 00001b3f: DUP5 00001b40: DUP2 00001b41: MSTORE 00001b42: PUSH1 0x20 00001b44: ADD 00001b45: SWAP1 00001b46: DUP2 00001b47: MSTORE 00001b48: PUSH1 0x20 00001b4a: ADD 00001b4b: PUSH1 0x00 00001b4d: KECCAK256 00001b4e: SLOAD 00001b4f: SWAP1 00001b50: POP 00001b51: DUP1 00001b52: PUSH1 0x07 00001b54: PUSH1 0x00 00001b56: DUP8 00001b57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b6c: AND 00001b6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b82: AND 00001b83: DUP2 00001b84: MSTORE 00001b85: PUSH1 0x20 00001b87: ADD 00001b88: SWAP1 00001b89: DUP2 00001b8a: MSTORE 00001b8b: PUSH1 0x20 00001b8d: ADD 00001b8e: PUSH1 0x00 00001b90: KECCAK256 00001b91: PUSH1 0x00 00001b93: DUP5 00001b94: DUP2 00001b95: MSTORE 00001b96: PUSH1 0x20 00001b98: ADD 00001b99: SWAP1 00001b9a: DUP2 00001b9b: MSTORE 00001b9c: PUSH1 0x20 00001b9e: ADD 00001b9f: PUSH1 0x00 00001ba1: KECCAK256 00001ba2: DUP2 00001ba3: SWAP1 00001ba4: SSTORE 00001ba5: POP 00001ba6: DUP2 00001ba7: PUSH1 0x08 00001ba9: PUSH1 0x00 00001bab: DUP4 00001bac: DUP2 00001bad: MSTORE 00001bae: PUSH1 0x20 00001bb0: ADD 00001bb1: SWAP1 00001bb2: DUP2 00001bb3: MSTORE 00001bb4: PUSH1 0x20 00001bb6: ADD 00001bb7: PUSH1 0x00 00001bb9: KECCAK256 00001bba: DUP2 00001bbb: SWAP1 00001bbc: SSTORE 00001bbd: POP 00001bbe: POP 00001bbf: JUMPDEST 00001bc0: PUSH1 0x08 00001bc2: PUSH1 0x00 00001bc4: DUP5 00001bc5: DUP2 00001bc6: MSTORE 00001bc7: PUSH1 0x20 00001bc9: ADD 00001bca: SWAP1 00001bcb: DUP2 00001bcc: MSTORE 00001bcd: PUSH1 0x20 00001bcf: ADD 00001bd0: PUSH1 0x00 00001bd2: KECCAK256 00001bd3: PUSH1 0x00 00001bd5: SWAP1 00001bd6: SSTORE 00001bd7: PUSH1 0x07 00001bd9: PUSH1 0x00 00001bdb: DUP6 00001bdc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bf1: AND 00001bf2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c07: AND 00001c08: DUP2 00001c09: MSTORE 00001c0a: PUSH1 0x20 00001c0c: ADD 00001c0d: SWAP1 00001c0e: DUP2 00001c0f: MSTORE 00001c10: PUSH1 0x20 00001c12: ADD 00001c13: PUSH1 0x00 00001c15: KECCAK256 00001c16: PUSH1 0x00 00001c18: DUP4 00001c19: DUP2 00001c1a: MSTORE 00001c1b: PUSH1 0x20 00001c1d: ADD 00001c1e: SWAP1 00001c1f: DUP2 00001c20: MSTORE 00001c21: PUSH1 0x20 00001c23: ADD 00001c24: PUSH1 0x00 00001c26: KECCAK256 00001c27: PUSH1 0x00 00001c29: SWAP1 00001c2a: SSTORE 00001c2b: POP 00001c2c: POP 00001c2d: POP 00001c2e: POP 00001c2f: JUMP 00001c30: JUMPDEST 00001c31: PUSH1 0x00 00001c33: PUSH1 0x01 00001c35: PUSH1 0x09 00001c37: DUP1 00001c38: SLOAD 00001c39: SWAP1 00001c3a: POP 00001c3b: PUSH2 0x1c44 00001c3e: SWAP2 00001c3f: SWAP1 00001c40: PUSH2 0x3152 00001c43: JUMP 00001c44: JUMPDEST 00001c45: SWAP1 00001c46: POP 00001c47: PUSH1 0x00 00001c49: PUSH1 0x0a 00001c4b: PUSH1 0x00 00001c4d: DUP5 00001c4e: DUP2 00001c4f: MSTORE 00001c50: PUSH1 0x20 00001c52: ADD 00001c53: SWAP1 00001c54: DUP2 00001c55: MSTORE 00001c56: PUSH1 0x20 00001c58: ADD 00001c59: PUSH1 0x00 00001c5b: KECCAK256 00001c5c: SLOAD 00001c5d: SWAP1 00001c5e: POP 00001c5f: PUSH1 0x00 00001c61: PUSH1 0x09 00001c63: DUP4 00001c64: DUP2 00001c65: SLOAD 00001c66: DUP2 00001c67: LT 00001c68: PUSH2 0x1c74 00001c6b: JUMPI 00001c6c: PUSH2 0x1c73 00001c6f: PUSH2 0x2f93 00001c72: JUMP 00001c73: JUMPDEST 00001c74: JUMPDEST 00001c75: SWAP1 00001c76: PUSH1 0x00 00001c78: MSTORE 00001c79: PUSH1 0x20 00001c7b: PUSH1 0x00 00001c7d: KECCAK256 00001c7e: ADD 00001c7f: SLOAD 00001c80: SWAP1 00001c81: POP 00001c82: DUP1 00001c83: PUSH1 0x09 00001c85: DUP4 00001c86: DUP2 00001c87: SLOAD 00001c88: DUP2 00001c89: LT 00001c8a: PUSH2 0x1c96 00001c8d: JUMPI 00001c8e: PUSH2 0x1c95 00001c91: PUSH2 0x2f93 00001c94: JUMP 00001c95: JUMPDEST 00001c96: JUMPDEST 00001c97: SWAP1 00001c98: PUSH1 0x00 00001c9a: MSTORE 00001c9b: PUSH1 0x20 00001c9d: PUSH1 0x00 00001c9f: KECCAK256 00001ca0: ADD 00001ca1: DUP2 00001ca2: SWAP1 00001ca3: SSTORE 00001ca4: POP 00001ca5: DUP2 00001ca6: PUSH1 0x0a 00001ca8: PUSH1 0x00 00001caa: DUP4 00001cab: DUP2 00001cac: MSTORE 00001cad: PUSH1 0x20 00001caf: ADD 00001cb0: SWAP1 00001cb1: DUP2 00001cb2: MSTORE 00001cb3: PUSH1 0x20 00001cb5: ADD 00001cb6: PUSH1 0x00 00001cb8: KECCAK256 00001cb9: DUP2 00001cba: SWAP1 00001cbb: SSTORE 00001cbc: POP 00001cbd: PUSH1 0x0a 00001cbf: PUSH1 0x00 00001cc1: DUP6 00001cc2: DUP2 00001cc3: MSTORE 00001cc4: PUSH1 0x20 00001cc6: ADD 00001cc7: SWAP1 00001cc8: DUP2 00001cc9: MSTORE 00001cca: PUSH1 0x20 00001ccc: ADD 00001ccd: PUSH1 0x00 00001ccf: KECCAK256 00001cd0: PUSH1 0x00 00001cd2: SWAP1 00001cd3: SSTORE 00001cd4: PUSH1 0x09 00001cd6: DUP1 00001cd7: SLOAD 00001cd8: DUP1 00001cd9: PUSH2 0x1ce5 00001cdc: JUMPI 00001cdd: PUSH2 0x1ce4 00001ce0: PUSH2 0x351f 00001ce3: JUMP 00001ce4: JUMPDEST 00001ce5: JUMPDEST 00001ce6: PUSH1 0x01 00001ce8: SWAP1 00001ce9: SUB 00001cea: DUP2 00001ceb: DUP2 00001cec: SWAP1 00001ced: PUSH1 0x00 00001cef: MSTORE 00001cf0: PUSH1 0x20 00001cf2: PUSH1 0x00 00001cf4: KECCAK256 00001cf5: ADD 00001cf6: PUSH1 0x00 00001cf8: SWAP1 00001cf9: SSTORE 00001cfa: SWAP1 00001cfb: SSTORE 00001cfc: POP 00001cfd: POP 00001cfe: POP 00001cff: POP 00001d00: JUMP 00001d01: JUMPDEST 00001d02: PUSH1 0x00 00001d04: PUSH2 0x1d0c 00001d07: DUP4 00001d08: PUSH2 0x0b26 00001d0b: JUMP 00001d0c: JUMPDEST 00001d0d: SWAP1 00001d0e: POP 00001d0f: DUP2 00001d10: PUSH1 0x07 00001d12: PUSH1 0x00 00001d14: DUP6 00001d15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d2a: AND 00001d2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d40: AND 00001d41: DUP2 00001d42: MSTORE 00001d43: PUSH1 0x20 00001d45: ADD 00001d46: SWAP1 00001d47: DUP2 00001d48: MSTORE 00001d49: PUSH1 0x20 00001d4b: ADD 00001d4c: PUSH1 0x00 00001d4e: KECCAK256 00001d4f: PUSH1 0x00 00001d51: DUP4 00001d52: DUP2 00001d53: MSTORE 00001d54: PUSH1 0x20 00001d56: ADD 00001d57: SWAP1 00001d58: DUP2 00001d59: MSTORE 00001d5a: PUSH1 0x20 00001d5c: ADD 00001d5d: PUSH1 0x00 00001d5f: KECCAK256 00001d60: DUP2 00001d61: SWAP1 00001d62: SSTORE 00001d63: POP 00001d64: DUP1 00001d65: PUSH1 0x08 00001d67: PUSH1 0x00 00001d69: DUP5 00001d6a: DUP2 00001d6b: MSTORE 00001d6c: PUSH1 0x20 00001d6e: ADD 00001d6f: SWAP1 00001d70: DUP2 00001d71: MSTORE 00001d72: PUSH1 0x20 00001d74: ADD 00001d75: PUSH1 0x00 00001d77: KECCAK256 00001d78: DUP2 00001d79: SWAP1 00001d7a: SSTORE 00001d7b: POP 00001d7c: POP 00001d7d: POP 00001d7e: POP 00001d7f: JUMP 00001d80: JUMPDEST 00001d81: PUSH1 0x00 00001d83: PUSH32 0x80ac58cd00000000000000000000000000000000000000000000000000000000 00001da4: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001dc1: NOT 00001dc2: AND 00001dc3: DUP3 00001dc4: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001de1: NOT 00001de2: AND 00001de3: EQ 00001de4: DUP1 00001de5: PUSH2 0x1e4b 00001de8: JUMPI 00001de9: POP 00001dea: PUSH32 0x5b5e139f00000000000000000000000000000000000000000000000000000000 00001e0b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001e28: NOT 00001e29: AND 00001e2a: DUP3 00001e2b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001e48: NOT 00001e49: AND 00001e4a: EQ 00001e4b: JUMPDEST 00001e4c: DUP1 00001e4d: PUSH2 0x1e5b 00001e50: JUMPI 00001e51: POP 00001e52: PUSH2 0x1e5a 00001e55: DUP3 00001e56: PUSH2 0x2055 00001e59: JUMP 00001e5a: JUMPDEST 00001e5b: JUMPDEST 00001e5c: SWAP1 00001e5d: POP 00001e5e: SWAP2 00001e5f: SWAP1 00001e60: POP 00001e61: JUMP 00001e62: JUMPDEST 00001e63: PUSH2 0x1e6d 00001e66: DUP4 00001e67: DUP4 00001e68: DUP4 00001e69: PUSH2 0x12a5 00001e6c: JUMP 00001e6d: JUMPDEST 00001e6e: POP 00001e6f: POP 00001e70: POP 00001e71: JUMP 00001e72: JUMPDEST 00001e73: PUSH2 0x1e7c 00001e76: DUP4 00001e77: DUP4 00001e78: PUSH2 0x20bf 00001e7b: JUMP 00001e7c: JUMPDEST 00001e7d: PUSH2 0x1e89 00001e80: PUSH1 0x00 00001e82: DUP5 00001e83: DUP5 00001e84: DUP5 00001e85: PUSH2 0x1ecd 00001e88: JUMP 00001e89: JUMPDEST 00001e8a: PUSH2 0x1ec8 00001e8d: JUMPI 00001e8e: PUSH1 0x40 00001e90: MLOAD 00001e91: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001eb2: DUP2 00001eb3: MSTORE 00001eb4: PUSH1 0x04 00001eb6: ADD 00001eb7: PUSH2 0x1ebf 00001eba: SWAP1 00001ebb: PUSH2 0x34ff 00001ebe: JUMP 00001ebf: JUMPDEST 00001ec0: PUSH1 0x40 00001ec2: MLOAD 00001ec3: DUP1 00001ec4: SWAP2 00001ec5: SUB 00001ec6: SWAP1 00001ec7: REVERT 00001ec8: JUMPDEST 00001ec9: POP 00001eca: POP 00001ecb: POP 00001ecc: JUMP 00001ecd: JUMPDEST 00001ece: PUSH1 0x00 00001ed0: PUSH2 0x1eee 00001ed3: DUP5 00001ed4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ee9: AND 00001eea: PUSH2 0x1292 00001eed: JUMP 00001eee: JUMPDEST 00001eef: ISZERO 00001ef0: PUSH2 0x2048 00001ef3: JUMPI 00001ef4: DUP4 00001ef5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f0a: AND 00001f0b: PUSH4 0x150b7a02 00001f10: PUSH2 0x1f17 00001f13: PUSH2 0x14a4 00001f16: JUMP 00001f17: JUMPDEST 00001f18: DUP8 00001f19: DUP7 00001f1a: DUP7 00001f1b: PUSH1 0x40 00001f1d: MLOAD 00001f1e: DUP6 00001f1f: PUSH4 0xffffffff 00001f24: AND 00001f25: PUSH1 0xe0 00001f27: SHL 00001f28: DUP2 00001f29: MSTORE 00001f2a: PUSH1 0x04 00001f2c: ADD 00001f2d: PUSH2 0x1f39 00001f30: SWAP5 00001f31: SWAP4 00001f32: SWAP3 00001f33: SWAP2 00001f34: SWAP1 00001f35: PUSH2 0x35a3 00001f38: JUMP 00001f39: JUMPDEST 00001f3a: PUSH1 0x20 00001f3c: PUSH1 0x40 00001f3e: MLOAD 00001f3f: DUP1 00001f40: DUP4 00001f41: SUB 00001f42: DUP2 00001f43: PUSH1 0x00 00001f45: DUP8 00001f46: GAS 00001f47: CALL 00001f48: SWAP3 00001f49: POP 00001f4a: POP 00001f4b: POP 00001f4c: DUP1 00001f4d: ISZERO 00001f4e: PUSH2 0x1f75 00001f51: JUMPI 00001f52: POP 00001f53: PUSH1 0x40 00001f55: MLOAD 00001f56: RETURNDATASIZE 00001f57: PUSH1 0x1f 00001f59: NOT 00001f5a: PUSH1 0x1f 00001f5c: DUP3 00001f5d: ADD 00001f5e: AND 00001f5f: DUP3 00001f60: ADD 00001f61: DUP1 00001f62: PUSH1 0x40 00001f64: MSTORE 00001f65: POP 00001f66: DUP2 00001f67: ADD 00001f68: SWAP1 00001f69: PUSH2 0x1f72 00001f6c: SWAP2 00001f6d: SWAP1 00001f6e: PUSH2 0x3604 00001f71: JUMP 00001f72: JUMPDEST 00001f73: PUSH1 0x01 00001f75: JUMPDEST 00001f76: PUSH2 0x1ff8 00001f79: JUMPI 00001f7a: RETURNDATASIZE 00001f7b: DUP1 00001f7c: PUSH1 0x00 00001f7e: DUP2 00001f7f: EQ 00001f80: PUSH2 0x1fa5 00001f83: JUMPI 00001f84: PUSH1 0x40 00001f86: MLOAD 00001f87: SWAP2 00001f88: POP 00001f89: PUSH1 0x1f 00001f8b: NOT 00001f8c: PUSH1 0x3f 00001f8e: RETURNDATASIZE 00001f8f: ADD 00001f90: AND 00001f91: DUP3 00001f92: ADD 00001f93: PUSH1 0x40 00001f95: MSTORE 00001f96: RETURNDATASIZE 00001f97: DUP3 00001f98: MSTORE 00001f99: RETURNDATASIZE 00001f9a: PUSH1 0x00 00001f9c: PUSH1 0x20 00001f9e: DUP5 00001f9f: ADD 00001fa0: RETURNDATACOPY 00001fa1: PUSH2 0x1faa 00001fa4: JUMP 00001fa5: JUMPDEST 00001fa6: PUSH1 0x60 00001fa8: SWAP2 00001fa9: POP 00001faa: JUMPDEST 00001fab: POP 00001fac: PUSH1 0x00 00001fae: DUP2 00001faf: MLOAD 00001fb0: EQ 00001fb1: ISZERO 00001fb2: PUSH2 0x1ff0 00001fb5: JUMPI 00001fb6: PUSH1 0x40 00001fb8: MLOAD 00001fb9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001fda: DUP2 00001fdb: MSTORE 00001fdc: PUSH1 0x04 00001fde: ADD 00001fdf: PUSH2 0x1fe7 00001fe2: SWAP1 00001fe3: PUSH2 0x34ff 00001fe6: JUMP 00001fe7: JUMPDEST 00001fe8: PUSH1 0x40 00001fea: MLOAD 00001feb: DUP1 00001fec: SWAP2 00001fed: SUB 00001fee: SWAP1 00001fef: REVERT 00001ff0: JUMPDEST 00001ff1: DUP1 00001ff2: MLOAD 00001ff3: DUP2 00001ff4: PUSH1 0x20 00001ff6: ADD 00001ff7: REVERT 00001ff8: JUMPDEST 00001ff9: PUSH4 0x150b7a02 00001ffe: PUSH1 0xe0 00002000: SHL 00002001: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000201e: NOT 0000201f: AND 00002020: DUP2 00002021: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000203e: NOT 0000203f: AND 00002040: EQ 00002041: SWAP2 00002042: POP 00002043: POP 00002044: PUSH2 0x204d 00002047: JUMP 00002048: JUMPDEST 00002049: PUSH1 0x01 0000204b: SWAP1 0000204c: POP 0000204d: JUMPDEST 0000204e: SWAP5 0000204f: SWAP4 00002050: POP 00002051: POP 00002052: POP 00002053: POP 00002054: JUMP 00002055: JUMPDEST 00002056: PUSH1 0x00 00002058: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00002079: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002096: NOT 00002097: AND 00002098: DUP3 00002099: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000020b6: NOT 000020b7: AND 000020b8: EQ 000020b9: SWAP1 000020ba: POP 000020bb: SWAP2 000020bc: SWAP1 000020bd: POP 000020be: JUMP 000020bf: JUMPDEST 000020c0: PUSH1 0x00 000020c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020d7: AND 000020d8: DUP3 000020d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020ee: AND 000020ef: EQ 000020f0: ISZERO 000020f1: PUSH2 0x212f 000020f4: JUMPI 000020f5: PUSH1 0x40 000020f7: MLOAD 000020f8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002119: DUP2 0000211a: MSTORE 0000211b: PUSH1 0x04 0000211d: ADD 0000211e: PUSH2 0x2126 00002121: SWAP1 00002122: PUSH2 0x367d 00002125: JUMP 00002126: JUMPDEST 00002127: PUSH1 0x40 00002129: MLOAD 0000212a: DUP1 0000212b: SWAP2 0000212c: SUB 0000212d: SWAP1 0000212e: REVERT 0000212f: JUMPDEST 00002130: PUSH2 0x2138 00002133: DUP2 00002134: PUSH2 0x1438 00002137: JUMP 00002138: JUMPDEST 00002139: ISZERO 0000213a: PUSH2 0x2178 0000213d: JUMPI 0000213e: PUSH1 0x40 00002140: MLOAD 00002141: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002162: DUP2 00002163: MSTORE 00002164: PUSH1 0x04 00002166: ADD 00002167: PUSH2 0x216f 0000216a: SWAP1 0000216b: PUSH2 0x36e9 0000216e: JUMP 0000216f: JUMPDEST 00002170: PUSH1 0x40 00002172: MLOAD 00002173: DUP1 00002174: SWAP2 00002175: SUB 00002176: SWAP1 00002177: REVERT 00002178: JUMPDEST 00002179: PUSH2 0x2184 0000217c: PUSH1 0x00 0000217e: DUP4 0000217f: DUP4 00002180: PUSH2 0x1e62 00002183: JUMP 00002184: JUMPDEST 00002185: PUSH1 0x01 00002187: PUSH1 0x03 00002189: PUSH1 0x00 0000218b: DUP5 0000218c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021a1: AND 000021a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021b7: AND 000021b8: DUP2 000021b9: MSTORE 000021ba: PUSH1 0x20 000021bc: ADD 000021bd: SWAP1 000021be: DUP2 000021bf: MSTORE 000021c0: PUSH1 0x20 000021c2: ADD 000021c3: PUSH1 0x00 000021c5: KECCAK256 000021c6: PUSH1 0x00 000021c8: DUP3 000021c9: DUP3 000021ca: SLOAD 000021cb: PUSH2 0x21d4 000021ce: SWAP2 000021cf: SWAP1 000021d0: PUSH2 0x2dba 000021d3: JUMP 000021d4: JUMPDEST 000021d5: SWAP3 000021d6: POP 000021d7: POP 000021d8: DUP2 000021d9: SWAP1 000021da: SSTORE 000021db: POP 000021dc: DUP2 000021dd: PUSH1 0x02 000021df: PUSH1 0x00 000021e1: DUP4 000021e2: DUP2 000021e3: MSTORE 000021e4: PUSH1 0x20 000021e6: ADD 000021e7: SWAP1 000021e8: DUP2 000021e9: MSTORE 000021ea: PUSH1 0x20 000021ec: ADD 000021ed: PUSH1 0x00 000021ef: KECCAK256 000021f0: PUSH1 0x00 000021f2: PUSH2 0x0100 000021f5: EXP 000021f6: DUP2 000021f7: SLOAD 000021f8: DUP2 000021f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000220e: MUL 0000220f: NOT 00002210: AND 00002211: SWAP1 00002212: DUP4 00002213: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002228: AND 00002229: MUL 0000222a: OR 0000222b: SWAP1 0000222c: SSTORE 0000222d: POP 0000222e: DUP1 0000222f: DUP3 00002230: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002245: AND 00002246: PUSH1 0x00 00002248: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000225d: AND 0000225e: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000227f: PUSH1 0x40 00002281: MLOAD 00002282: PUSH1 0x40 00002284: MLOAD 00002285: DUP1 00002286: SWAP2 00002287: SUB 00002288: SWAP1 00002289: LOG4 0000228a: POP 0000228b: POP 0000228c: JUMP 0000228d: JUMPDEST 0000228e: DUP3 0000228f: DUP1 00002290: SLOAD 00002291: PUSH2 0x2299 00002294: SWAP1 00002295: PUSH2 0x2a1f 00002298: JUMP 00002299: JUMPDEST 0000229a: SWAP1 0000229b: PUSH1 0x00 0000229d: MSTORE 0000229e: PUSH1 0x20 000022a0: PUSH1 0x00 000022a2: KECCAK256 000022a3: SWAP1 000022a4: PUSH1 0x1f 000022a6: ADD 000022a7: PUSH1 0x20 000022a9: SWAP1 000022aa: DIV 000022ab: DUP2 000022ac: ADD 000022ad: SWAP3 000022ae: DUP3 000022af: PUSH2 0x22bb 000022b2: JUMPI 000022b3: PUSH1 0x00 000022b5: DUP6 000022b6: SSTORE 000022b7: PUSH2 0x2302 000022ba: JUMP 000022bb: JUMPDEST 000022bc: DUP3 000022bd: PUSH1 0x1f 000022bf: LT 000022c0: PUSH2 0x22d4 000022c3: JUMPI 000022c4: DUP1 000022c5: MLOAD 000022c6: PUSH1 0xff 000022c8: NOT 000022c9: AND 000022ca: DUP4 000022cb: DUP1 000022cc: ADD 000022cd: OR 000022ce: DUP6 000022cf: SSTORE 000022d0: PUSH2 0x2302 000022d3: JUMP 000022d4: JUMPDEST 000022d5: DUP3 000022d6: DUP1 000022d7: ADD 000022d8: PUSH1 0x01 000022da: ADD 000022db: DUP6 000022dc: SSTORE 000022dd: DUP3 000022de: ISZERO 000022df: PUSH2 0x2302 000022e2: JUMPI 000022e3: SWAP2 000022e4: DUP3 000022e5: ADD 000022e6: JUMPDEST 000022e7: DUP3 000022e8: DUP2 000022e9: GT 000022ea: ISZERO 000022eb: PUSH2 0x2301 000022ee: JUMPI 000022ef: DUP3 000022f0: MLOAD 000022f1: DUP3 000022f2: SSTORE 000022f3: SWAP2 000022f4: PUSH1 0x20 000022f6: ADD 000022f7: SWAP2 000022f8: SWAP1 000022f9: PUSH1 0x01 000022fb: ADD 000022fc: SWAP1 000022fd: PUSH2 0x22e6 00002300: JUMP 00002301: JUMPDEST 00002302: JUMPDEST 00002303: POP 00002304: SWAP1 00002305: POP 00002306: PUSH2 0x230f 00002309: SWAP2 0000230a: SWAP1 0000230b: PUSH2 0x2313 0000230e: JUMP 0000230f: JUMPDEST 00002310: POP 00002311: SWAP1 00002312: JUMP 00002313: JUMPDEST 00002314: JUMPDEST 00002315: DUP1 00002316: DUP3 00002317: GT 00002318: ISZERO 00002319: PUSH2 0x232c 0000231c: JUMPI 0000231d: PUSH1 0x00 0000231f: DUP2 00002320: PUSH1 0x00 00002322: SWAP1 00002323: SSTORE 00002324: POP 00002325: PUSH1 0x01 00002327: ADD 00002328: PUSH2 0x2314 0000232b: JUMP 0000232c: JUMPDEST 0000232d: POP 0000232e: SWAP1 0000232f: JUMP 00002330: JUMPDEST 00002331: PUSH1 0x00 00002333: PUSH1 0x40 00002335: MLOAD 00002336: SWAP1 00002337: POP 00002338: SWAP1 00002339: JUMP 0000233a: JUMPDEST 0000233b: PUSH1 0x00 0000233d: DUP1 0000233e: REVERT 0000233f: JUMPDEST 00002340: PUSH1 0x00 00002342: DUP1 00002343: REVERT 00002344: JUMPDEST 00002345: PUSH1 0x00 00002347: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00002368: DUP3 00002369: AND 0000236a: SWAP1 0000236b: POP 0000236c: SWAP2 0000236d: SWAP1 0000236e: POP 0000236f: JUMP 00002370: JUMPDEST 00002371: PUSH2 0x2379 00002374: DUP2 00002375: PUSH2 0x2344 00002378: JUMP 00002379: JUMPDEST 0000237a: DUP2 0000237b: EQ 0000237c: PUSH2 0x2384 0000237f: JUMPI 00002380: PUSH1 0x00 00002382: DUP1 00002383: REVERT 00002384: JUMPDEST 00002385: POP 00002386: JUMP 00002387: JUMPDEST 00002388: PUSH1 0x00 0000238a: DUP2 0000238b: CALLDATALOAD 0000238c: SWAP1 0000238d: POP 0000238e: PUSH2 0x2396 00002391: DUP2 00002392: PUSH2 0x2370 00002395: JUMP 00002396: JUMPDEST 00002397: SWAP3 00002398: SWAP2 00002399: POP 0000239a: POP 0000239b: JUMP 0000239c: JUMPDEST 0000239d: PUSH1 0x00 0000239f: PUSH1 0x20 000023a1: DUP3 000023a2: DUP5 000023a3: SUB 000023a4: SLT 000023a5: ISZERO 000023a6: PUSH2 0x23b2 000023a9: JUMPI 000023aa: PUSH2 0x23b1 000023ad: PUSH2 0x233a 000023b0: JUMP 000023b1: JUMPDEST 000023b2: JUMPDEST 000023b3: PUSH1 0x00 000023b5: PUSH2 0x23c0 000023b8: DUP5 000023b9: DUP3 000023ba: DUP6 000023bb: ADD 000023bc: PUSH2 0x2387 000023bf: JUMP 000023c0: JUMPDEST 000023c1: SWAP2 000023c2: POP 000023c3: POP 000023c4: SWAP3 000023c5: SWAP2 000023c6: POP 000023c7: POP 000023c8: JUMP 000023c9: JUMPDEST 000023ca: PUSH1 0x00 000023cc: DUP2 000023cd: ISZERO 000023ce: ISZERO 000023cf: SWAP1 000023d0: POP 000023d1: SWAP2 000023d2: SWAP1 000023d3: POP 000023d4: JUMP 000023d5: JUMPDEST 000023d6: PUSH2 0x23de 000023d9: DUP2 000023da: PUSH2 0x23c9 000023dd: JUMP 000023de: JUMPDEST 000023df: DUP3 000023e0: MSTORE 000023e1: POP 000023e2: POP 000023e3: JUMP 000023e4: JUMPDEST 000023e5: PUSH1 0x00 000023e7: PUSH1 0x20 000023e9: DUP3 000023ea: ADD 000023eb: SWAP1 000023ec: POP 000023ed: PUSH2 0x23f9 000023f0: PUSH1 0x00 000023f2: DUP4 000023f3: ADD 000023f4: DUP5 000023f5: PUSH2 0x23d5 000023f8: JUMP 000023f9: JUMPDEST 000023fa: SWAP3 000023fb: SWAP2 000023fc: POP 000023fd: POP 000023fe: JUMP 000023ff: JUMPDEST 00002400: PUSH1 0x00 00002402: DUP2 00002403: MLOAD 00002404: SWAP1 00002405: POP 00002406: SWAP2 00002407: SWAP1 00002408: POP 00002409: JUMP 0000240a: JUMPDEST 0000240b: PUSH1 0x00 0000240d: DUP3 0000240e: DUP3 0000240f: MSTORE 00002410: PUSH1 0x20 00002412: DUP3 00002413: ADD 00002414: SWAP1 00002415: POP 00002416: SWAP3 00002417: SWAP2 00002418: POP 00002419: POP 0000241a: JUMP 0000241b: JUMPDEST 0000241c: PUSH1 0x00 0000241e: JUMPDEST 0000241f: DUP4 00002420: DUP2 00002421: LT 00002422: ISZERO 00002423: PUSH2 0x2439 00002426: JUMPI 00002427: DUP1 00002428: DUP3 00002429: ADD 0000242a: MLOAD 0000242b: DUP2 0000242c: DUP5 0000242d: ADD 0000242e: MSTORE 0000242f: PUSH1 0x20 00002431: DUP2 00002432: ADD 00002433: SWAP1 00002434: POP 00002435: PUSH2 0x241e 00002438: JUMP 00002439: JUMPDEST 0000243a: DUP4 0000243b: DUP2 0000243c: GT 0000243d: ISZERO 0000243e: PUSH2 0x2448 00002441: JUMPI 00002442: PUSH1 0x00 00002444: DUP5 00002445: DUP5 00002446: ADD 00002447: MSTORE 00002448: JUMPDEST 00002449: POP 0000244a: POP 0000244b: POP 0000244c: POP 0000244d: JUMP 0000244e: JUMPDEST 0000244f: PUSH1 0x00 00002451: PUSH1 0x1f 00002453: NOT 00002454: PUSH1 0x1f 00002456: DUP4 00002457: ADD 00002458: AND 00002459: SWAP1 0000245a: POP 0000245b: SWAP2 0000245c: SWAP1 0000245d: POP 0000245e: JUMP 0000245f: JUMPDEST 00002460: PUSH1 0x00 00002462: PUSH2 0x246a 00002465: DUP3 00002466: PUSH2 0x23ff 00002469: JUMP 0000246a: JUMPDEST 0000246b: PUSH2 0x2474 0000246e: DUP2 0000246f: DUP6 00002470: PUSH2 0x240a 00002473: JUMP 00002474: JUMPDEST 00002475: SWAP4 00002476: POP 00002477: PUSH2 0x2484 0000247a: DUP2 0000247b: DUP6 0000247c: PUSH1 0x20 0000247e: DUP7 0000247f: ADD 00002480: PUSH2 0x241b 00002483: JUMP 00002484: JUMPDEST 00002485: PUSH2 0x248d 00002488: DUP2 00002489: PUSH2 0x244e 0000248c: JUMP 0000248d: JUMPDEST 0000248e: DUP5 0000248f: ADD 00002490: SWAP2 00002491: POP 00002492: POP 00002493: SWAP3 00002494: SWAP2 00002495: POP 00002496: POP 00002497: JUMP 00002498: JUMPDEST 00002499: PUSH1 0x00 0000249b: PUSH1 0x20 0000249d: DUP3 0000249e: ADD 0000249f: SWAP1 000024a0: POP 000024a1: DUP2 000024a2: DUP2 000024a3: SUB 000024a4: PUSH1 0x00 000024a6: DUP4 000024a7: ADD 000024a8: MSTORE 000024a9: PUSH2 0x24b2 000024ac: DUP2 000024ad: DUP5 000024ae: PUSH2 0x245f 000024b1: JUMP 000024b2: JUMPDEST 000024b3: SWAP1 000024b4: POP 000024b5: SWAP3 000024b6: SWAP2 000024b7: POP 000024b8: POP 000024b9: JUMP 000024ba: JUMPDEST 000024bb: PUSH1 0x00 000024bd: DUP2 000024be: SWAP1 000024bf: POP 000024c0: SWAP2 000024c1: SWAP1 000024c2: POP 000024c3: JUMP 000024c4: JUMPDEST 000024c5: PUSH2 0x24cd 000024c8: DUP2 000024c9: PUSH2 0x24ba 000024cc: JUMP 000024cd: JUMPDEST 000024ce: DUP2 000024cf: EQ 000024d0: PUSH2 0x24d8 000024d3: JUMPI 000024d4: PUSH1 0x00 000024d6: DUP1 000024d7: REVERT 000024d8: JUMPDEST 000024d9: POP 000024da: JUMP 000024db: JUMPDEST 000024dc: PUSH1 0x00 000024de: DUP2 000024df: CALLDATALOAD 000024e0: SWAP1 000024e1: POP 000024e2: PUSH2 0x24ea 000024e5: DUP2 000024e6: PUSH2 0x24c4 000024e9: JUMP 000024ea: JUMPDEST 000024eb: SWAP3 000024ec: SWAP2 000024ed: POP 000024ee: POP 000024ef: JUMP 000024f0: JUMPDEST 000024f1: PUSH1 0x00 000024f3: PUSH1 0x20 000024f5: DUP3 000024f6: DUP5 000024f7: SUB 000024f8: SLT 000024f9: ISZERO 000024fa: PUSH2 0x2506 000024fd: JUMPI 000024fe: PUSH2 0x2505 00002501: PUSH2 0x233a 00002504: JUMP 00002505: JUMPDEST 00002506: JUMPDEST 00002507: PUSH1 0x00 00002509: PUSH2 0x2514 0000250c: DUP5 0000250d: DUP3 0000250e: DUP6 0000250f: ADD 00002510: PUSH2 0x24db 00002513: JUMP 00002514: JUMPDEST 00002515: SWAP2 00002516: POP 00002517: POP 00002518: SWAP3 00002519: SWAP2 0000251a: POP 0000251b: POP 0000251c: JUMP 0000251d: JUMPDEST 0000251e: PUSH1 0x00 00002520: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002535: DUP3 00002536: AND 00002537: SWAP1 00002538: POP 00002539: SWAP2 0000253a: SWAP1 0000253b: POP 0000253c: JUMP 0000253d: JUMPDEST 0000253e: PUSH1 0x00 00002540: PUSH2 0x2548 00002543: DUP3 00002544: PUSH2 0x251d 00002547: JUMP 00002548: JUMPDEST 00002549: SWAP1 0000254a: POP 0000254b: SWAP2 0000254c: SWAP1 0000254d: POP 0000254e: JUMP 0000254f: JUMPDEST 00002550: PUSH2 0x2558 00002553: DUP2 00002554: PUSH2 0x253d 00002557: JUMP 00002558: JUMPDEST 00002559: DUP3 0000255a: MSTORE 0000255b: POP 0000255c: POP 0000255d: JUMP 0000255e: JUMPDEST 0000255f: PUSH1 0x00 00002561: PUSH1 0x20 00002563: DUP3 00002564: ADD 00002565: SWAP1 00002566: POP 00002567: PUSH2 0x2573 0000256a: PUSH1 0x00 0000256c: DUP4 0000256d: ADD 0000256e: DUP5 0000256f: PUSH2 0x254f 00002572: JUMP 00002573: JUMPDEST 00002574: SWAP3 00002575: SWAP2 00002576: POP 00002577: POP 00002578: JUMP 00002579: JUMPDEST 0000257a: PUSH2 0x2582 0000257d: DUP2 0000257e: PUSH2 0x253d 00002581: JUMP 00002582: JUMPDEST 00002583: DUP2 00002584: EQ 00002585: PUSH2 0x258d 00002588: JUMPI 00002589: PUSH1 0x00 0000258b: DUP1 0000258c: REVERT 0000258d: JUMPDEST 0000258e: POP 0000258f: JUMP 00002590: JUMPDEST 00002591: PUSH1 0x00 00002593: DUP2 00002594: CALLDATALOAD 00002595: SWAP1 00002596: POP 00002597: PUSH2 0x259f 0000259a: DUP2 0000259b: PUSH2 0x2579 0000259e: JUMP 0000259f: JUMPDEST 000025a0: SWAP3 000025a1: SWAP2 000025a2: POP 000025a3: POP 000025a4: JUMP 000025a5: JUMPDEST 000025a6: PUSH1 0x00 000025a8: DUP1 000025a9: PUSH1 0x40 000025ab: DUP4 000025ac: DUP6 000025ad: SUB 000025ae: SLT 000025af: ISZERO 000025b0: PUSH2 0x25bc 000025b3: JUMPI 000025b4: PUSH2 0x25bb 000025b7: PUSH2 0x233a 000025ba: JUMP 000025bb: JUMPDEST 000025bc: JUMPDEST 000025bd: PUSH1 0x00 000025bf: PUSH2 0x25ca 000025c2: DUP6 000025c3: DUP3 000025c4: DUP7 000025c5: ADD 000025c6: PUSH2 0x2590 000025c9: JUMP 000025ca: JUMPDEST 000025cb: SWAP3 000025cc: POP 000025cd: POP 000025ce: PUSH1 0x20 000025d0: PUSH2 0x25db 000025d3: DUP6 000025d4: DUP3 000025d5: DUP7 000025d6: ADD 000025d7: PUSH2 0x24db 000025da: JUMP 000025db: JUMPDEST 000025dc: SWAP2 000025dd: POP 000025de: POP 000025df: SWAP3 000025e0: POP 000025e1: SWAP3 000025e2: SWAP1 000025e3: POP 000025e4: JUMP 000025e5: JUMPDEST 000025e6: PUSH2 0x25ee 000025e9: DUP2 000025ea: PUSH2 0x24ba 000025ed: JUMP 000025ee: JUMPDEST 000025ef: DUP3 000025f0: MSTORE 000025f1: POP 000025f2: POP 000025f3: JUMP 000025f4: JUMPDEST 000025f5: PUSH1 0x00 000025f7: PUSH1 0x20 000025f9: DUP3 000025fa: ADD 000025fb: SWAP1 000025fc: POP 000025fd: PUSH2 0x2609 00002600: PUSH1 0x00 00002602: DUP4 00002603: ADD 00002604: DUP5 00002605: PUSH2 0x25e5 00002608: JUMP 00002609: JUMPDEST 0000260a: SWAP3 0000260b: SWAP2 0000260c: POP 0000260d: POP 0000260e: JUMP 0000260f: JUMPDEST 00002610: PUSH1 0x00 00002612: DUP1 00002613: PUSH1 0x00 00002615: PUSH1 0x60 00002617: DUP5 00002618: DUP7 00002619: SUB 0000261a: SLT 0000261b: ISZERO 0000261c: PUSH2 0x2628 0000261f: JUMPI 00002620: PUSH2 0x2627 00002623: PUSH2 0x233a 00002626: JUMP 00002627: JUMPDEST 00002628: JUMPDEST 00002629: PUSH1 0x00 0000262b: PUSH2 0x2636 0000262e: DUP7 0000262f: DUP3 00002630: DUP8 00002631: ADD 00002632: PUSH2 0x2590 00002635: JUMP 00002636: JUMPDEST 00002637: SWAP4 00002638: POP 00002639: POP 0000263a: PUSH1 0x20 0000263c: PUSH2 0x2647 0000263f: DUP7 00002640: DUP3 00002641: DUP8 00002642: ADD 00002643: PUSH2 0x2590 00002646: JUMP 00002647: JUMPDEST 00002648: SWAP3 00002649: POP 0000264a: POP 0000264b: PUSH1 0x40 0000264d: PUSH2 0x2658 00002650: DUP7 00002651: DUP3 00002652: DUP8 00002653: ADD 00002654: PUSH2 0x24db 00002657: JUMP 00002658: JUMPDEST 00002659: SWAP2 0000265a: POP 0000265b: POP 0000265c: SWAP3 0000265d: POP 0000265e: SWAP3 0000265f: POP 00002660: SWAP3 00002661: JUMP 00002662: JUMPDEST 00002663: PUSH1 0x00 00002665: DUP1 00002666: REVERT 00002667: JUMPDEST 00002668: PUSH1 0x00 0000266a: DUP1 0000266b: REVERT 0000266c: JUMPDEST 0000266d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000268e: PUSH1 0x00 00002690: MSTORE 00002691: PUSH1 0x41 00002693: PUSH1 0x04 00002695: MSTORE 00002696: PUSH1 0x24 00002698: PUSH1 0x00 0000269a: REVERT 0000269b: JUMPDEST 0000269c: PUSH2 0x26a4 0000269f: DUP3 000026a0: PUSH2 0x244e 000026a3: JUMP 000026a4: JUMPDEST 000026a5: DUP2 000026a6: ADD 000026a7: DUP2 000026a8: DUP2 000026a9: LT 000026aa: PUSH8 0xffffffffffffffff 000026b3: DUP3 000026b4: GT 000026b5: OR 000026b6: ISZERO 000026b7: PUSH2 0x26c3 000026ba: JUMPI 000026bb: PUSH2 0x26c2 000026be: PUSH2 0x266c 000026c1: JUMP 000026c2: JUMPDEST 000026c3: JUMPDEST 000026c4: DUP1 000026c5: PUSH1 0x40 000026c7: MSTORE 000026c8: POP 000026c9: POP 000026ca: POP 000026cb: JUMP 000026cc: JUMPDEST 000026cd: PUSH1 0x00 000026cf: PUSH2 0x26d6 000026d2: PUSH2 0x2330 000026d5: JUMP 000026d6: JUMPDEST 000026d7: SWAP1 000026d8: POP 000026d9: PUSH2 0x26e2 000026dc: DUP3 000026dd: DUP3 000026de: PUSH2 0x269b 000026e1: JUMP 000026e2: JUMPDEST 000026e3: SWAP2 000026e4: SWAP1 000026e5: POP 000026e6: JUMP 000026e7: JUMPDEST 000026e8: PUSH1 0x00 000026ea: PUSH8 0xffffffffffffffff 000026f3: DUP3 000026f4: GT 000026f5: ISZERO 000026f6: PUSH2 0x2702 000026f9: JUMPI 000026fa: PUSH2 0x2701 000026fd: PUSH2 0x266c 00002700: JUMP 00002701: JUMPDEST 00002702: JUMPDEST 00002703: PUSH2 0x270b 00002706: DUP3 00002707: PUSH2 0x244e 0000270a: JUMP 0000270b: JUMPDEST 0000270c: SWAP1 0000270d: POP 0000270e: PUSH1 0x20 00002710: DUP2 00002711: ADD 00002712: SWAP1 00002713: POP 00002714: SWAP2 00002715: SWAP1 00002716: POP 00002717: JUMP 00002718: JUMPDEST 00002719: DUP3 0000271a: DUP2 0000271b: DUP4 0000271c: CALLDATACOPY 0000271d: PUSH1 0x00 0000271f: DUP4 00002720: DUP4 00002721: ADD 00002722: MSTORE 00002723: POP 00002724: POP 00002725: POP 00002726: JUMP 00002727: JUMPDEST 00002728: PUSH1 0x00 0000272a: PUSH2 0x273a 0000272d: PUSH2 0x2735 00002730: DUP5 00002731: PUSH2 0x26e7 00002734: JUMP 00002735: JUMPDEST 00002736: PUSH2 0x26cc 00002739: JUMP 0000273a: JUMPDEST 0000273b: SWAP1 0000273c: POP 0000273d: DUP3 0000273e: DUP2 0000273f: MSTORE 00002740: PUSH1 0x20 00002742: DUP2 00002743: ADD 00002744: DUP5 00002745: DUP5 00002746: DUP5 00002747: ADD 00002748: GT 00002749: ISZERO 0000274a: PUSH2 0x2756 0000274d: JUMPI 0000274e: PUSH2 0x2755 00002751: PUSH2 0x2667 00002754: JUMP 00002755: JUMPDEST 00002756: JUMPDEST 00002757: PUSH2 0x2761 0000275a: DUP5 0000275b: DUP3 0000275c: DUP6 0000275d: PUSH2 0x2718 00002760: JUMP 00002761: JUMPDEST 00002762: POP 00002763: SWAP4 00002764: SWAP3 00002765: POP 00002766: POP 00002767: POP 00002768: JUMP 00002769: JUMPDEST 0000276a: PUSH1 0x00 0000276c: DUP3 0000276d: PUSH1 0x1f 0000276f: DUP4 00002770: ADD 00002771: SLT 00002772: PUSH2 0x277e 00002775: JUMPI 00002776: PUSH2 0x277d 00002779: PUSH2 0x2662 0000277c: JUMP 0000277d: JUMPDEST 0000277e: JUMPDEST 0000277f: DUP2 00002780: CALLDATALOAD 00002781: PUSH2 0x278e 00002784: DUP5 00002785: DUP3 00002786: PUSH1 0x20 00002788: DUP7 00002789: ADD 0000278a: PUSH2 0x2727 0000278d: JUMP 0000278e: JUMPDEST 0000278f: SWAP2 00002790: POP 00002791: POP 00002792: SWAP3 00002793: SWAP2 00002794: POP 00002795: POP 00002796: JUMP 00002797: JUMPDEST 00002798: PUSH1 0x00 0000279a: DUP1 0000279b: PUSH1 0x40 0000279d: DUP4 0000279e: DUP6 0000279f: SUB 000027a0: SLT 000027a1: ISZERO 000027a2: PUSH2 0x27ae 000027a5: JUMPI 000027a6: PUSH2 0x27ad 000027a9: PUSH2 0x233a 000027ac: JUMP 000027ad: JUMPDEST 000027ae: JUMPDEST 000027af: PUSH1 0x00 000027b1: PUSH2 0x27bc 000027b4: DUP6 000027b5: DUP3 000027b6: DUP7 000027b7: ADD 000027b8: PUSH2 0x24db 000027bb: JUMP 000027bc: JUMPDEST 000027bd: SWAP3 000027be: POP 000027bf: POP 000027c0: PUSH1 0x20 000027c2: DUP4 000027c3: ADD 000027c4: CALLDATALOAD 000027c5: PUSH8 0xffffffffffffffff 000027ce: DUP2 000027cf: GT 000027d0: ISZERO 000027d1: PUSH2 0x27dd 000027d4: JUMPI 000027d5: PUSH2 0x27dc 000027d8: PUSH2 0x233f 000027db: JUMP 000027dc: JUMPDEST 000027dd: JUMPDEST 000027de: PUSH2 0x27e9 000027e1: DUP6 000027e2: DUP3 000027e3: DUP7 000027e4: ADD 000027e5: PUSH2 0x2769 000027e8: JUMP 000027e9: JUMPDEST 000027ea: SWAP2 000027eb: POP 000027ec: POP 000027ed: SWAP3 000027ee: POP 000027ef: SWAP3 000027f0: SWAP1 000027f1: POP 000027f2: JUMP 000027f3: JUMPDEST 000027f4: PUSH1 0x00 000027f6: PUSH1 0x20 000027f8: DUP3 000027f9: DUP5 000027fa: SUB 000027fb: SLT 000027fc: ISZERO 000027fd: PUSH2 0x2809 00002800: JUMPI 00002801: PUSH2 0x2808 00002804: PUSH2 0x233a 00002807: JUMP 00002808: JUMPDEST 00002809: JUMPDEST 0000280a: PUSH1 0x00 0000280c: PUSH2 0x2817 0000280f: DUP5 00002810: DUP3 00002811: DUP6 00002812: ADD 00002813: PUSH2 0x2590 00002816: JUMP 00002817: JUMPDEST 00002818: SWAP2 00002819: POP 0000281a: POP 0000281b: SWAP3 0000281c: SWAP2 0000281d: POP 0000281e: POP 0000281f: JUMP 00002820: JUMPDEST 00002821: PUSH2 0x2829 00002824: DUP2 00002825: PUSH2 0x23c9 00002828: JUMP 00002829: JUMPDEST 0000282a: DUP2 0000282b: EQ 0000282c: PUSH2 0x2834 0000282f: JUMPI 00002830: PUSH1 0x00 00002832: DUP1 00002833: REVERT 00002834: JUMPDEST 00002835: POP 00002836: JUMP 00002837: JUMPDEST 00002838: PUSH1 0x00 0000283a: DUP2 0000283b: CALLDATALOAD 0000283c: SWAP1 0000283d: POP 0000283e: PUSH2 0x2846 00002841: DUP2 00002842: PUSH2 0x2820 00002845: JUMP 00002846: JUMPDEST 00002847: SWAP3 00002848: SWAP2 00002849: POP 0000284a: POP 0000284b: JUMP 0000284c: JUMPDEST 0000284d: PUSH1 0x00 0000284f: DUP1 00002850: PUSH1 0x40 00002852: DUP4 00002853: DUP6 00002854: SUB 00002855: SLT 00002856: ISZERO 00002857: PUSH2 0x2863 0000285a: JUMPI 0000285b: PUSH2 0x2862 0000285e: PUSH2 0x233a 00002861: JUMP 00002862: JUMPDEST 00002863: JUMPDEST 00002864: PUSH1 0x00 00002866: PUSH2 0x2871 00002869: DUP6 0000286a: DUP3 0000286b: DUP7 0000286c: ADD 0000286d: PUSH2 0x2590 00002870: JUMP 00002871: JUMPDEST 00002872: SWAP3 00002873: POP 00002874: POP 00002875: PUSH1 0x20 00002877: PUSH2 0x2882 0000287a: DUP6 0000287b: DUP3 0000287c: DUP7 0000287d: ADD 0000287e: PUSH2 0x2837 00002881: JUMP 00002882: JUMPDEST 00002883: SWAP2 00002884: POP 00002885: POP 00002886: SWAP3 00002887: POP 00002888: SWAP3 00002889: SWAP1 0000288a: POP 0000288b: JUMP 0000288c: JUMPDEST 0000288d: PUSH1 0x00 0000288f: PUSH8 0xffffffffffffffff 00002898: DUP3 00002899: GT 0000289a: ISZERO 0000289b: PUSH2 0x28a7 0000289e: JUMPI 0000289f: PUSH2 0x28a6 000028a2: PUSH2 0x266c 000028a5: JUMP 000028a6: JUMPDEST 000028a7: JUMPDEST 000028a8: PUSH2 0x28b0 000028ab: DUP3 000028ac: PUSH2 0x244e 000028af: JUMP 000028b0: JUMPDEST 000028b1: SWAP1 000028b2: POP 000028b3: PUSH1 0x20 000028b5: DUP2 000028b6: ADD 000028b7: SWAP1 000028b8: POP 000028b9: SWAP2 000028ba: SWAP1 000028bb: POP 000028bc: JUMP 000028bd: JUMPDEST 000028be: PUSH1 0x00 000028c0: PUSH2 0x28d0 000028c3: PUSH2 0x28cb 000028c6: DUP5 000028c7: PUSH2 0x288c 000028ca: JUMP 000028cb: JUMPDEST 000028cc: PUSH2 0x26cc 000028cf: JUMP 000028d0: JUMPDEST 000028d1: SWAP1 000028d2: POP 000028d3: DUP3 000028d4: DUP2 000028d5: MSTORE 000028d6: PUSH1 0x20 000028d8: DUP2 000028d9: ADD 000028da: DUP5 000028db: DUP5 000028dc: DUP5 000028dd: ADD 000028de: GT 000028df: ISZERO 000028e0: PUSH2 0x28ec 000028e3: JUMPI 000028e4: PUSH2 0x28eb 000028e7: PUSH2 0x2667 000028ea: JUMP 000028eb: JUMPDEST 000028ec: JUMPDEST 000028ed: PUSH2 0x28f7 000028f0: DUP5 000028f1: DUP3 000028f2: DUP6 000028f3: PUSH2 0x2718 000028f6: JUMP 000028f7: JUMPDEST 000028f8: POP 000028f9: SWAP4 000028fa: SWAP3 000028fb: POP 000028fc: POP 000028fd: POP 000028fe: JUMP 000028ff: JUMPDEST 00002900: PUSH1 0x00 00002902: DUP3 00002903: PUSH1 0x1f 00002905: DUP4 00002906: ADD 00002907: SLT 00002908: PUSH2 0x2914 0000290b: JUMPI 0000290c: PUSH2 0x2913 0000290f: PUSH2 0x2662 00002912: JUMP 00002913: JUMPDEST 00002914: JUMPDEST 00002915: DUP2 00002916: CALLDATALOAD 00002917: PUSH2 0x2924 0000291a: DUP5 0000291b: DUP3 0000291c: PUSH1 0x20 0000291e: DUP7 0000291f: ADD 00002920: PUSH2 0x28bd 00002923: JUMP 00002924: JUMPDEST 00002925: SWAP2 00002926: POP 00002927: POP 00002928: SWAP3 00002929: SWAP2 0000292a: POP 0000292b: POP 0000292c: JUMP 0000292d: JUMPDEST 0000292e: PUSH1 0x00 00002930: DUP1 00002931: PUSH1 0x00 00002933: DUP1 00002934: PUSH1 0x80 00002936: DUP6 00002937: DUP8 00002938: SUB 00002939: SLT 0000293a: ISZERO 0000293b: PUSH2 0x2947 0000293e: JUMPI 0000293f: PUSH2 0x2946 00002942: PUSH2 0x233a 00002945: JUMP 00002946: JUMPDEST 00002947: JUMPDEST 00002948: PUSH1 0x00 0000294a: PUSH2 0x2955 0000294d: DUP8 0000294e: DUP3 0000294f: DUP9 00002950: ADD 00002951: PUSH2 0x2590 00002954: JUMP 00002955: JUMPDEST 00002956: SWAP5 00002957: POP 00002958: POP 00002959: PUSH1 0x20 0000295b: PUSH2 0x2966 0000295e: DUP8 0000295f: DUP3 00002960: DUP9 00002961: ADD 00002962: PUSH2 0x2590 00002965: JUMP 00002966: JUMPDEST 00002967: SWAP4 00002968: POP 00002969: POP 0000296a: PUSH1 0x40 0000296c: PUSH2 0x2977 0000296f: DUP8 00002970: DUP3 00002971: DUP9 00002972: ADD 00002973: PUSH2 0x24db 00002976: JUMP 00002977: JUMPDEST 00002978: SWAP3 00002979: POP 0000297a: POP 0000297b: PUSH1 0x60 0000297d: DUP6 0000297e: ADD 0000297f: CALLDATALOAD 00002980: PUSH8 0xffffffffffffffff 00002989: DUP2 0000298a: GT 0000298b: ISZERO 0000298c: PUSH2 0x2998 0000298f: JUMPI 00002990: PUSH2 0x2997 00002993: PUSH2 0x233f 00002996: JUMP 00002997: JUMPDEST 00002998: JUMPDEST 00002999: PUSH2 0x29a4 0000299c: DUP8 0000299d: DUP3 0000299e: DUP9 0000299f: ADD 000029a0: PUSH2 0x28ff 000029a3: JUMP 000029a4: JUMPDEST 000029a5: SWAP2 000029a6: POP 000029a7: POP 000029a8: SWAP3 000029a9: SWAP6 000029aa: SWAP2 000029ab: SWAP5 000029ac: POP 000029ad: SWAP3 000029ae: POP 000029af: JUMP 000029b0: JUMPDEST 000029b1: PUSH1 0x00 000029b3: DUP1 000029b4: PUSH1 0x40 000029b6: DUP4 000029b7: DUP6 000029b8: SUB 000029b9: SLT 000029ba: ISZERO 000029bb: PUSH2 0x29c7 000029be: JUMPI 000029bf: PUSH2 0x29c6 000029c2: PUSH2 0x233a 000029c5: JUMP 000029c6: JUMPDEST 000029c7: JUMPDEST 000029c8: PUSH1 0x00 000029ca: PUSH2 0x29d5 000029cd: DUP6 000029ce: DUP3 000029cf: DUP7 000029d0: ADD 000029d1: PUSH2 0x2590 000029d4: JUMP 000029d5: JUMPDEST 000029d6: SWAP3 000029d7: POP 000029d8: POP 000029d9: PUSH1 0x20 000029db: PUSH2 0x29e6 000029de: DUP6 000029df: DUP3 000029e0: DUP7 000029e1: ADD 000029e2: PUSH2 0x2590 000029e5: JUMP 000029e6: JUMPDEST 000029e7: SWAP2 000029e8: POP 000029e9: POP 000029ea: SWAP3 000029eb: POP 000029ec: SWAP3 000029ed: SWAP1 000029ee: POP 000029ef: JUMP 000029f0: JUMPDEST 000029f1: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002a12: PUSH1 0x00 00002a14: MSTORE 00002a15: PUSH1 0x22 00002a17: PUSH1 0x04 00002a19: MSTORE 00002a1a: PUSH1 0x24 00002a1c: PUSH1 0x00 00002a1e: REVERT 00002a1f: JUMPDEST 00002a20: PUSH1 0x00 00002a22: PUSH1 0x02 00002a24: DUP3 00002a25: DIV 00002a26: SWAP1 00002a27: POP 00002a28: PUSH1 0x01 00002a2a: DUP3 00002a2b: AND 00002a2c: DUP1 00002a2d: PUSH2 0x2a37 00002a30: JUMPI 00002a31: PUSH1 0x7f 00002a33: DUP3 00002a34: AND 00002a35: SWAP2 00002a36: POP 00002a37: JUMPDEST 00002a38: PUSH1 0x20 00002a3a: DUP3 00002a3b: LT 00002a3c: DUP2 00002a3d: EQ 00002a3e: ISZERO 00002a3f: PUSH2 0x2a4b 00002a42: JUMPI 00002a43: PUSH2 0x2a4a 00002a46: PUSH2 0x29f0 00002a49: JUMP 00002a4a: JUMPDEST 00002a4b: JUMPDEST 00002a4c: POP 00002a4d: SWAP2 00002a4e: SWAP1 00002a4f: POP 00002a50: JUMP 00002a51: JUMPDEST 00002a52: PUSH32 0x4552433732313a20617070726f76656420717565727920666f72206e6f6e6578 00002a73: PUSH1 0x00 00002a75: DUP3 00002a76: ADD 00002a77: MSTORE 00002a78: PUSH32 0x697374656e7420746f6b656e0000000000000000000000000000000000000000 00002a99: PUSH1 0x20 00002a9b: DUP3 00002a9c: ADD 00002a9d: MSTORE 00002a9e: POP 00002a9f: JUMP 00002aa0: JUMPDEST 00002aa1: PUSH1 0x00 00002aa3: PUSH2 0x2aad 00002aa6: PUSH1 0x2c 00002aa8: DUP4 00002aa9: PUSH2 0x240a 00002aac: JUMP 00002aad: JUMPDEST 00002aae: SWAP2 00002aaf: POP 00002ab0: PUSH2 0x2ab8 00002ab3: DUP3 00002ab4: PUSH2 0x2a51 00002ab7: JUMP 00002ab8: JUMPDEST 00002ab9: PUSH1 0x40 00002abb: DUP3 00002abc: ADD 00002abd: SWAP1 00002abe: POP 00002abf: SWAP2 00002ac0: SWAP1 00002ac1: POP 00002ac2: JUMP 00002ac3: JUMPDEST 00002ac4: PUSH1 0x00 00002ac6: PUSH1 0x20 00002ac8: DUP3 00002ac9: ADD 00002aca: SWAP1 00002acb: POP 00002acc: DUP2 00002acd: DUP2 00002ace: SUB 00002acf: PUSH1 0x00 00002ad1: DUP4 00002ad2: ADD 00002ad3: MSTORE 00002ad4: PUSH2 0x2adc 00002ad7: DUP2 00002ad8: PUSH2 0x2aa0 00002adb: JUMP 00002adc: JUMPDEST 00002add: SWAP1 00002ade: POP 00002adf: SWAP2 00002ae0: SWAP1 00002ae1: POP 00002ae2: JUMP 00002ae3: JUMPDEST 00002ae4: PUSH32 0x4552433732313a20617070726f76616c20746f2063757272656e74206f776e65 00002b05: PUSH1 0x00 00002b07: DUP3 00002b08: ADD 00002b09: MSTORE 00002b0a: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 00002b2b: PUSH1 0x20 00002b2d: DUP3 00002b2e: ADD 00002b2f: MSTORE 00002b30: POP 00002b31: JUMP 00002b32: JUMPDEST 00002b33: PUSH1 0x00 00002b35: PUSH2 0x2b3f 00002b38: PUSH1 0x21 00002b3a: DUP4 00002b3b: PUSH2 0x240a 00002b3e: JUMP 00002b3f: JUMPDEST 00002b40: SWAP2 00002b41: POP 00002b42: PUSH2 0x2b4a 00002b45: DUP3 00002b46: PUSH2 0x2ae3 00002b49: JUMP 00002b4a: JUMPDEST 00002b4b: PUSH1 0x40 00002b4d: DUP3 00002b4e: ADD 00002b4f: SWAP1 00002b50: POP 00002b51: SWAP2 00002b52: SWAP1 00002b53: POP 00002b54: JUMP 00002b55: JUMPDEST 00002b56: PUSH1 0x00 00002b58: PUSH1 0x20 00002b5a: DUP3 00002b5b: ADD 00002b5c: SWAP1 00002b5d: POP 00002b5e: DUP2 00002b5f: DUP2 00002b60: SUB 00002b61: PUSH1 0x00 00002b63: DUP4 00002b64: ADD 00002b65: MSTORE 00002b66: PUSH2 0x2b6e 00002b69: DUP2 00002b6a: PUSH2 0x2b32 00002b6d: JUMP 00002b6e: JUMPDEST 00002b6f: SWAP1 00002b70: POP 00002b71: SWAP2 00002b72: SWAP1 00002b73: POP 00002b74: JUMP 00002b75: JUMPDEST 00002b76: PUSH32 0x4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77 00002b97: PUSH1 0x00 00002b99: DUP3 00002b9a: ADD 00002b9b: MSTORE 00002b9c: PUSH32 0x6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000 00002bbd: PUSH1 0x20 00002bbf: DUP3 00002bc0: ADD 00002bc1: MSTORE 00002bc2: POP 00002bc3: JUMP 00002bc4: JUMPDEST 00002bc5: PUSH1 0x00 00002bc7: PUSH2 0x2bd1 00002bca: PUSH1 0x38 00002bcc: DUP4 00002bcd: PUSH2 0x240a 00002bd0: JUMP 00002bd1: JUMPDEST 00002bd2: SWAP2 00002bd3: POP 00002bd4: PUSH2 0x2bdc 00002bd7: DUP3 00002bd8: PUSH2 0x2b75 00002bdb: JUMP 00002bdc: JUMPDEST 00002bdd: PUSH1 0x40 00002bdf: DUP3 00002be0: ADD 00002be1: SWAP1 00002be2: POP 00002be3: SWAP2 00002be4: SWAP1 00002be5: POP 00002be6: JUMP 00002be7: JUMPDEST 00002be8: PUSH1 0x00 00002bea: PUSH1 0x20 00002bec: DUP3 00002bed: ADD 00002bee: SWAP1 00002bef: POP 00002bf0: DUP2 00002bf1: DUP2 00002bf2: SUB 00002bf3: PUSH1 0x00 00002bf5: DUP4 00002bf6: ADD 00002bf7: MSTORE 00002bf8: PUSH2 0x2c00 00002bfb: DUP2 00002bfc: PUSH2 0x2bc4 00002bff: JUMP 00002c00: JUMPDEST 00002c01: SWAP1 00002c02: POP 00002c03: SWAP2 00002c04: SWAP1 00002c05: POP 00002c06: JUMP 00002c07: JUMPDEST 00002c08: PUSH32 0x4552433732313a207472616e736665722063616c6c6572206973206e6f74206f 00002c29: PUSH1 0x00 00002c2b: DUP3 00002c2c: ADD 00002c2d: MSTORE 00002c2e: PUSH32 0x776e6572206e6f7220617070726f766564000000000000000000000000000000 00002c4f: PUSH1 0x20 00002c51: DUP3 00002c52: ADD 00002c53: MSTORE 00002c54: POP 00002c55: JUMP 00002c56: JUMPDEST 00002c57: PUSH1 0x00 00002c59: PUSH2 0x2c63 00002c5c: PUSH1 0x31 00002c5e: DUP4 00002c5f: PUSH2 0x240a 00002c62: JUMP 00002c63: JUMPDEST 00002c64: SWAP2 00002c65: POP 00002c66: PUSH2 0x2c6e 00002c69: DUP3 00002c6a: PUSH2 0x2c07 00002c6d: JUMP 00002c6e: JUMPDEST 00002c6f: PUSH1 0x40 00002c71: DUP3 00002c72: ADD 00002c73: SWAP1 00002c74: POP 00002c75: SWAP2 00002c76: SWAP1 00002c77: POP 00002c78: JUMP 00002c79: JUMPDEST 00002c7a: PUSH1 0x00 00002c7c: PUSH1 0x20 00002c7e: DUP3 00002c7f: ADD 00002c80: SWAP1 00002c81: POP 00002c82: DUP2 00002c83: DUP2 00002c84: SUB 00002c85: PUSH1 0x00 00002c87: DUP4 00002c88: ADD 00002c89: MSTORE 00002c8a: PUSH2 0x2c92 00002c8d: DUP2 00002c8e: PUSH2 0x2c56 00002c91: JUMP 00002c92: JUMPDEST 00002c93: SWAP1 00002c94: POP 00002c95: SWAP2 00002c96: SWAP1 00002c97: POP 00002c98: JUMP 00002c99: JUMPDEST 00002c9a: PUSH32 0x455243373231456e756d657261626c653a206f776e657220696e646578206f75 00002cbb: PUSH1 0x00 00002cbd: DUP3 00002cbe: ADD 00002cbf: MSTORE 00002cc0: PUSH32 0x74206f6620626f756e6473000000000000000000000000000000000000000000 00002ce1: PUSH1 0x20 00002ce3: DUP3 00002ce4: ADD 00002ce5: MSTORE 00002ce6: POP 00002ce7: JUMP 00002ce8: JUMPDEST 00002ce9: PUSH1 0x00 00002ceb: PUSH2 0x2cf5 00002cee: PUSH1 0x2b 00002cf0: DUP4 00002cf1: PUSH2 0x240a 00002cf4: JUMP 00002cf5: JUMPDEST 00002cf6: SWAP2 00002cf7: POP 00002cf8: PUSH2 0x2d00 00002cfb: DUP3 00002cfc: PUSH2 0x2c99 00002cff: JUMP 00002d00: JUMPDEST 00002d01: PUSH1 0x40 00002d03: DUP3 00002d04: ADD 00002d05: SWAP1 00002d06: POP 00002d07: SWAP2 00002d08: SWAP1 00002d09: POP 00002d0a: JUMP 00002d0b: JUMPDEST 00002d0c: PUSH1 0x00 00002d0e: PUSH1 0x20 00002d10: DUP3 00002d11: ADD 00002d12: SWAP1 00002d13: POP 00002d14: DUP2 00002d15: DUP2 00002d16: SUB 00002d17: PUSH1 0x00 00002d19: DUP4 00002d1a: ADD 00002d1b: MSTORE 00002d1c: PUSH2 0x2d24 00002d1f: DUP2 00002d20: PUSH2 0x2ce8 00002d23: JUMP 00002d24: JUMPDEST 00002d25: SWAP1 00002d26: POP 00002d27: SWAP2 00002d28: SWAP1 00002d29: POP 00002d2a: JUMP 00002d2b: JUMPDEST 00002d2c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002d4d: PUSH1 0x00 00002d4f: MSTORE 00002d50: PUSH1 0x12 00002d52: PUSH1 0x04 00002d54: MSTORE 00002d55: PUSH1 0x24 00002d57: PUSH1 0x00 00002d59: REVERT 00002d5a: JUMPDEST 00002d5b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002d7c: PUSH1 0x00 00002d7e: MSTORE 00002d7f: PUSH1 0x11 00002d81: PUSH1 0x04 00002d83: MSTORE 00002d84: PUSH1 0x24 00002d86: PUSH1 0x00 00002d88: REVERT 00002d89: JUMPDEST 00002d8a: PUSH1 0x00 00002d8c: PUSH2 0x2d94 00002d8f: DUP3 00002d90: PUSH2 0x24ba 00002d93: JUMP 00002d94: JUMPDEST 00002d95: SWAP2 00002d96: POP 00002d97: PUSH2 0x2d9f 00002d9a: DUP4 00002d9b: PUSH2 0x24ba 00002d9e: JUMP 00002d9f: JUMPDEST 00002da0: SWAP3 00002da1: POP 00002da2: DUP3 00002da3: PUSH2 0x2daf 00002da6: JUMPI 00002da7: PUSH2 0x2dae 00002daa: PUSH2 0x2d2b 00002dad: JUMP 00002dae: JUMPDEST 00002daf: JUMPDEST 00002db0: DUP3 00002db1: DUP3 00002db2: DIV 00002db3: SWAP1 00002db4: POP 00002db5: SWAP3 00002db6: SWAP2 00002db7: POP 00002db8: POP 00002db9: JUMP 00002dba: JUMPDEST 00002dbb: PUSH1 0x00 00002dbd: PUSH2 0x2dc5 00002dc0: DUP3 00002dc1: PUSH2 0x24ba 00002dc4: JUMP 00002dc5: JUMPDEST 00002dc6: SWAP2 00002dc7: POP 00002dc8: PUSH2 0x2dd0 00002dcb: DUP4 00002dcc: PUSH2 0x24ba 00002dcf: JUMP 00002dd0: JUMPDEST 00002dd1: SWAP3 00002dd2: POP 00002dd3: DUP3 00002dd4: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002df5: SUB 00002df6: DUP3 00002df7: GT 00002df8: ISZERO 00002df9: PUSH2 0x2e05 00002dfc: JUMPI 00002dfd: PUSH2 0x2e04 00002e00: PUSH2 0x2d5a 00002e03: JUMP 00002e04: JUMPDEST 00002e05: JUMPDEST 00002e06: DUP3 00002e07: DUP3 00002e08: ADD 00002e09: SWAP1 00002e0a: POP 00002e0b: SWAP3 00002e0c: SWAP2 00002e0d: POP 00002e0e: POP 00002e0f: JUMP 00002e10: JUMPDEST 00002e11: PUSH1 0x00 00002e13: DUP2 00002e14: SWAP1 00002e15: POP 00002e16: SWAP3 00002e17: SWAP2 00002e18: POP 00002e19: POP 00002e1a: JUMP 00002e1b: JUMPDEST 00002e1c: POP 00002e1d: JUMP 00002e1e: JUMPDEST 00002e1f: PUSH1 0x00 00002e21: PUSH2 0x2e2b 00002e24: PUSH1 0x00 00002e26: DUP4 00002e27: PUSH2 0x2e10 00002e2a: JUMP 00002e2b: JUMPDEST 00002e2c: SWAP2 00002e2d: POP 00002e2e: PUSH2 0x2e36 00002e31: DUP3 00002e32: PUSH2 0x2e1b 00002e35: JUMP 00002e36: JUMPDEST 00002e37: PUSH1 0x00 00002e39: DUP3 00002e3a: ADD 00002e3b: SWAP1 00002e3c: POP 00002e3d: SWAP2 00002e3e: SWAP1 00002e3f: POP 00002e40: JUMP 00002e41: JUMPDEST 00002e42: PUSH1 0x00 00002e44: PUSH2 0x2e4c 00002e47: DUP3 00002e48: PUSH2 0x2e1e 00002e4b: JUMP 00002e4c: JUMPDEST 00002e4d: SWAP2 00002e4e: POP 00002e4f: DUP2 00002e50: SWAP1 00002e51: POP 00002e52: SWAP2 00002e53: SWAP1 00002e54: POP 00002e55: JUMP 00002e56: JUMPDEST 00002e57: PUSH1 0x00 00002e59: DUP2 00002e5a: SWAP1 00002e5b: POP 00002e5c: DUP2 00002e5d: PUSH1 0x00 00002e5f: MSTORE 00002e60: PUSH1 0x20 00002e62: PUSH1 0x00 00002e64: KECCAK256 00002e65: SWAP1 00002e66: POP 00002e67: SWAP2 00002e68: SWAP1 00002e69: POP 00002e6a: JUMP 00002e6b: JUMPDEST 00002e6c: PUSH1 0x00 00002e6e: DUP2 00002e6f: SLOAD 00002e70: PUSH2 0x2e78 00002e73: DUP2 00002e74: PUSH2 0x2a1f 00002e77: JUMP 00002e78: JUMPDEST 00002e79: PUSH2 0x2e82 00002e7c: DUP2 00002e7d: DUP7 00002e7e: PUSH2 0x2e10 00002e81: JUMP 00002e82: JUMPDEST 00002e83: SWAP5 00002e84: POP 00002e85: PUSH1 0x01 00002e87: DUP3 00002e88: AND 00002e89: PUSH1 0x00 00002e8b: DUP2 00002e8c: EQ 00002e8d: PUSH2 0x2e9d 00002e90: JUMPI 00002e91: PUSH1 0x01 00002e93: DUP2 00002e94: EQ 00002e95: PUSH2 0x2eae 00002e98: JUMPI 00002e99: PUSH2 0x2ee1 00002e9c: JUMP 00002e9d: JUMPDEST 00002e9e: PUSH1 0xff 00002ea0: NOT 00002ea1: DUP4 00002ea2: AND 00002ea3: DUP7 00002ea4: MSTORE 00002ea5: DUP2 00002ea6: DUP7 00002ea7: ADD 00002ea8: SWAP4 00002ea9: POP 00002eaa: PUSH2 0x2ee1 00002ead: JUMP 00002eae: JUMPDEST 00002eaf: PUSH2 0x2eb7 00002eb2: DUP6 00002eb3: PUSH2 0x2e56 00002eb6: JUMP 00002eb7: JUMPDEST 00002eb8: PUSH1 0x00 00002eba: JUMPDEST 00002ebb: DUP4 00002ebc: DUP2 00002ebd: LT 00002ebe: ISZERO 00002ebf: PUSH2 0x2ed9 00002ec2: JUMPI 00002ec3: DUP2 00002ec4: SLOAD 00002ec5: DUP2 00002ec6: DUP10 00002ec7: ADD 00002ec8: MSTORE 00002ec9: PUSH1 0x01 00002ecb: DUP3 00002ecc: ADD 00002ecd: SWAP2 00002ece: POP 00002ecf: PUSH1 0x20 00002ed1: DUP2 00002ed2: ADD 00002ed3: SWAP1 00002ed4: POP 00002ed5: PUSH2 0x2eba 00002ed8: JUMP 00002ed9: JUMPDEST 00002eda: DUP4 00002edb: DUP9 00002edc: ADD 00002edd: SWAP6 00002ede: POP 00002edf: POP 00002ee0: POP 00002ee1: JUMPDEST 00002ee2: POP 00002ee3: POP 00002ee4: POP 00002ee5: SWAP3 00002ee6: SWAP2 00002ee7: POP 00002ee8: POP 00002ee9: JUMP 00002eea: JUMPDEST 00002eeb: PUSH1 0x00 00002eed: PUSH2 0x2ef6 00002ef0: DUP3 00002ef1: DUP5 00002ef2: PUSH2 0x2e6b 00002ef5: JUMP 00002ef6: JUMPDEST 00002ef7: SWAP2 00002ef8: POP 00002ef9: DUP2 00002efa: SWAP1 00002efb: POP 00002efc: SWAP3 00002efd: SWAP2 00002efe: POP 00002eff: POP 00002f00: JUMP 00002f01: JUMPDEST 00002f02: PUSH32 0x455243373231456e756d657261626c653a20676c6f62616c20696e646578206f 00002f23: PUSH1 0x00 00002f25: DUP3 00002f26: ADD 00002f27: MSTORE 00002f28: PUSH32 0x7574206f6620626f756e64730000000000000000000000000000000000000000 00002f49: PUSH1 0x20 00002f4b: DUP3 00002f4c: ADD 00002f4d: MSTORE 00002f4e: POP 00002f4f: JUMP 00002f50: JUMPDEST 00002f51: PUSH1 0x00 00002f53: PUSH2 0x2f5d 00002f56: PUSH1 0x2c 00002f58: DUP4 00002f59: PUSH2 0x240a 00002f5c: JUMP 00002f5d: JUMPDEST 00002f5e: SWAP2 00002f5f: POP 00002f60: PUSH2 0x2f68 00002f63: DUP3 00002f64: PUSH2 0x2f01 00002f67: JUMP 00002f68: JUMPDEST 00002f69: PUSH1 0x40 00002f6b: DUP3 00002f6c: ADD 00002f6d: SWAP1 00002f6e: POP 00002f6f: SWAP2 00002f70: SWAP1 00002f71: POP 00002f72: JUMP 00002f73: JUMPDEST 00002f74: PUSH1 0x00 00002f76: PUSH1 0x20 00002f78: DUP3 00002f79: ADD 00002f7a: SWAP1 00002f7b: POP 00002f7c: DUP2 00002f7d: DUP2 00002f7e: SUB 00002f7f: PUSH1 0x00 00002f81: DUP4 00002f82: ADD 00002f83: MSTORE 00002f84: PUSH2 0x2f8c 00002f87: DUP2 00002f88: PUSH2 0x2f50 00002f8b: JUMP 00002f8c: JUMPDEST 00002f8d: SWAP1 00002f8e: POP 00002f8f: SWAP2 00002f90: SWAP1 00002f91: POP 00002f92: JUMP 00002f93: JUMPDEST 00002f94: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002fb5: PUSH1 0x00 00002fb7: MSTORE 00002fb8: PUSH1 0x32 00002fba: PUSH1 0x04 00002fbc: MSTORE 00002fbd: PUSH1 0x24 00002fbf: PUSH1 0x00 00002fc1: REVERT 00002fc2: JUMPDEST 00002fc3: PUSH32 0x4552433732313a206f776e657220717565727920666f72206e6f6e6578697374 00002fe4: PUSH1 0x00 00002fe6: DUP3 00002fe7: ADD 00002fe8: MSTORE 00002fe9: PUSH32 0x656e7420746f6b656e0000000000000000000000000000000000000000000000 0000300a: PUSH1 0x20 0000300c: DUP3 0000300d: ADD 0000300e: MSTORE 0000300f: POP 00003010: JUMP 00003011: JUMPDEST 00003012: PUSH1 0x00 00003014: PUSH2 0x301e 00003017: PUSH1 0x29 00003019: DUP4 0000301a: PUSH2 0x240a 0000301d: JUMP 0000301e: JUMPDEST 0000301f: SWAP2 00003020: POP 00003021: PUSH2 0x3029 00003024: DUP3 00003025: PUSH2 0x2fc2 00003028: JUMP 00003029: JUMPDEST 0000302a: PUSH1 0x40 0000302c: DUP3 0000302d: ADD 0000302e: SWAP1 0000302f: POP 00003030: SWAP2 00003031: SWAP1 00003032: POP 00003033: JUMP 00003034: JUMPDEST 00003035: PUSH1 0x00 00003037: PUSH1 0x20 00003039: DUP3 0000303a: ADD 0000303b: SWAP1 0000303c: POP 0000303d: DUP2 0000303e: DUP2 0000303f: SUB 00003040: PUSH1 0x00 00003042: DUP4 00003043: ADD 00003044: MSTORE 00003045: PUSH2 0x304d 00003048: DUP2 00003049: PUSH2 0x3011 0000304c: JUMP 0000304d: JUMPDEST 0000304e: SWAP1 0000304f: POP 00003050: SWAP2 00003051: SWAP1 00003052: POP 00003053: JUMP 00003054: JUMPDEST 00003055: PUSH32 0x4552433732313a2062616c616e636520717565727920666f7220746865207a65 00003076: PUSH1 0x00 00003078: DUP3 00003079: ADD 0000307a: MSTORE 0000307b: PUSH32 0x726f206164647265737300000000000000000000000000000000000000000000 0000309c: PUSH1 0x20 0000309e: DUP3 0000309f: ADD 000030a0: MSTORE 000030a1: POP 000030a2: JUMP 000030a3: JUMPDEST 000030a4: PUSH1 0x00 000030a6: PUSH2 0x30b0 000030a9: PUSH1 0x2a 000030ab: DUP4 000030ac: PUSH2 0x240a 000030af: JUMP 000030b0: JUMPDEST 000030b1: SWAP2 000030b2: POP 000030b3: PUSH2 0x30bb 000030b6: DUP3 000030b7: PUSH2 0x3054 000030ba: JUMP 000030bb: JUMPDEST 000030bc: PUSH1 0x40 000030be: DUP3 000030bf: ADD 000030c0: SWAP1 000030c1: POP 000030c2: SWAP2 000030c3: SWAP1 000030c4: POP 000030c5: JUMP 000030c6: JUMPDEST 000030c7: PUSH1 0x00 000030c9: PUSH1 0x20 000030cb: DUP3 000030cc: ADD 000030cd: SWAP1 000030ce: POP 000030cf: DUP2 000030d0: DUP2 000030d1: SUB 000030d2: PUSH1 0x00 000030d4: DUP4 000030d5: ADD 000030d6: MSTORE 000030d7: PUSH2 0x30df 000030da: DUP2 000030db: PUSH2 0x30a3 000030de: JUMP 000030df: JUMPDEST 000030e0: SWAP1 000030e1: POP 000030e2: SWAP2 000030e3: SWAP1 000030e4: POP 000030e5: JUMP 000030e6: JUMPDEST 000030e7: PUSH32 0x4552433732313a20617070726f766520746f2063616c6c657200000000000000 00003108: PUSH1 0x00 0000310a: DUP3 0000310b: ADD 0000310c: MSTORE 0000310d: POP 0000310e: JUMP 0000310f: JUMPDEST 00003110: PUSH1 0x00 00003112: PUSH2 0x311c 00003115: PUSH1 0x19 00003117: DUP4 00003118: PUSH2 0x240a 0000311b: JUMP 0000311c: JUMPDEST 0000311d: SWAP2 0000311e: POP 0000311f: PUSH2 0x3127 00003122: DUP3 00003123: PUSH2 0x30e6 00003126: JUMP 00003127: JUMPDEST 00003128: PUSH1 0x20 0000312a: DUP3 0000312b: ADD 0000312c: SWAP1 0000312d: POP 0000312e: SWAP2 0000312f: SWAP1 00003130: POP 00003131: JUMP 00003132: JUMPDEST 00003133: PUSH1 0x00 00003135: PUSH1 0x20 00003137: DUP3 00003138: ADD 00003139: SWAP1 0000313a: POP 0000313b: DUP2 0000313c: DUP2 0000313d: SUB 0000313e: PUSH1 0x00 00003140: DUP4 00003141: ADD 00003142: MSTORE 00003143: PUSH2 0x314b 00003146: DUP2 00003147: PUSH2 0x310f 0000314a: JUMP 0000314b: JUMPDEST 0000314c: SWAP1 0000314d: POP 0000314e: SWAP2 0000314f: SWAP1 00003150: POP 00003151: JUMP 00003152: JUMPDEST 00003153: PUSH1 0x00 00003155: PUSH2 0x315d 00003158: DUP3 00003159: PUSH2 0x24ba 0000315c: JUMP 0000315d: JUMPDEST 0000315e: SWAP2 0000315f: POP 00003160: PUSH2 0x3168 00003163: DUP4 00003164: PUSH2 0x24ba 00003167: JUMP 00003168: JUMPDEST 00003169: SWAP3 0000316a: POP 0000316b: DUP3 0000316c: DUP3 0000316d: LT 0000316e: ISZERO 0000316f: PUSH2 0x317b 00003172: JUMPI 00003173: PUSH2 0x317a 00003176: PUSH2 0x2d5a 00003179: JUMP 0000317a: JUMPDEST 0000317b: JUMPDEST 0000317c: DUP3 0000317d: DUP3 0000317e: SUB 0000317f: SWAP1 00003180: POP 00003181: SWAP3 00003182: SWAP2 00003183: POP 00003184: POP 00003185: JUMP 00003186: JUMPDEST 00003187: PUSH1 0x00 00003189: PUSH2 0x3191 0000318c: DUP3 0000318d: PUSH2 0x24ba 00003190: JUMP 00003191: JUMPDEST 00003192: SWAP2 00003193: POP 00003194: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000031b5: DUP3 000031b6: EQ 000031b7: ISZERO 000031b8: PUSH2 0x31c4 000031bb: JUMPI 000031bc: PUSH2 0x31c3 000031bf: PUSH2 0x2d5a 000031c2: JUMP 000031c3: JUMPDEST 000031c4: JUMPDEST 000031c5: PUSH1 0x01 000031c7: DUP3 000031c8: ADD 000031c9: SWAP1 000031ca: POP 000031cb: SWAP2 000031cc: SWAP1 000031cd: POP 000031ce: JUMP 000031cf: JUMPDEST 000031d0: PUSH1 0x00 000031d2: PUSH2 0x31da 000031d5: DUP3 000031d6: PUSH2 0x23ff 000031d9: JUMP 000031da: JUMPDEST 000031db: PUSH2 0x31e4 000031de: DUP2 000031df: DUP6 000031e0: PUSH2 0x2e10 000031e3: JUMP 000031e4: JUMPDEST 000031e5: SWAP4 000031e6: POP 000031e7: PUSH2 0x31f4 000031ea: DUP2 000031eb: DUP6 000031ec: PUSH1 0x20 000031ee: DUP7 000031ef: ADD 000031f0: PUSH2 0x241b 000031f3: JUMP 000031f4: JUMPDEST 000031f5: DUP1 000031f6: DUP5 000031f7: ADD 000031f8: SWAP2 000031f9: POP 000031fa: POP 000031fb: SWAP3 000031fc: SWAP2 000031fd: POP 000031fe: POP 000031ff: JUMP 00003200: JUMPDEST 00003201: PUSH1 0x00 00003203: PUSH2 0x320c 00003206: DUP3 00003207: DUP16 00003208: PUSH2 0x2e6b 0000320b: JUMP 0000320c: JUMPDEST 0000320d: SWAP2 0000320e: POP 0000320f: PUSH2 0x3218 00003212: DUP3 00003213: DUP15 00003214: PUSH2 0x2e6b 00003217: JUMP 00003218: JUMPDEST 00003219: SWAP2 0000321a: POP 0000321b: PUSH2 0x3224 0000321e: DUP3 0000321f: DUP14 00003220: PUSH2 0x31cf 00003223: JUMP 00003224: JUMPDEST 00003225: SWAP2 00003226: POP 00003227: PUSH2 0x3230 0000322a: DUP3 0000322b: DUP13 0000322c: PUSH2 0x2e6b 0000322f: JUMP 00003230: JUMPDEST 00003231: SWAP2 00003232: POP 00003233: PUSH2 0x323c 00003236: DUP3 00003237: DUP12 00003238: PUSH2 0x2e6b 0000323b: JUMP 0000323c: JUMPDEST 0000323d: SWAP2 0000323e: POP 0000323f: PUSH2 0x3248 00003242: DUP3 00003243: DUP11 00003244: PUSH2 0x2e6b 00003247: JUMP 00003248: JUMPDEST 00003249: SWAP2 0000324a: POP 0000324b: PUSH2 0x3254 0000324e: DUP3 0000324f: DUP10 00003250: PUSH2 0x2e6b 00003253: JUMP 00003254: JUMPDEST 00003255: SWAP2 00003256: POP 00003257: PUSH2 0x3260 0000325a: DUP3 0000325b: DUP9 0000325c: PUSH2 0x2e6b 0000325f: JUMP 00003260: JUMPDEST 00003261: SWAP2 00003262: POP 00003263: PUSH2 0x326c 00003266: DUP3 00003267: DUP8 00003268: PUSH2 0x2e6b 0000326b: JUMP 0000326c: JUMPDEST 0000326d: SWAP2 0000326e: POP 0000326f: PUSH2 0x3278 00003272: DUP3 00003273: DUP7 00003274: PUSH2 0x2e6b 00003277: JUMP 00003278: JUMPDEST 00003279: SWAP2 0000327a: POP 0000327b: PUSH2 0x3284 0000327e: DUP3 0000327f: DUP6 00003280: PUSH2 0x31cf 00003283: JUMP 00003284: JUMPDEST 00003285: SWAP2 00003286: POP 00003287: PUSH2 0x3290 0000328a: DUP3 0000328b: DUP5 0000328c: PUSH2 0x2e6b 0000328f: JUMP 00003290: JUMPDEST 00003291: SWAP2 00003292: POP 00003293: DUP2 00003294: SWAP1 00003295: POP 00003296: SWAP14 00003297: SWAP13 00003298: POP 00003299: POP 0000329a: POP 0000329b: POP 0000329c: POP 0000329d: POP 0000329e: POP 0000329f: POP 000032a0: POP 000032a1: POP 000032a2: POP 000032a3: POP 000032a4: POP 000032a5: JUMP 000032a6: JUMPDEST 000032a7: PUSH32 0x4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578 000032c8: PUSH1 0x00 000032ca: DUP3 000032cb: ADD 000032cc: MSTORE 000032cd: PUSH32 0x697374656e7420746f6b656e0000000000000000000000000000000000000000 000032ee: PUSH1 0x20 000032f0: DUP3 000032f1: ADD 000032f2: MSTORE 000032f3: POP 000032f4: JUMP 000032f5: JUMPDEST 000032f6: PUSH1 0x00 000032f8: PUSH2 0x3302 000032fb: PUSH1 0x2c 000032fd: DUP4 000032fe: PUSH2 0x240a 00003301: JUMP 00003302: JUMPDEST 00003303: SWAP2 00003304: POP 00003305: PUSH2 0x330d 00003308: DUP3 00003309: PUSH2 0x32a6 0000330c: JUMP 0000330d: JUMPDEST 0000330e: PUSH1 0x40 00003310: DUP3 00003311: ADD 00003312: SWAP1 00003313: POP 00003314: SWAP2 00003315: SWAP1 00003316: POP 00003317: JUMP 00003318: JUMPDEST 00003319: PUSH1 0x00 0000331b: PUSH1 0x20 0000331d: DUP3 0000331e: ADD 0000331f: SWAP1 00003320: POP 00003321: DUP2 00003322: DUP2 00003323: SUB 00003324: PUSH1 0x00 00003326: DUP4 00003327: ADD 00003328: MSTORE 00003329: PUSH2 0x3331 0000332c: DUP2 0000332d: PUSH2 0x32f5 00003330: JUMP 00003331: JUMPDEST 00003332: SWAP1 00003333: POP 00003334: SWAP2 00003335: SWAP1 00003336: POP 00003337: JUMP 00003338: JUMPDEST 00003339: PUSH32 0x4552433732313a207472616e73666572206f6620746f6b656e20746861742069 0000335a: PUSH1 0x00 0000335c: DUP3 0000335d: ADD 0000335e: MSTORE 0000335f: PUSH32 0x73206e6f74206f776e0000000000000000000000000000000000000000000000 00003380: PUSH1 0x20 00003382: DUP3 00003383: ADD 00003384: MSTORE 00003385: POP 00003386: JUMP 00003387: JUMPDEST 00003388: PUSH1 0x00 0000338a: PUSH2 0x3394 0000338d: PUSH1 0x29 0000338f: DUP4 00003390: PUSH2 0x240a 00003393: JUMP 00003394: JUMPDEST 00003395: SWAP2 00003396: POP 00003397: PUSH2 0x339f 0000339a: DUP3 0000339b: PUSH2 0x3338 0000339e: JUMP 0000339f: JUMPDEST 000033a0: PUSH1 0x40 000033a2: DUP3 000033a3: ADD 000033a4: SWAP1 000033a5: POP 000033a6: SWAP2 000033a7: SWAP1 000033a8: POP 000033a9: JUMP 000033aa: JUMPDEST 000033ab: PUSH1 0x00 000033ad: PUSH1 0x20 000033af: DUP3 000033b0: ADD 000033b1: SWAP1 000033b2: POP 000033b3: DUP2 000033b4: DUP2 000033b5: SUB 000033b6: PUSH1 0x00 000033b8: DUP4 000033b9: ADD 000033ba: MSTORE 000033bb: PUSH2 0x33c3 000033be: DUP2 000033bf: PUSH2 0x3387 000033c2: JUMP 000033c3: JUMPDEST 000033c4: SWAP1 000033c5: POP 000033c6: SWAP2 000033c7: SWAP1 000033c8: POP 000033c9: JUMP 000033ca: JUMPDEST 000033cb: PUSH32 0x4552433732313a207472616e7366657220746f20746865207a65726f20616464 000033ec: PUSH1 0x00 000033ee: DUP3 000033ef: ADD 000033f0: MSTORE 000033f1: PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 00003412: PUSH1 0x20 00003414: DUP3 00003415: ADD 00003416: MSTORE 00003417: POP 00003418: JUMP 00003419: JUMPDEST 0000341a: PUSH1 0x00 0000341c: PUSH2 0x3426 0000341f: PUSH1 0x24 00003421: DUP4 00003422: PUSH2 0x240a 00003425: JUMP 00003426: JUMPDEST 00003427: SWAP2 00003428: POP 00003429: PUSH2 0x3431 0000342c: DUP3 0000342d: PUSH2 0x33ca 00003430: JUMP 00003431: JUMPDEST 00003432: PUSH1 0x40 00003434: DUP3 00003435: ADD 00003436: SWAP1 00003437: POP 00003438: SWAP2 00003439: SWAP1 0000343a: POP 0000343b: JUMP 0000343c: JUMPDEST 0000343d: PUSH1 0x00 0000343f: PUSH1 0x20 00003441: DUP3 00003442: ADD 00003443: SWAP1 00003444: POP 00003445: DUP2 00003446: DUP2 00003447: SUB 00003448: PUSH1 0x00 0000344a: DUP4 0000344b: ADD 0000344c: MSTORE 0000344d: PUSH2 0x3455 00003450: DUP2 00003451: PUSH2 0x3419 00003454: JUMP 00003455: JUMPDEST 00003456: SWAP1 00003457: POP 00003458: SWAP2 00003459: SWAP1 0000345a: POP 0000345b: JUMP 0000345c: JUMPDEST 0000345d: PUSH1 0x00 0000345f: PUSH2 0x3467 00003462: DUP3 00003463: PUSH2 0x24ba 00003466: JUMP 00003467: JUMPDEST 00003468: SWAP2 00003469: POP 0000346a: PUSH2 0x3472 0000346d: DUP4 0000346e: PUSH2 0x24ba 00003471: JUMP 00003472: JUMPDEST 00003473: SWAP3 00003474: POP 00003475: DUP3 00003476: PUSH2 0x3482 00003479: JUMPI 0000347a: PUSH2 0x3481 0000347d: PUSH2 0x2d2b 00003480: JUMP 00003481: JUMPDEST 00003482: JUMPDEST 00003483: DUP3 00003484: DUP3 00003485: MOD 00003486: SWAP1 00003487: POP 00003488: SWAP3 00003489: SWAP2 0000348a: POP 0000348b: POP 0000348c: JUMP 0000348d: JUMPDEST 0000348e: PUSH32 0x4552433732313a207472616e7366657220746f206e6f6e204552433732315265 000034af: PUSH1 0x00 000034b1: DUP3 000034b2: ADD 000034b3: MSTORE 000034b4: PUSH32 0x63656976657220696d706c656d656e7465720000000000000000000000000000 000034d5: PUSH1 0x20 000034d7: DUP3 000034d8: ADD 000034d9: MSTORE 000034da: POP 000034db: JUMP 000034dc: JUMPDEST 000034dd: PUSH1 0x00 000034df: PUSH2 0x34e9 000034e2: PUSH1 0x32 000034e4: DUP4 000034e5: PUSH2 0x240a 000034e8: JUMP 000034e9: JUMPDEST 000034ea: SWAP2 000034eb: POP 000034ec: PUSH2 0x34f4 000034ef: DUP3 000034f0: PUSH2 0x348d 000034f3: JUMP 000034f4: JUMPDEST 000034f5: PUSH1 0x40 000034f7: DUP3 000034f8: ADD 000034f9: SWAP1 000034fa: POP 000034fb: SWAP2 000034fc: SWAP1 000034fd: POP 000034fe: JUMP 000034ff: JUMPDEST 00003500: PUSH1 0x00 00003502: PUSH1 0x20 00003504: DUP3 00003505: ADD 00003506: SWAP1 00003507: POP 00003508: DUP2 00003509: DUP2 0000350a: SUB 0000350b: PUSH1 0x00 0000350d: DUP4 0000350e: ADD 0000350f: MSTORE 00003510: PUSH2 0x3518 00003513: DUP2 00003514: PUSH2 0x34dc 00003517: JUMP 00003518: JUMPDEST 00003519: SWAP1 0000351a: POP 0000351b: SWAP2 0000351c: SWAP1 0000351d: POP 0000351e: JUMP 0000351f: JUMPDEST 00003520: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00003541: PUSH1 0x00 00003543: MSTORE 00003544: PUSH1 0x31 00003546: PUSH1 0x04 00003548: MSTORE 00003549: PUSH1 0x24 0000354b: PUSH1 0x00 0000354d: REVERT 0000354e: JUMPDEST 0000354f: PUSH1 0x00 00003551: DUP2 00003552: MLOAD 00003553: SWAP1 00003554: POP 00003555: SWAP2 00003556: SWAP1 00003557: POP 00003558: JUMP 00003559: JUMPDEST 0000355a: PUSH1 0x00 0000355c: DUP3 0000355d: DUP3 0000355e: MSTORE 0000355f: PUSH1 0x20 00003561: DUP3 00003562: ADD 00003563: SWAP1 00003564: POP 00003565: SWAP3 00003566: SWAP2 00003567: POP 00003568: POP 00003569: JUMP 0000356a: JUMPDEST 0000356b: PUSH1 0x00 0000356d: PUSH2 0x3575 00003570: DUP3 00003571: PUSH2 0x354e 00003574: JUMP 00003575: JUMPDEST 00003576: PUSH2 0x357f 00003579: DUP2 0000357a: DUP6 0000357b: PUSH2 0x3559 0000357e: JUMP 0000357f: JUMPDEST 00003580: SWAP4 00003581: POP 00003582: PUSH2 0x358f 00003585: DUP2 00003586: DUP6 00003587: PUSH1 0x20 00003589: DUP7 0000358a: ADD 0000358b: PUSH2 0x241b 0000358e: JUMP 0000358f: JUMPDEST 00003590: PUSH2 0x3598 00003593: DUP2 00003594: PUSH2 0x244e 00003597: JUMP 00003598: JUMPDEST 00003599: DUP5 0000359a: ADD 0000359b: SWAP2 0000359c: POP 0000359d: POP 0000359e: SWAP3 0000359f: SWAP2 000035a0: POP 000035a1: POP 000035a2: JUMP 000035a3: JUMPDEST 000035a4: PUSH1 0x00 000035a6: PUSH1 0x80 000035a8: DUP3 000035a9: ADD 000035aa: SWAP1 000035ab: POP 000035ac: PUSH2 0x35b8 000035af: PUSH1 0x00 000035b1: DUP4 000035b2: ADD 000035b3: DUP8 000035b4: PUSH2 0x254f 000035b7: JUMP 000035b8: JUMPDEST 000035b9: PUSH2 0x35c5 000035bc: PUSH1 0x20 000035be: DUP4 000035bf: ADD 000035c0: DUP7 000035c1: PUSH2 0x254f 000035c4: JUMP 000035c5: JUMPDEST 000035c6: PUSH2 0x35d2 000035c9: PUSH1 0x40 000035cb: DUP4 000035cc: ADD 000035cd: DUP6 000035ce: PUSH2 0x25e5 000035d1: JUMP 000035d2: JUMPDEST 000035d3: DUP2 000035d4: DUP2 000035d5: SUB 000035d6: PUSH1 0x60 000035d8: DUP4 000035d9: ADD 000035da: MSTORE 000035db: PUSH2 0x35e4 000035de: DUP2 000035df: DUP5 000035e0: PUSH2 0x356a 000035e3: JUMP 000035e4: JUMPDEST 000035e5: SWAP1 000035e6: POP 000035e7: SWAP6 000035e8: SWAP5 000035e9: POP 000035ea: POP 000035eb: POP 000035ec: POP 000035ed: POP 000035ee: JUMP 000035ef: JUMPDEST 000035f0: PUSH1 0x00 000035f2: DUP2 000035f3: MLOAD 000035f4: SWAP1 000035f5: POP 000035f6: PUSH2 0x35fe 000035f9: DUP2 000035fa: PUSH2 0x2370 000035fd: JUMP 000035fe: JUMPDEST 000035ff: SWAP3 00003600: SWAP2 00003601: POP 00003602: POP 00003603: JUMP 00003604: JUMPDEST 00003605: PUSH1 0x00 00003607: PUSH1 0x20 00003609: DUP3 0000360a: DUP5 0000360b: SUB 0000360c: SLT 0000360d: ISZERO 0000360e: PUSH2 0x361a 00003611: JUMPI 00003612: PUSH2 0x3619 00003615: PUSH2 0x233a 00003618: JUMP 00003619: JUMPDEST 0000361a: JUMPDEST 0000361b: PUSH1 0x00 0000361d: PUSH2 0x3628 00003620: DUP5 00003621: DUP3 00003622: DUP6 00003623: ADD 00003624: PUSH2 0x35ef 00003627: JUMP 00003628: JUMPDEST 00003629: SWAP2 0000362a: POP 0000362b: POP 0000362c: SWAP3 0000362d: SWAP2 0000362e: POP 0000362f: POP 00003630: JUMP 00003631: JUMPDEST 00003632: PUSH32 0x4552433732313a206d696e7420746f20746865207a65726f2061646472657373 00003653: PUSH1 0x00 00003655: DUP3 00003656: ADD 00003657: MSTORE 00003658: POP 00003659: JUMP 0000365a: JUMPDEST 0000365b: PUSH1 0x00 0000365d: PUSH2 0x3667 00003660: PUSH1 0x20 00003662: DUP4 00003663: PUSH2 0x240a 00003666: JUMP 00003667: JUMPDEST 00003668: SWAP2 00003669: POP 0000366a: PUSH2 0x3672 0000366d: DUP3 0000366e: PUSH2 0x3631 00003671: JUMP 00003672: JUMPDEST 00003673: PUSH1 0x20 00003675: DUP3 00003676: ADD 00003677: SWAP1 00003678: POP 00003679: SWAP2 0000367a: SWAP1 0000367b: POP 0000367c: JUMP 0000367d: JUMPDEST 0000367e: PUSH1 0x00 00003680: PUSH1 0x20 00003682: DUP3 00003683: ADD 00003684: SWAP1 00003685: POP 00003686: DUP2 00003687: DUP2 00003688: SUB 00003689: PUSH1 0x00 0000368b: DUP4 0000368c: ADD 0000368d: MSTORE 0000368e: PUSH2 0x3696 00003691: DUP2 00003692: PUSH2 0x365a 00003695: JUMP 00003696: JUMPDEST 00003697: SWAP1 00003698: POP 00003699: SWAP2 0000369a: SWAP1 0000369b: POP 0000369c: JUMP 0000369d: JUMPDEST 0000369e: PUSH32 0x4552433732313a20746f6b656e20616c7265616479206d696e74656400000000 000036bf: PUSH1 0x00 000036c1: DUP3 000036c2: ADD 000036c3: MSTORE 000036c4: POP 000036c5: JUMP 000036c6: JUMPDEST 000036c7: PUSH1 0x00 000036c9: PUSH2 0x36d3 000036cc: PUSH1 0x1c 000036ce: DUP4 000036cf: PUSH2 0x240a 000036d2: JUMP 000036d3: JUMPDEST 000036d4: SWAP2 000036d5: POP 000036d6: PUSH2 0x36de 000036d9: DUP3 000036da: PUSH2 0x369d 000036dd: JUMP 000036de: JUMPDEST 000036df: PUSH1 0x20 000036e1: DUP3 000036e2: ADD 000036e3: SWAP1 000036e4: POP 000036e5: SWAP2 000036e6: SWAP1 000036e7: POP 000036e8: JUMP 000036e9: JUMPDEST 000036ea: PUSH1 0x00 000036ec: PUSH1 0x20 000036ee: DUP3 000036ef: ADD 000036f0: SWAP1 000036f1: POP 000036f2: DUP2 000036f3: DUP2 000036f4: SUB 000036f5: PUSH1 0x00 000036f7: DUP4 000036f8: ADD 000036f9: MSTORE 000036fa: PUSH2 0x3702 000036fd: DUP2 000036fe: PUSH2 0x36c6 00003701: JUMP 00003702: JUMPDEST 00003703: SWAP1 00003704: POP 00003705: SWAP2 00003706: SWAP1 00003707: POP 00003708: JUMP 00003709: INVALID 0000370a: LOG2 0000370b: PUSH5 0x6970667358 00003711: UNKNOWN(0x22) 00003712: SLT 00003713: KECCAK256 00003714: CALLER 00003715: SUB 00003716: UNKNOWN(0xCE) 00003717: INVALID 00003718: UNKNOWN(0xE8) 00003719: UNKNOWN(0xCB) 0000371a: SWAP1 0000371b: UNKNOWN(0xCD) 0000371c: ADDMOD 0000371d: CALLER 0000371e: UNKNOWN(0xAB) 0000371f: UNKNOWN(0xDA) 00003720: ADDMOD 00003721: UNKNOWN(0xD9) 00003722: PUSH32
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5
call_targets:
0x503052972547189fcf3e30d96b3457b0a70856a9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x503052972547189fcf3e30d96b3457b0a70856a9"
],
"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": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa22cb465",
"selector": "0xa22cb465",
"calldata_variants": [
"0xa22cb465",
"0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xab00492f",
"selector": "0xab00492f",
"calldata_variants": [
"0xab00492f",
"0xab00492f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb88d4fde",
"selector": "0xb88d4fde",
"calldata_variants": [
"0xb88d4fde",
"0xb88d4fde0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6352211e",
"selector": "0x6352211e",
"calldata_variants": [
"0x6352211e",
"0x6352211e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6a2a0696",
"selector": "0x6a2a0696",
"calldata_variants": [
"0x6a2a0696",
"0x6a2a06960000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8007,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5
call_targets:
0x503052972547189fcf3e30d96b3457b0a70856a9
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2c2fa8c295f6a183b8e77fb50d1cdec9baf5ba653827a5a70b670611f3330ce5",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x503052972547189fcf3e30d96b3457b0a70856a9"
],
"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": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa22cb465",
"selector": "0xa22cb465",
"calldata_variants": [
"0xa22cb465",
"0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xab00492f",
"selector": "0xab00492f",
"calldata_variants": [
"0xab00492f",
"0xab00492f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb88d4fde",
"selector": "0xb88d4fde",
"calldata_variants": [
"0xb88d4fde",
"0xb88d4fde0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6352211e",
"selector": "0x6352211e",
"calldata_variants": [
"0x6352211e",
"0x6352211e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6a2a0696",
"selector": "0x6a2a0696",
"calldata_variants": [
"0x6a2a0696",
"0x6a2a06960000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8007,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|