Skip to content

Instantly share code, notes, and snippets.

@Sulejman
Last active April 23, 2024 22:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sulejman/65c2a4153bd770fb8f0637befa411050 to your computer and use it in GitHub Desktop.
Save Sulejman/65c2a4153bd770fb8f0637befa411050 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.19+commit.7dd6d404.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS =
0x000000000000000000636F6e736F6c652e6c6f67;
function _sendLogPayloadImplementation(bytes memory payload) internal view {
address consoleAddress = CONSOLE_ADDRESS;
/// @solidity memory-safe-assembly
assembly {
pop(
staticcall(
gas(),
consoleAddress,
add(payload, 32),
mload(payload),
0,
0
)
)
}
}
function _castToPure(
function(bytes memory) internal view fnIn
) internal pure returns (function(bytes memory) pure fnOut) {
assembly {
fnOut := fnIn
}
}
function _sendLogPayload(bytes memory payload) internal pure {
_castToPure(_sendLogPayloadImplementation)(payload);
}
function log() internal pure {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
}
function logUint(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function logString(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function log(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint256 p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1));
}
function log(uint256 p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1));
}
function log(uint256 p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1));
}
function log(uint256 p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1));
}
function log(string memory p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
}
function log(string memory p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1));
}
function log(bool p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1));
}
function log(address p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2));
}
function log(uint256 p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2));
}
function log(uint256 p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2));
}
function log(uint256 p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2));
}
function log(uint256 p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2));
}
function log(uint256 p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2));
}
function log(uint256 p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2));
}
function log(uint256 p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2));
}
function log(uint256 p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2));
}
function log(bool p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2));
}
function log(bool p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2));
}
function log(bool p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2));
}
function log(address p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2));
}
function log(address p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2));
}
function log(address p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library Assert {
event AssertionEvent(
bool passed,
string message,
string methodName
);
event AssertionEventUint(
bool passed,
string message,
string methodName,
uint256 returned,
uint256 expected
);
event AssertionEventInt(
bool passed,
string message,
string methodName,
int256 returned,
int256 expected
);
event AssertionEventBool(
bool passed,
string message,
string methodName,
bool returned,
bool expected
);
event AssertionEventAddress(
bool passed,
string message,
string methodName,
address returned,
address expected
);
event AssertionEventBytes32(
bool passed,
string message,
string methodName,
bytes32 returned,
bytes32 expected
);
event AssertionEventString(
bool passed,
string message,
string methodName,
string returned,
string expected
);
event AssertionEventUintInt(
bool passed,
string message,
string methodName,
uint256 returned,
int256 expected
);
event AssertionEventIntUint(
bool passed,
string message,
string methodName,
int256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) {
result = a;
emit AssertionEvent(result, message, "ok");
}
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventUint(result, message, "equal", a, b);
}
function equal(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventInt(result, message, "equal", a, b);
}
function equal(bool a, bool b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBool(result, message, "equal", a, b);
}
// TODO: only for certain versions of solc
//function equal(fixed a, fixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function equal(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
function equal(address a, address b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventAddress(result, message, "equal", a, b);
}
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBytes32(result, message, "equal", a, b);
}
function equal(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "equal", a, b);
}
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventUint(result, message, "notEqual", a, b);
}
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventInt(result, message, "notEqual", a, b);
}
function notEqual(bool a, bool b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBool(result, message, "notEqual", a, b);
}
// TODO: only for certain versions of solc
//function notEqual(fixed a, fixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
function notEqual(address a, address b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventAddress(result, message, "notEqual", a, b);
}
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBytes32(result, message, "notEqual", a, b);
}
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "notEqual", a, b);
}
/*----------------- Greater than --------------------*/
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventUint(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventInt(result, message, "greaterThan", a, b);
}
// TODO: safely compare between uint and int
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative uint "a" always greater
result = true;
} else {
result = (a > uint(b));
}
emit AssertionEventUintInt(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative uint "b" always greater
result = false;
} else {
result = (uint(a) > b);
}
emit AssertionEventIntUint(result, message, "greaterThan", a, b);
}
/*----------------- Lesser than --------------------*/
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventUint(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventInt(result, message, "lesserThan", a, b);
}
// TODO: safely compare between uint and int
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative int "b" always lesser
result = false;
} else {
result = (a < uint(b));
}
emit AssertionEventUintInt(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative int "a" always lesser
result = true;
} else {
result = (uint(a) < b);
}
emit AssertionEventIntUint(result, message, "lesserThan", a, b);
}
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.19+commit.7dd6d404"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"details": "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.",
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Context.sol": "Context"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0x2d9821ede311a3c16183811be8bdc666e88c69d9d50321e3dff025fe7630d373",
"license": "MIT",
"urls": [
"bzz-raw://3719bc7fe267a79e84641b88901b10dbc58d27edaea65b7811d39ca7d2a3e409",
"dweb:/ipfs/QmRDDpaByM3MhWs61gXmfaxoygifCJhLvguEFDGahhWMfX"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)
pragma solidity ^0.8.0;
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
*/
library Counters {
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
unchecked {
counter._value += 1;
}
}
function decrement(Counter storage counter) internal {
uint256 value = counter._value;
require(value > 0, "Counter: decrement overflow");
unchecked {
counter._value = value - 1;
}
}
function reset(Counter storage counter) internal {
counter._value = 0;
}
}
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;
import "./ERC20.sol";
import "./ERC20Burnable.sol";
import "./Ownable2Step.sol";
import "./TokenRecover.sol";
import "./ERC20Permit.sol";
import "./Initializable.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Pair.sol";
import "./IUniswapV2Router01.sol";
import "./IUniswapV2Router02.sol";
contract Dare2PlayToken is ERC20, ERC20Burnable, Ownable2Step, TokenRecover, ERC20Permit, Initializable {
uint16 public swapThresholdRatio;
uint256 private _developerPending;
address public developerAddress;
uint16[3] public developerFees;
mapping (address => bool) public isExcludedFromFees;
uint16[3] public totalFees;
bool private _swapping;
IUniswapV2Router02 public routerV2;
address public pairV2;
mapping (address => bool) public AMMPairs;
mapping (address => bool) public isExcludedFromLimits;
uint256 public maxWalletAmount;
bool public tradingEnabled;
mapping (address => bool) public isExcludedFromTradingRestriction;
event SwapThresholdUpdated(uint16 swapThresholdRatio);
event developerAddressUpdated(address developerAddress);
event developerFeesUpdated(uint16 buyFee, uint16 sellFee, uint16 transferFee);
event developerFeeSent(address recipient, uint256 amount);
event ExcludeFromFees(address indexed account, bool isExcluded);
event RouterV2Updated(address indexed routerV2);
event AMMPairsUpdated(address indexed AMMPair, bool isPair);
event ExcludeFromLimits(address indexed account, bool isExcluded);
event MaxWalletAmountUpdated(uint256 maxWalletAmount);
event TradingEnabled();
event ExcludeFromTradingRestriction(address indexed account, bool isExcluded);
constructor()
ERC20(unicode"Dare2Play", unicode"D2P")
ERC20Permit(unicode"Dare2Play")
{
address supplyRecipient = 0xB031999eB2305dAd9ef65bEBAA96B453A0dfCEff;
updateSwapThreshold(50);
developerAddressSetup(0xB031999eB2305dAd9ef65bEBAA96B453A0dfCEff);
developerFeesSetup(300, 300, 0);
excludeFromFees(supplyRecipient, true);
excludeFromFees(address(this), true);
_excludeFromLimits(supplyRecipient, true);
_excludeFromLimits(address(this), true);
_excludeFromLimits(address(0), true);
updateMaxWalletAmount(4000000000 * (10 ** decimals()) / 10);
excludeFromTradingRestriction(supplyRecipient, true);
excludeFromTradingRestriction(address(this), true);
_mint(supplyRecipient, 100000000000 * (10 ** decimals()) / 10);
_transferOwnership(0xB031999eB2305dAd9ef65bEBAA96B453A0dfCEff);
}
/*
This token is not upgradeable, but uses both the constructor and initializer for post-deployment setup.
*/
function initialize(address _router) initializer external {
_updateRouterV2(_router);
}
receive() external payable {}
function decimals() public pure override returns (uint8) {
return 18;
}
function _swapTokensForCoin(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = routerV2.WETH();
_approve(address(this), address(routerV2), tokenAmount);
routerV2.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
}
function updateSwapThreshold(uint16 _swapThresholdRatio) public onlyOwner {
require(_swapThresholdRatio > 0 && _swapThresholdRatio <= 500, "SwapThreshold: Cannot exceed limits from 0.01% to 5% for new swap threshold");
swapThresholdRatio = _swapThresholdRatio;
emit SwapThresholdUpdated(_swapThresholdRatio);
}
function getSwapThresholdAmount() public view returns (uint256) {
return balanceOf(pairV2) * swapThresholdRatio / 10000;
}
function getAllPending() public view returns (uint256) {
return 0 + _developerPending;
}
function developerAddressSetup(address _newAddress) public onlyOwner {
require(_newAddress != address(0), "TaxesDefaultRouterWallet: Wallet tax recipient cannot be a 0x0 address");
developerAddress = _newAddress;
excludeFromFees(_newAddress, true);
_excludeFromLimits(_newAddress, true);
emit developerAddressUpdated(_newAddress);
}
function developerFeesSetup(uint16 _buyFee, uint16 _sellFee, uint16 _transferFee) public onlyOwner {
totalFees[0] = totalFees[0] - developerFees[0] + _buyFee;
totalFees[1] = totalFees[1] - developerFees[1] + _sellFee;
totalFees[2] = totalFees[2] - developerFees[2] + _transferFee;
require(totalFees[0] <= 2500 && totalFees[1] <= 2500 && totalFees[2] <= 2500, "TaxesDefaultRouter: Cannot exceed max total fee of 25%");
developerFees = [_buyFee, _sellFee, _transferFee];
emit developerFeesUpdated(_buyFee, _sellFee, _transferFee);
}
function excludeFromFees(address account, bool isExcluded) public onlyOwner {
isExcludedFromFees[account] = isExcluded;
emit ExcludeFromFees(account, isExcluded);
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
if (!_swapping && amount > 0 && to != address(routerV2) && !isExcludedFromFees[from] && !isExcludedFromFees[to]) {
uint256 fees = 0;
uint8 txType = 3;
if (AMMPairs[from]) {
if (totalFees[0] > 0) txType = 0;
}
else if (AMMPairs[to]) {
if (totalFees[1] > 0) txType = 1;
}
else if (totalFees[2] > 0) txType = 2;
if (txType < 3) {
fees = amount * totalFees[txType] / 10000;
amount -= fees;
_developerPending += fees * developerFees[txType] / totalFees[txType];
}
if (fees > 0) {
super._transfer(from, address(this), fees);
}
}
bool canSwap = getAllPending() >= getSwapThresholdAmount() && balanceOf(pairV2) > 0;
if (!_swapping && !AMMPairs[from] && from != address(routerV2) && canSwap) {
_swapping = true;
if (false || _developerPending > 0) {
uint256 token2Swap = 0 +_developerPending;
bool success = false;
_swapTokensForCoin(token2Swap);
uint256 coinsReceived = address(this).balance;
uint256 developerPortion = coinsReceived * _developerPending / token2Swap;
if (developerPortion > 0) {
success = payable(developerAddress).send(developerPortion);
if (success) {
emit developerFeeSent(developerAddress, developerPortion);
}
}
_developerPending = 0;
}
_swapping = false;
}
super._transfer(from, to, amount);
}
function _updateRouterV2(address router) private {
routerV2 = IUniswapV2Router02(router);
pairV2 = IUniswapV2Factory(routerV2.factory()).createPair(address(this), routerV2.WETH());
_excludeFromLimits(router, true);
_setAMMPair(pairV2, true);
emit RouterV2Updated(router);
}
function setAMMPair(address pair, bool isPair) external onlyOwner {
require(pair != pairV2, "DefaultRouter: Cannot remove initial pair from list");
_setAMMPair(pair, isPair);
}
function _setAMMPair(address pair, bool isPair) private {
AMMPairs[pair] = isPair;
if (isPair) {
_excludeFromLimits(pair, true);
}
emit AMMPairsUpdated(pair, isPair);
}
function excludeFromLimits(address account, bool isExcluded) external onlyOwner {
_excludeFromLimits(account, isExcluded);
}
function _excludeFromLimits(address account, bool isExcluded) internal {
isExcludedFromLimits[account] = isExcluded;
emit ExcludeFromLimits(account, isExcluded);
}
function updateMaxWalletAmount(uint256 _maxWalletAmount) public onlyOwner {
require(_maxWalletAmount >= _maxWalletSafeLimit(), "MaxWallet: Limit too low");
maxWalletAmount = _maxWalletAmount;
emit MaxWalletAmountUpdated(_maxWalletAmount);
}
function _maxWalletSafeLimit() private view returns (uint256) {
return totalSupply() / 1000;
}
function enableTrading() external onlyOwner {
require(!tradingEnabled, "EnableTrading: Trading was enabled already");
tradingEnabled = true;
emit TradingEnabled();
}
function excludeFromTradingRestriction(address account, bool isExcluded) public onlyOwner {
isExcludedFromTradingRestriction[account] = isExcluded;
emit ExcludeFromTradingRestriction(account, isExcluded);
}
function _beforeTokenTransfer(address from, address to, uint256 amount)
internal
override
{
// Interactions with DEX are disallowed prior to enabling trading by owner
if ((AMMPairs[from] && !isExcludedFromTradingRestriction[to]) || (AMMPairs[to] && !isExcludedFromTradingRestriction[from])) {
require(tradingEnabled, "EnableTrading: Trading was not enabled yet");
}
super._beforeTokenTransfer(from, to, amount);
}
function _afterTokenTransfer(address from, address to, uint256 amount)
internal
override
{
if (!isExcludedFromLimits[to]) {
require(balanceOf(to) <= maxWalletAmount, "MaxWallet: Cannot exceed max wallet limit");
}
super._afterTokenTransfer(from, to, amount);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)
pragma solidity ^0.8.0;
import "./Strings.sol";
/**
* @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
*
* These functions can be used to verify that a message was signed by the holder
* of the private keys of a given address.
*/
library ECDSA {
enum RecoverError {
NoError,
InvalidSignature,
InvalidSignatureLength,
InvalidSignatureS,
InvalidSignatureV // Deprecated in v4.8
}
function _throwError(RecoverError error) private pure {
if (error == RecoverError.NoError) {
return; // no error: do nothing
} else if (error == RecoverError.InvalidSignature) {
revert("ECDSA: invalid signature");
} else if (error == RecoverError.InvalidSignatureLength) {
revert("ECDSA: invalid signature length");
} else if (error == RecoverError.InvalidSignatureS) {
revert("ECDSA: invalid signature 's' value");
}
}
/**
* @dev Returns the address that signed a hashed message (`hash`) with
* `signature` or error string. This address can then be used for verification purposes.
*
* The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
* this function rejects them by requiring the `s` value to be in the lower
* half order, and the `v` value to be either 27 or 28.
*
* IMPORTANT: `hash` _must_ be the result of a hash operation for the
* verification to be secure: it is possible to craft signatures that
* recover to arbitrary addresses for non-hashed data. A safe way to ensure
* this is by receiving a hash of the original message (which may otherwise
* be too long), and then calling {toEthSignedMessageHash} on it.
*
* Documentation for signature generation:
* - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
* - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
*
* _Available since v4.3._
*/
function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
if (signature.length == 65) {
bytes32 r;
bytes32 s;
uint8 v;
// ecrecover takes the signature parameters, and the only way to get them
// currently is to use assembly.
/// @solidity memory-safe-assembly
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := byte(0, mload(add(signature, 0x60)))
}
return tryRecover(hash, v, r, s);
} else {
return (address(0), RecoverError.InvalidSignatureLength);
}
}
/**
* @dev Returns the address that signed a hashed message (`hash`) with
* `signature`. This address can then be used for verification purposes.
*
* The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
* this function rejects them by requiring the `s` value to be in the lower
* half order, and the `v` value to be either 27 or 28.
*
* IMPORTANT: `hash` _must_ be the result of a hash operation for the
* verification to be secure: it is possible to craft signatures that
* recover to arbitrary addresses for non-hashed data. A safe way to ensure
* this is by receiving a hash of the original message (which may otherwise
* be too long), and then calling {toEthSignedMessageHash} on it.
*/
function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, signature);
_throwError(error);
return recovered;
}
/**
* @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
*
* See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
*
* _Available since v4.3._
*/
function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {
bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
uint8 v = uint8((uint256(vs) >> 255) + 27);
return tryRecover(hash, v, r, s);
}
/**
* @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
*
* _Available since v4.2._
*/
function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, r, vs);
_throwError(error);
return recovered;
}
/**
* @dev Overload of {ECDSA-tryRecover} that receives the `v`,
* `r` and `s` signature fields separately.
*
* _Available since v4.3._
*/
function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {
// EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
// unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
// the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
// signatures from current libraries generate a unique signature with an s-value in the lower half order.
//
// If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
// with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
// vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
// these malleable signatures as well.
if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
return (address(0), RecoverError.InvalidSignatureS);
}
// If the signature is valid (and not malleable), return the signer address
address signer = ecrecover(hash, v, r, s);
if (signer == address(0)) {
return (address(0), RecoverError.InvalidSignature);
}
return (signer, RecoverError.NoError);
}
/**
* @dev Overload of {ECDSA-recover} that receives the `v`,
* `r` and `s` signature fields separately.
*/
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, v, r, s);
_throwError(error);
return recovered;
}
/**
* @dev Returns an Ethereum Signed Message, created from a `hash`. This
* produces hash corresponding to the one signed with the
* https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
* JSON-RPC method as part of EIP-191.
*
* See {recover}.
*/
function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {
// 32 is the length in bytes of hash,
// enforced by the type signature above
/// @solidity memory-safe-assembly
assembly {
mstore(0x00, "\x19Ethereum Signed Message:\n32")
mstore(0x1c, hash)
message := keccak256(0x00, 0x3c)
}
}
/**
* @dev Returns an Ethereum Signed Message, created from `s`. This
* produces hash corresponding to the one signed with the
* https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
* JSON-RPC method as part of EIP-191.
*
* See {recover}.
*/
function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
}
/**
* @dev Returns an Ethereum Signed Typed Data, created from a
* `domainSeparator` and a `structHash`. This produces hash corresponding
* to the one signed with the
* https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
* JSON-RPC method as part of EIP-712.
*
* See {recover}.
*/
function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {
/// @solidity memory-safe-assembly
assembly {
let ptr := mload(0x40)
mstore(ptr, "\x19\x01")
mstore(add(ptr, 0x02), domainSeparator)
mstore(add(ptr, 0x22), structHash)
data := keccak256(ptr, 0x42)
}
}
/**
* @dev Returns an Ethereum Signed Data with intended validator, created from a
* `validator` and `data` according to the version 0 of EIP-191.
*
* See {recover}.
*/
function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {
return keccak256(abi.encodePacked("\x19\x00", validator, data));
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/EIP712.sol)
pragma solidity ^0.8.8;
import "./ECDSA.sol";
import "./ShortStrings.sol";
import "./IERC5267.sol";
/**
* @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.
*
* The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,
* thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding
* they need in their contracts using a combination of `abi.encode` and `keccak256`.
*
* This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding
* scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA
* ({_hashTypedDataV4}).
*
* The implementation of the domain separator was designed to be as efficient as possible while still properly updating
* the chain id to protect against replay attacks on an eventual fork of the chain.
*
* NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method
* https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].
*
* NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain
* separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the
* separator from the immutable values, which is cheaper than accessing a cached version in cold storage.
*
* _Available since v3.4._
*
* @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment
*/
abstract contract EIP712 is IERC5267 {
using ShortStrings for *;
bytes32 private constant _TYPE_HASH =
keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");
// Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
// invalidate the cached domain separator if the chain id changes.
bytes32 private immutable _cachedDomainSeparator;
uint256 private immutable _cachedChainId;
address private immutable _cachedThis;
bytes32 private immutable _hashedName;
bytes32 private immutable _hashedVersion;
ShortString private immutable _name;
ShortString private immutable _version;
string private _nameFallback;
string private _versionFallback;
/**
* @dev Initializes the domain separator and parameter caches.
*
* The meaning of `name` and `version` is specified in
* https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:
*
* - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.
* - `version`: the current major version of the signing domain.
*
* NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart
* contract upgrade].
*/
constructor(string memory name, string memory version) {
_name = name.toShortStringWithFallback(_nameFallback);
_version = version.toShortStringWithFallback(_versionFallback);
_hashedName = keccak256(bytes(name));
_hashedVersion = keccak256(bytes(version));
_cachedChainId = block.chainid;
_cachedDomainSeparator = _buildDomainSeparator();
_cachedThis = address(this);
}
/**
* @dev Returns the domain separator for the current chain.
*/
function _domainSeparatorV4() internal view returns (bytes32) {
if (address(this) == _cachedThis && block.chainid == _cachedChainId) {
return _cachedDomainSeparator;
} else {
return _buildDomainSeparator();
}
}
function _buildDomainSeparator() private view returns (bytes32) {
return keccak256(abi.encode(_TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));
}
/**
* @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this
* function returns the hash of the fully encoded EIP712 message for this domain.
*
* This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:
*
* ```solidity
* bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(
* keccak256("Mail(address to,string contents)"),
* mailTo,
* keccak256(bytes(mailContents))
* )));
* address signer = ECDSA.recover(digest, signature);
* ```
*/
function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);
}
/**
* @dev See {EIP-5267}.
*
* _Available since v4.9._
*/
function eip712Domain()
public
view
virtual
override
returns (
bytes1 fields,
string memory name,
string memory version,
uint256 chainId,
address verifyingContract,
bytes32 salt,
uint256[] memory extensions
)
{
return (
hex"0f", // 01111
_name.toStringWithFallback(_nameFallback),
_version.toStringWithFallback(_versionFallback),
block.chainid,
address(this),
bytes32(0),
new uint256[](0)
);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)
pragma solidity ^0.8.0;
import "./ERC20.sol";
import "./Context.sol";
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev Destroys `amount` tokens from `account`, deducting from the caller's
* allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `amount`.
*/
function burnFrom(address account, uint256 amount) public virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/ERC20Permit.sol)
pragma solidity ^0.8.0;
import "./IERC20Permit.sol";
import "./ERC20.sol";
import "./ECDSA.sol";
import "./EIP712.sol";
import "./Counters.sol";
/**
* @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*
* _Available since v3.4._
*/
abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712 {
using Counters for Counters.Counter;
mapping(address => Counters.Counter) private _nonces;
// solhint-disable-next-line var-name-mixedcase
bytes32 private constant _PERMIT_TYPEHASH =
keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
/**
* @dev In previous versions `_PERMIT_TYPEHASH` was declared as `immutable`.
* However, to ensure consistency with the upgradeable transpiler, we will continue
* to reserve a slot.
* @custom:oz-renamed-from _PERMIT_TYPEHASH
*/
// solhint-disable-next-line var-name-mixedcase
bytes32 private _PERMIT_TYPEHASH_DEPRECATED_SLOT;
/**
* @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `"1"`.
*
* It's a good idea to use the same `name` that is defined as the ERC20 token name.
*/
constructor(string memory name) EIP712(name, "1") {}
/**
* @dev See {IERC20Permit-permit}.
*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual override {
require(block.timestamp <= deadline, "ERC20Permit: expired deadline");
bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));
bytes32 hash = _hashTypedDataV4(structHash);
address signer = ECDSA.recover(hash, v, r, s);
require(signer == owner, "ERC20Permit: invalid signature");
_approve(owner, spender, value);
}
/**
* @dev See {IERC20Permit-nonces}.
*/
function nonces(address owner) public view virtual override returns (uint256) {
return _nonces[owner].current();
}
/**
* @dev See {IERC20Permit-DOMAIN_SEPARATOR}.
*/
// solhint-disable-next-line func-name-mixedcase
function DOMAIN_SEPARATOR() external view override returns (bytes32) {
return _domainSeparatorV4();
}
/**
* @dev "Consume a nonce": return the current value and increment.
*
* _Available since v4.1._
*/
function _useNonce(address owner) internal virtual returns (uint256 current) {
Counters.Counter storage nonce = _nonces[owner];
current = nonce.current();
nonce.increment();
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*/
interface IERC20Permit {
/**
* @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
* given ``owner``'s signed approval.
*
* IMPORTANT: The same issues {IERC20-approve} has related to transaction
* ordering also apply here.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `deadline` must be a timestamp in the future.
* - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
* over the EIP712-formatted function arguments.
* - the signature must use ``owner``'s current nonce (see {nonces}).
*
* For more information on the signature format, see the
* https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
* section].
*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
/**
* @dev Returns the current nonce for `owner`. This value must be
* included whenever a signature is generated for {permit}.
*
* Every successful call to {permit} increases ``owner``'s nonce by one. This
* prevents a signature from being used multiple times.
*/
function nonces(address owner) external view returns (uint256);
/**
* @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.
*/
// solhint-disable-next-line func-name-mixedcase
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)
pragma solidity ^0.8.0;
interface IERC5267 {
/**
* @dev MAY be emitted to signal that the domain could have changed.
*/
event EIP712DomainChanged();
/**
* @dev returns the fields and values that describe the domain separator used by this contract for EIP-712
* signature.
*/
function eip712Domain()
external
view
returns (
bytes1 fields,
string memory name,
string memory version,
uint256 chainId,
address verifyingContract,
bytes32 salt,
uint256[] memory extensions
);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed
* behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an
* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
*
* TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
* possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.
*
* CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.
*/
abstract contract Initializable {
/**
* @dev Indicates that the contract has been initialized.
*/
bool private _initialized;
/**
* @dev Indicates that the contract is in the process of being initialized.
*/
bool private _initializing;
/**
* @dev Modifier to protect an initializer function from being invoked twice.
*/
modifier initializer() {
require(_initializing || !_initialized, "Initializable: contract is already initialized");
bool isTopLevelCall = !_initializing;
if (isTopLevelCall) {
_initializing = true;
_initialized = true;
}
_;
if (isTopLevelCall) {
_initializing = false;
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;
import './IUniswapV2Router01.sol';
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b - 1) / b can overflow on addition, so we distribute.
return a == 0 ? 0 : (a - 1) / b + 1;
}
/**
* @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
* @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
* with further edits by Uniswap Labs also under MIT license.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
unchecked {
// 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
// use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2^256 + prod0.
uint256 prod0; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(x, y, not(0))
prod0 := mul(x, y)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division.
if (prod1 == 0) {
// Solidity will revert if denominator == 0, unlike the div opcode on its own.
// The surrounding unchecked block does not change this fact.
// See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
return prod0 / denominator;
}
// Make sure the result is less than 2^256. Also prevents denominator == 0.
require(denominator > prod1, "Math: mulDiv overflow");
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0].
uint256 remainder;
assembly {
// Compute remainder using mulmod.
remainder := mulmod(x, y, denominator)
// Subtract 256 bit number from 512 bit number.
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
// See https://cs.stackexchange.com/q/138556/92363.
// Does not overflow because the denominator cannot be zero at this stage in the function.
uint256 twos = denominator & (~denominator + 1);
assembly {
// Divide denominator by twos.
denominator := div(denominator, twos)
// Divide [prod1 prod0] by twos.
prod0 := div(prod0, twos)
// Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
twos := add(div(sub(0, twos), twos), 1)
}
// Shift in bits from prod1 into prod0.
prod0 |= prod1 * twos;
// Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
// that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
// four bits. That is, denominator * inv = 1 mod 2^4.
uint256 inverse = (3 * denominator) ^ 2;
// Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
// in modular arithmetic, doubling the correct bits in each step.
inverse *= 2 - denominator * inverse; // inverse mod 2^8
inverse *= 2 - denominator * inverse; // inverse mod 2^16
inverse *= 2 - denominator * inverse; // inverse mod 2^32
inverse *= 2 - denominator * inverse; // inverse mod 2^64
inverse *= 2 - denominator * inverse; // inverse mod 2^128
inverse *= 2 - denominator * inverse; // inverse mod 2^256
// Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
// This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
// less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inverse;
return result;
}
}
/**
* @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
uint256 result = mulDiv(x, y, denominator);
if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
result += 1;
}
return result;
}
/**
* @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
*
* Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
*/
function sqrt(uint256 a) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
// For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
//
// We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
// `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
//
// This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
// → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
// → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
//
// Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
uint256 result = 1 << (log2(a) >> 1);
// At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
// since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
// every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
// into the expected uint128 result.
unchecked {
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
return min(result, a / result);
}
}
/**
* @notice Calculates sqrt(a), following the selected rounding direction.
*/
function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = sqrt(a);
return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
}
}
/**
* @dev Return the log in base 2, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 128;
}
if (value >> 64 > 0) {
value >>= 64;
result += 64;
}
if (value >> 32 > 0) {
value >>= 32;
result += 32;
}
if (value >> 16 > 0) {
value >>= 16;
result += 16;
}
if (value >> 8 > 0) {
value >>= 8;
result += 8;
}
if (value >> 4 > 0) {
value >>= 4;
result += 4;
}
if (value >> 2 > 0) {
value >>= 2;
result += 2;
}
if (value >> 1 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 2, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log2(value);
return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 10, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >= 10 ** 64) {
value /= 10 ** 64;
result += 64;
}
if (value >= 10 ** 32) {
value /= 10 ** 32;
result += 32;
}
if (value >= 10 ** 16) {
value /= 10 ** 16;
result += 16;
}
if (value >= 10 ** 8) {
value /= 10 ** 8;
result += 8;
}
if (value >= 10 ** 4) {
value /= 10 ** 4;
result += 4;
}
if (value >= 10 ** 2) {
value /= 10 ** 2;
result += 2;
}
if (value >= 10 ** 1) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 10, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log10(value);
return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 256, rounded down, of a positive value.
* Returns 0 if given 0.
*
* Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
*/
function log256(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 16;
}
if (value >> 64 > 0) {
value >>= 64;
result += 8;
}
if (value >> 32 > 0) {
value >>= 32;
result += 4;
}
if (value >> 16 > 0) {
value >>= 16;
result += 2;
}
if (value >> 8 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 256, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log256(value);
return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "./Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.0;
import "./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() public virtual {
address sender = _msgSender();
require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
_transferOwnership(sender);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)
pragma solidity ^0.8.8;
import "./StorageSlot.sol";
// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
// | length | 0x BB |
type ShortString is bytes32;
/**
* @dev This library provides functions to convert short memory strings
* into a `ShortString` type that can be used as an immutable variable.
*
* Strings of arbitrary length can be optimized using this library if
* they are short enough (up to 31 bytes) by packing them with their
* length (1 byte) in a single EVM word (32 bytes). Additionally, a
* fallback mechanism can be used for every other case.
*
* Usage example:
*
* ```solidity
* contract Named {
* using ShortStrings for *;
*
* ShortString private immutable _name;
* string private _nameFallback;
*
* constructor(string memory contractName) {
* _name = contractName.toShortStringWithFallback(_nameFallback);
* }
*
* function name() external view returns (string memory) {
* return _name.toStringWithFallback(_nameFallback);
* }
* }
* ```
*/
library ShortStrings {
// Used as an identifier for strings longer than 31 bytes.
bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;
error StringTooLong(string str);
error InvalidShortString();
/**
* @dev Encode a string of at most 31 chars into a `ShortString`.
*
* This will trigger a `StringTooLong` error is the input string is too long.
*/
function toShortString(string memory str) internal pure returns (ShortString) {
bytes memory bstr = bytes(str);
if (bstr.length > 31) {
revert StringTooLong(str);
}
return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));
}
/**
* @dev Decode a `ShortString` back to a "normal" string.
*/
function toString(ShortString sstr) internal pure returns (string memory) {
uint256 len = byteLength(sstr);
// using `new string(len)` would work locally but is not memory safe.
string memory str = new string(32);
/// @solidity memory-safe-assembly
assembly {
mstore(str, len)
mstore(add(str, 0x20), sstr)
}
return str;
}
/**
* @dev Return the length of a `ShortString`.
*/
function byteLength(ShortString sstr) internal pure returns (uint256) {
uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;
if (result > 31) {
revert InvalidShortString();
}
return result;
}
/**
* @dev Encode a string into a `ShortString`, or write it to storage if it is too long.
*/
function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {
if (bytes(value).length < 32) {
return toShortString(value);
} else {
StorageSlot.getStringSlot(store).value = value;
return ShortString.wrap(_FALLBACK_SENTINEL);
}
}
/**
* @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.
*/
function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {
if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {
return toString(value);
} else {
return store;
}
}
/**
* @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.
*
* WARNING: This will return the "byte length" of the string. This may not reflect the actual length in terms of
* actual characters as the UTF-8 encoding of a single character can span over multiple bytes.
*/
function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {
if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {
return byteLength(value);
} else {
return bytes(store).length;
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard signed math utilities missing in the Solidity language.
*/
library SignedMath {
/**
* @dev Returns the largest of two signed numbers.
*/
function max(int256 a, int256 b) internal pure returns (int256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two signed numbers.
*/
function min(int256 a, int256 b) internal pure returns (int256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two signed numbers without overflow.
* The result is rounded towards zero.
*/
function average(int256 a, int256 b) internal pure returns (int256) {
// Formula from the book "Hacker's Delight"
int256 x = (a & b) + ((a ^ b) >> 1);
return x + (int256(uint256(x) >> 255) & (a ^ b));
}
/**
* @dev Returns the absolute unsigned value of a signed value.
*/
function abs(int256 n) internal pure returns (uint256) {
unchecked {
// must be unchecked in order to support `n = type(int256).min`
return uint256(n >= 0 ? n : -n);
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
pragma solidity ^0.8.0;
/**
* @dev Library for reading and writing primitive types to specific storage slots.
*
* Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
* This library helps with reading and writing to such slots without the need for inline assembly.
*
* The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
*
* Example usage to set ERC1967 implementation slot:
* ```solidity
* contract ERC1967 {
* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
*
* function _getImplementation() internal view returns (address) {
* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
* }
*
* function _setImplementation(address newImplementation) internal {
* require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
* }
* }
* ```
*
* _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._
* _Available since v4.9 for `string`, `bytes`._
*/
library StorageSlot {
struct AddressSlot {
address value;
}
struct BooleanSlot {
bool value;
}
struct Bytes32Slot {
bytes32 value;
}
struct Uint256Slot {
uint256 value;
}
struct StringSlot {
string value;
}
struct BytesSlot {
bytes value;
}
/**
* @dev Returns an `AddressSlot` with member `value` located at `slot`.
*/
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BooleanSlot` with member `value` located at `slot`.
*/
function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
*/
function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Uint256Slot` with member `value` located at `slot`.
*/
function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` with member `value` located at `slot`.
*/
function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` representation of the string storage pointer `store`.
*/
function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
/**
* @dev Returns an `BytesSlot` with member `value` located at `slot`.
*/
function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
*/
function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)
pragma solidity ^0.8.0;
import "./Math.sol";
import "./SignedMath.sol";
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
unchecked {
uint256 length = Math.log10(value) + 1;
string memory buffer = new string(length);
uint256 ptr;
/// @solidity memory-safe-assembly
assembly {
ptr := add(buffer, add(32, length))
}
while (true) {
ptr--;
/// @solidity memory-safe-assembly
assembly {
mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
}
value /= 10;
if (value == 0) break;
}
return buffer;
}
}
/**
* @dev Converts a `int256` to its ASCII `string` decimal representation.
*/
function toString(int256 value) internal pure returns (string memory) {
return string(abi.encodePacked(value < 0 ? "-" : "", toString(SignedMath.abs(value))));
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
unchecked {
return toHexString(value, Math.log256(value) + 1);
}
}
/**
* @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] = _SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
/**
* @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
*/
function toHexString(address addr) internal pure returns (string memory) {
return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
}
/**
* @dev Returns true if the two strings are equal.
*/
function equal(string memory a, string memory b) internal pure returns (bool) {
return keccak256(bytes(a)) == keccak256(bytes(b));
}
}
// SPDX-License-Identifier: No License
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./Ownable2Step.sol";
abstract contract TokenRecover is Ownable2Step {
function recoverERC20(address tokenAddress, uint256 amount) external onlyOwner {
require(tokenAddress != address(this), "TokenRecover: Cannot recover this token");
IERC20(tokenAddress).transfer(owner(), amount);
}
}
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1585": {
"entryPoint": null,
"id": 1585,
"parameterSlots": 2,
"returnSlots": 0
},
"@_1741": {
"entryPoint": null,
"id": 1741,
"parameterSlots": 2,
"returnSlots": 0
},
"@_2369": {
"entryPoint": null,
"id": 2369,
"parameterSlots": 1,
"returnSlots": 0
},
"@_321": {
"entryPoint": null,
"id": 321,
"parameterSlots": 0,
"returnSlots": 0
},
"@_4300": {
"entryPoint": null,
"id": 4300,
"parameterSlots": 0,
"returnSlots": 0
},
"@_afterTokenTransfer_1125": {
"entryPoint": 4663,
"id": 1125,
"parameterSlots": 3,
"returnSlots": 0
},
"@_afterTokenTransfer_2282": {
"entryPoint": 4987,
"id": 2282,
"parameterSlots": 3,
"returnSlots": 0
},
"@_beforeTokenTransfer_1091": {
"entryPoint": 4214,
"id": 1091,
"parameterSlots": 3,
"returnSlots": 0
},
"@_beforeTokenTransfer_2271": {
"entryPoint": 4910,
"id": 2271,
"parameterSlots": 3,
"returnSlots": 0
},
"@_buildDomainSeparator_1632": {
"entryPoint": 1072,
"id": 1632,
"parameterSlots": 0,
"returnSlots": 1
},
"@_checkOwner_4331": {
"entryPoint": 4031,
"id": 4331,
"parameterSlots": 0,
"returnSlots": 0
},
"@_excludeFromLimits_971": {
"entryPoint": 2814,
"id": 971,
"parameterSlots": 2,
"returnSlots": 0
},
"@_maxWalletSafeLimit_1006": {
"entryPoint": 4176,
"id": 1006,
"parameterSlots": 0,
"returnSlots": 1
},
"@_mint_2100": {
"entryPoint": 3349,
"id": 2100,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_11": {
"entryPoint": 919,
"id": 11,
"parameterSlots": 0,
"returnSlots": 1
},
"@_transferOwnership_4388": {
"entryPoint": 3714,
"id": 4388,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transferOwnership_4449": {
"entryPoint": 927,
"id": 4449,
"parameterSlots": 1,
"returnSlots": 0
},
"@balanceOf_1795": {
"entryPoint": 4915,
"id": 1795,
"parameterSlots": 1,
"returnSlots": 1
},
"@decimals_346": {
"entryPoint": 2985,
"id": 346,
"parameterSlots": 0,
"returnSlots": 1
},
"@developerAddressSetup_493": {
"entryPoint": 1363,
"id": 493,
"parameterSlots": 1,
"returnSlots": 0
},
"@developerFeesSetup_581": {
"entryPoint": 1656,
"id": 581,
"parameterSlots": 3,
"returnSlots": 0
},
"@excludeFromFees_602": {
"entryPoint": 2627,
"id": 602,
"parameterSlots": 2,
"returnSlots": 0
},
"@excludeFromTradingRestriction_1046": {
"entryPoint": 3162,
"id": 1046,
"parameterSlots": 2,
"returnSlots": 0
},
"@getStringSlot_4880": {
"entryPoint": 4021,
"id": 4880,
"parameterSlots": 1,
"returnSlots": 1
},
"@owner_4317": {
"entryPoint": 4858,
"id": 4317,
"parameterSlots": 0,
"returnSlots": 1
},
"@toShortStringWithFallback_4629": {
"entryPoint": 984,
"id": 4629,
"parameterSlots": 2,
"returnSlots": 1
},
"@toShortString_4531": {
"entryPoint": 3912,
"id": 4531,
"parameterSlots": 1,
"returnSlots": 1
},
"@totalSupply_1781": {
"entryPoint": 4900,
"id": 1781,
"parameterSlots": 0,
"returnSlots": 1
},
"@updateMaxWalletAmount_995": {
"entryPoint": 2994,
"id": 995,
"parameterSlots": 1,
"returnSlots": 0
},
"@updateSwapThreshold_433": {
"entryPoint": 1165,
"id": 433,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 6807,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 7797,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 6721,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8220,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7051,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7884,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8524,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8676,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7301,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8828,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8027,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7651,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint16_to_t_uint16_fromStack": {
"entryPoint": 7138,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 6738,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 7374,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 7814,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
"entryPoint": 6824,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8285,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 7090,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 7923,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8563,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8715,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 7340,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8867,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8066,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 7690,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
"entryPoint": 7155,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed": {
"entryPoint": 7724,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 7957,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_dataslot_t_bytes_memory_ptr": {
"entryPoint": 8332,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 5345,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 8321,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 5187,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 6917,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint16": {
"entryPoint": 7511,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 8100,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 6655,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_exp_helper": {
"entryPoint": 6112,
"id": null,
"parameterSlots": 4,
"returnSlots": 2
},
"checked_exp_t_uint256_t_uint8": {
"entryPoint": 6452,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_exp_unsigned": {
"entryPoint": 6203,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 6533,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint16": {
"entryPoint": 7450,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 5666,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 6787,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 7785,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 6711,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint16": {
"entryPoint": 7124,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 6755,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 5481,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 6439,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 5627,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32": {
"entryPoint": 8371,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 5501,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 5821,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 8159,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 5366,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 5292,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 5791,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"identity": {
"entryPoint": 5491,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 5759,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 6052,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 6608,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 5245,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 7403,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 5198,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 5541,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"read_from_memoryt_bytes32": {
"entryPoint": 8348,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"round_up_to_mul_of_32": {
"entryPoint": 8203,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 5382,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_1_unsigned": {
"entryPoint": 6099,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 5746,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 5599,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e": {
"entryPoint": 6934,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62": {
"entryPoint": 7843,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": {
"entryPoint": 8483,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5": {
"entryPoint": 8597,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706": {
"entryPoint": 7184,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd": {
"entryPoint": 8749,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e": {
"entryPoint": 7986,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31": {
"entryPoint": 7572,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 5395,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 5551,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 5594,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:23007:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "66:40:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "93:5:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "87:5:25"
},
"nodeType": "YulFunctionCall",
"src": "87:12:25"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "77:6:25"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "49:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "59:6:25",
"type": ""
}
],
"src": "7:99:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "140:152:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "157:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "160:77:25",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "150:6:25"
},
"nodeType": "YulFunctionCall",
"src": "150:88:25"
},
"nodeType": "YulExpressionStatement",
"src": "150:88:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "254:1:25",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "257:4:25",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "247:6:25"
},
"nodeType": "YulFunctionCall",
"src": "247:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "247:15:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "278:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "281:4:25",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "271:6:25"
},
"nodeType": "YulFunctionCall",
"src": "271:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "271:15:25"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "112:180:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "326:152:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "343:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "346:77:25",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "336:6:25"
},
"nodeType": "YulFunctionCall",
"src": "336:88:25"
},
"nodeType": "YulExpressionStatement",
"src": "336:88:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "440:1:25",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "443:4:25",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "433:6:25"
},
"nodeType": "YulFunctionCall",
"src": "433:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "433:15:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "464:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "467:4:25",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "457:6:25"
},
"nodeType": "YulFunctionCall",
"src": "457:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "457:15:25"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "298:180:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "535:269:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "545:22:25",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "559:4:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "565:1:25",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "555:3:25"
},
"nodeType": "YulFunctionCall",
"src": "555:12:25"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "545:6:25"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "576:38:25",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "606:4:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "612:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "602:3:25"
},
"nodeType": "YulFunctionCall",
"src": "602:12:25"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "580:18:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "653:51:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "667:27:25",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "681:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "689:4:25",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "677:3:25"
},
"nodeType": "YulFunctionCall",
"src": "677:17:25"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "667:6:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "633:18:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "626:6:25"
},
"nodeType": "YulFunctionCall",
"src": "626:26:25"
},
"nodeType": "YulIf",
"src": "623:81:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "756:42:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "770:16:25"
},
"nodeType": "YulFunctionCall",
"src": "770:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "770:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "720:18:25"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "743:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "751:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "740:2:25"
},
"nodeType": "YulFunctionCall",
"src": "740:14:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "717:2:25"
},
"nodeType": "YulFunctionCall",
"src": "717:38:25"
},
"nodeType": "YulIf",
"src": "714:84:25"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "519:4:25",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "528:6:25",
"type": ""
}
],
"src": "484:320:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "864:87:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "874:11:25",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "882:3:25"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "874:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "902:1:25",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "905:3:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "895:6:25"
},
"nodeType": "YulFunctionCall",
"src": "895:14:25"
},
"nodeType": "YulExpressionStatement",
"src": "895:14:25"
},
{
"nodeType": "YulAssignment",
"src": "918:26:25",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "936:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "939:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "926:9:25"
},
"nodeType": "YulFunctionCall",
"src": "926:18:25"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "918:4:25"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "851:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "859:4:25",
"type": ""
}
],
"src": "810:141:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1001:49:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1011:33:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1029:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1036:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1025:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1025:14:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1041:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1021:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1021:23:25"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1011:6:25"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "984:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "994:6:25",
"type": ""
}
],
"src": "957:93:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1109:54:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1119:37:25",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "1144:4:25"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1150:5:25"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1140:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1140:16:25"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "1119:8:25"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "1084:4:25",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1090:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "1100:8:25",
"type": ""
}
],
"src": "1056:107:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1245:317:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1255:35:25",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "1276:10:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1288:1:25",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1272:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1272:18:25"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "1259:9:25",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1299:109:25",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "1330:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1341:66:25",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "1311:18:25"
},
"nodeType": "YulFunctionCall",
"src": "1311:97:25"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "1303:4:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1417:51:25",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "1448:9:25"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "1459:8:25"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "1429:18:25"
},
"nodeType": "YulFunctionCall",
"src": "1429:39:25"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "1417:8:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1477:30:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1490:5:25"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "1501:4:25"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1497:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1497:9:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1486:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1486:21:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1477:5:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1516:40:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1529:5:25"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "1540:8:25"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "1550:4:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1536:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1536:19:25"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "1526:2:25"
},
"nodeType": "YulFunctionCall",
"src": "1526:30:25"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1516:6:25"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1206:5:25",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "1213:10:25",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "1225:8:25",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "1238:6:25",
"type": ""
}
],
"src": "1169:393:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1613:32:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1623:16:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1634:5:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1623:7:25"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1595:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1605:7:25",
"type": ""
}
],
"src": "1568:77:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1683:28:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1693:12:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1700:5:25"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "1693:3:25"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1669:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "1679:3:25",
"type": ""
}
],
"src": "1651:60:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1777:82:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1787:66:25",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1845:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1827:17:25"
},
"nodeType": "YulFunctionCall",
"src": "1827:24:25"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "1818:8:25"
},
"nodeType": "YulFunctionCall",
"src": "1818:34:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1800:17:25"
},
"nodeType": "YulFunctionCall",
"src": "1800:53:25"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "1787:9:25"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1757:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "1767:9:25",
"type": ""
}
],
"src": "1717:142:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1912:28:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1922:12:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1929:5:25"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "1922:3:25"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1898:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "1908:3:25",
"type": ""
}
],
"src": "1865:75:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2022:193:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2032:63:25",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "2087:7:25"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "2056:30:25"
},
"nodeType": "YulFunctionCall",
"src": "2056:39:25"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "2036:16:25",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "2111:4:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "2151:4:25"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "2145:5:25"
},
"nodeType": "YulFunctionCall",
"src": "2145:11:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2158:6:25"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "2190:16:25"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "2166:23:25"
},
"nodeType": "YulFunctionCall",
"src": "2166:41:25"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "2117:27:25"
},
"nodeType": "YulFunctionCall",
"src": "2117:91:25"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "2104:6:25"
},
"nodeType": "YulFunctionCall",
"src": "2104:105:25"
},
"nodeType": "YulExpressionStatement",
"src": "2104:105:25"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "1999:4:25",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2005:6:25",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "2013:7:25",
"type": ""
}
],
"src": "1946:269:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2270:24:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2280:8:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2287:1:25",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2280:3:25"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2266:3:25",
"type": ""
}
],
"src": "2221:73:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2353:136:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2363:46:25",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "2377:30:25"
},
"nodeType": "YulFunctionCall",
"src": "2377:32:25"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "2367:6:25",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "2462:4:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2468:6:25"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "2476:6:25"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "2418:43:25"
},
"nodeType": "YulFunctionCall",
"src": "2418:65:25"
},
"nodeType": "YulExpressionStatement",
"src": "2418:65:25"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "2339:4:25",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2345:6:25",
"type": ""
}
],
"src": "2300:189:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2545:136:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2612:63:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "2656:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2663:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "2626:29:25"
},
"nodeType": "YulFunctionCall",
"src": "2626:39:25"
},
"nodeType": "YulExpressionStatement",
"src": "2626:39:25"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "2565:5:25"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2572:3:25"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2562:2:25"
},
"nodeType": "YulFunctionCall",
"src": "2562:14:25"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2577:26:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2579:22:25",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "2592:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2599:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2588:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2588:13:25"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "2579:5:25"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2559:2:25",
"statements": []
},
"src": "2555:120:25"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "2533:5:25",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2540:3:25",
"type": ""
}
],
"src": "2495:186:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2766:464:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2792:431:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2806:54:25",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2854:5:25"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "2822:31:25"
},
"nodeType": "YulFunctionCall",
"src": "2822:38:25"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "2810:8:25",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2873:63:25",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "2896:8:25"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "2924:10:25"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "2906:17:25"
},
"nodeType": "YulFunctionCall",
"src": "2906:29:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2892:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2892:44:25"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "2877:11:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3093:27:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3095:23:25",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "3110:8:25"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "3095:11:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "3077:10:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3089:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3074:2:25"
},
"nodeType": "YulFunctionCall",
"src": "3074:18:25"
},
"nodeType": "YulIf",
"src": "3071:49:25"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "3162:11:25"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "3179:8:25"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "3207:3:25"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "3189:17:25"
},
"nodeType": "YulFunctionCall",
"src": "3189:22:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3175:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3175:37:25"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "3133:28:25"
},
"nodeType": "YulFunctionCall",
"src": "3133:80:25"
},
"nodeType": "YulExpressionStatement",
"src": "3133:80:25"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "2783:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2788:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2780:2:25"
},
"nodeType": "YulFunctionCall",
"src": "2780:11:25"
},
"nodeType": "YulIf",
"src": "2777:446:25"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2742:5:25",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "2749:3:25",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "2754:10:25",
"type": ""
}
],
"src": "2687:543:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3299:54:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3309:37:25",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "3334:4:25"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3340:5:25"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "3330:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3330:16:25"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "3309:8:25"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "3274:4:25",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3280:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "3290:8:25",
"type": ""
}
],
"src": "3236:117:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3410:118:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3420:68:25",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3469:1:25",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "3472:5:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3465:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3465:13:25"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3484:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3480:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3480:6:25"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "3436:28:25"
},
"nodeType": "YulFunctionCall",
"src": "3436:51:25"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3432:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3432:56:25"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "3424:4:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3497:25:25",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3511:4:25"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "3517:4:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3507:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3507:15:25"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3497:6:25"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "3387:4:25",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "3393:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3403:6:25",
"type": ""
}
],
"src": "3359:169:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3614:214:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3747:37:25",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3774:4:25"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "3780:3:25"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "3755:18:25"
},
"nodeType": "YulFunctionCall",
"src": "3755:29:25"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3747:4:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3793:29:25",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3804:4:25"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3814:1:25",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "3817:3:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3810:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3810:11:25"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3801:2:25"
},
"nodeType": "YulFunctionCall",
"src": "3801:21:25"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "3793:4:25"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "3595:4:25",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "3601:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "3609:4:25",
"type": ""
}
],
"src": "3533:295:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3925:1303:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3936:51:25",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3983:3:25"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3950:32:25"
},
"nodeType": "YulFunctionCall",
"src": "3950:37:25"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "3940:6:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4072:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "4074:16:25"
},
"nodeType": "YulFunctionCall",
"src": "4074:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "4074:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4044:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4052:18:25",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4041:2:25"
},
"nodeType": "YulFunctionCall",
"src": "4041:30:25"
},
"nodeType": "YulIf",
"src": "4038:56:25"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4104:52:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4150:4:25"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "4144:5:25"
},
"nodeType": "YulFunctionCall",
"src": "4144:11:25"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "4118:25:25"
},
"nodeType": "YulFunctionCall",
"src": "4118:38:25"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "4108:6:25",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4249:4:25"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "4255:6:25"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4263:6:25"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "4203:45:25"
},
"nodeType": "YulFunctionCall",
"src": "4203:67:25"
},
"nodeType": "YulExpressionStatement",
"src": "4203:67:25"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4280:18:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4297:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "4284:9:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4308:17:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4321:4:25",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "4308:9:25"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "4372:611:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4386:37:25",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4405:6:25"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4417:4:25",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4413:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4413:9:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4401:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4401:22:25"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "4390:7:25",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4437:51:25",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4483:4:25"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "4451:31:25"
},
"nodeType": "YulFunctionCall",
"src": "4451:37:25"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "4441:6:25",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4501:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4510:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "4505:1:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4569:163:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "4594:6:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4612:3:25"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "4617:9:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4608:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4608:19:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4602:5:25"
},
"nodeType": "YulFunctionCall",
"src": "4602:26:25"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "4587:6:25"
},
"nodeType": "YulFunctionCall",
"src": "4587:42:25"
},
"nodeType": "YulExpressionStatement",
"src": "4587:42:25"
},
{
"nodeType": "YulAssignment",
"src": "4646:24:25",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "4660:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4668:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4656:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4656:14:25"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "4646:6:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4687:31:25",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "4704:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4715:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4700:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4700:18:25"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "4687:9:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4535:1:25"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "4538:7:25"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4532:2:25"
},
"nodeType": "YulFunctionCall",
"src": "4532:14:25"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4547:21:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4549:17:25",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4558:1:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4561:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4554:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4554:12:25"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4549:1:25"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4528:3:25",
"statements": []
},
"src": "4524:208:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4768:156:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4786:43:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4813:3:25"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "4818:9:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4809:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4809:19:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4803:5:25"
},
"nodeType": "YulFunctionCall",
"src": "4803:26:25"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "4790:9:25",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "4853:6:25"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "4880:9:25"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4895:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4903:4:25",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4891:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4891:17:25"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "4861:18:25"
},
"nodeType": "YulFunctionCall",
"src": "4861:48:25"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "4846:6:25"
},
"nodeType": "YulFunctionCall",
"src": "4846:64:25"
},
"nodeType": "YulExpressionStatement",
"src": "4846:64:25"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "4751:7:25"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4760:6:25"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4748:2:25"
},
"nodeType": "YulFunctionCall",
"src": "4748:19:25"
},
"nodeType": "YulIf",
"src": "4745:179:25"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4944:4:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4958:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4966:1:25",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4954:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4954:14:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4970:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4950:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4950:22:25"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "4937:6:25"
},
"nodeType": "YulFunctionCall",
"src": "4937:36:25"
},
"nodeType": "YulExpressionStatement",
"src": "4937:36:25"
}
]
},
"nodeType": "YulCase",
"src": "4365:618:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4370:1:25",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "5000:222:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5014:14:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5027:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5018:5:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5051:67:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5069:35:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5088:3:25"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5093:9:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5084:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5084:19:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5078:5:25"
},
"nodeType": "YulFunctionCall",
"src": "5078:26:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5069:5:25"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5044:6:25"
},
"nodeType": "YulIf",
"src": "5041:77:25"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5138:4:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5197:5:25"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5204:6:25"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "5144:52:25"
},
"nodeType": "YulFunctionCall",
"src": "5144:67:25"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5131:6:25"
},
"nodeType": "YulFunctionCall",
"src": "5131:81:25"
},
"nodeType": "YulExpressionStatement",
"src": "5131:81:25"
}
]
},
"nodeType": "YulCase",
"src": "4992:230:25",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "4345:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4353:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4342:2:25"
},
"nodeType": "YulFunctionCall",
"src": "4342:14:25"
},
"nodeType": "YulSwitch",
"src": "4335:887:25"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "3914:4:25",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "3920:3:25",
"type": ""
}
],
"src": "3833:1395:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5262:152:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5279:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5282:77:25",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5272:6:25"
},
"nodeType": "YulFunctionCall",
"src": "5272:88:25"
},
"nodeType": "YulExpressionStatement",
"src": "5272:88:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5376:1:25",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5379:4:25",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5369:6:25"
},
"nodeType": "YulFunctionCall",
"src": "5369:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "5369:15:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5400:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5403:4:25",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5393:6:25"
},
"nodeType": "YulFunctionCall",
"src": "5393:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "5393:15:25"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "5234:180:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5471:51:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5481:34:25",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5506:1:25",
"type": "",
"value": "1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5509:5:25"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "5502:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5502:13:25"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "5481:8:25"
}
]
}
]
},
"name": "shift_right_1_unsigned",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5452:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "5462:8:25",
"type": ""
}
],
"src": "5420:102:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5601:775:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5611:15:25",
"value": {
"name": "_power",
"nodeType": "YulIdentifier",
"src": "5620:6:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "5611:5:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5635:14:25",
"value": {
"name": "_base",
"nodeType": "YulIdentifier",
"src": "5644:5:25"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "5635:4:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5693:677:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5781:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "5783:16:25"
},
"nodeType": "YulFunctionCall",
"src": "5783:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "5783:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "5759:4:25"
},
{
"arguments": [
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "5769:3:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "5774:4:25"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "5765:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5765:14:25"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5756:2:25"
},
"nodeType": "YulFunctionCall",
"src": "5756:24:25"
},
"nodeType": "YulIf",
"src": "5753:50:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5848:419:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6228:25:25",
"value": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6241:5:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6248:4:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "6237:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6237:16:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6228:5:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "5823:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5833:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5819:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5819:16:25"
},
"nodeType": "YulIf",
"src": "5816:451:25"
},
{
"nodeType": "YulAssignment",
"src": "6280:23:25",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6292:4:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6298:4:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "6288:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6288:15:25"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6280:4:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6316:44:25",
"value": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6351:8:25"
}
],
"functionName": {
"name": "shift_right_1_unsigned",
"nodeType": "YulIdentifier",
"src": "6328:22:25"
},
"nodeType": "YulFunctionCall",
"src": "6328:32:25"
},
"variableNames": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6316:8:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "5669:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5679:1:25",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5666:2:25"
},
"nodeType": "YulFunctionCall",
"src": "5666:15:25"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "5682:2:25",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "5662:3:25",
"statements": []
},
"src": "5658:712:25"
}
]
},
"name": "checked_exp_helper",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "_power",
"nodeType": "YulTypedName",
"src": "5556:6:25",
"type": ""
},
{
"name": "_base",
"nodeType": "YulTypedName",
"src": "5564:5:25",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "5571:8:25",
"type": ""
},
{
"name": "max",
"nodeType": "YulTypedName",
"src": "5581:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "5589:5:25",
"type": ""
},
{
"name": "base",
"nodeType": "YulTypedName",
"src": "5596:4:25",
"type": ""
}
],
"src": "5528:848:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6442:1013:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6637:20:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6639:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6648:1:25",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6639:5:25"
}
]
},
{
"nodeType": "YulLeave",
"src": "6650:5:25"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6627:8:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6620:6:25"
},
"nodeType": "YulFunctionCall",
"src": "6620:16:25"
},
"nodeType": "YulIf",
"src": "6617:40:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6682:20:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6684:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6693:1:25",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6684:5:25"
}
]
},
{
"nodeType": "YulLeave",
"src": "6695:5:25"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6676:4:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6669:6:25"
},
"nodeType": "YulFunctionCall",
"src": "6669:12:25"
},
"nodeType": "YulIf",
"src": "6666:36:25"
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "6812:20:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6814:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6823:1:25",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6814:5:25"
}
]
},
{
"nodeType": "YulLeave",
"src": "6825:5:25"
}
]
},
"nodeType": "YulCase",
"src": "6805:27:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6810:1:25",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "6856:176:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6891:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6893:16:25"
},
"nodeType": "YulFunctionCall",
"src": "6893:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "6893:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6876:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6886:3:25",
"type": "",
"value": "255"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6873:2:25"
},
"nodeType": "YulFunctionCall",
"src": "6873:17:25"
},
"nodeType": "YulIf",
"src": "6870:43:25"
},
{
"nodeType": "YulAssignment",
"src": "6926:25:25",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6939:1:25",
"type": "",
"value": "2"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6942:8:25"
}
],
"functionName": {
"name": "exp",
"nodeType": "YulIdentifier",
"src": "6935:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6935:16:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6926:5:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6982:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6984:16:25"
},
"nodeType": "YulFunctionCall",
"src": "6984:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "6984:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6970:5:25"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "6977:3:25"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6967:2:25"
},
"nodeType": "YulFunctionCall",
"src": "6967:14:25"
},
"nodeType": "YulIf",
"src": "6964:40:25"
},
{
"nodeType": "YulLeave",
"src": "7017:5:25"
}
]
},
"nodeType": "YulCase",
"src": "6841:191:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6846:1:25",
"type": "",
"value": "2"
}
}
],
"expression": {
"name": "base",
"nodeType": "YulIdentifier",
"src": "6762:4:25"
},
"nodeType": "YulSwitch",
"src": "6755:277:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7164:123:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7178:28:25",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7191:4:25"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7197:8:25"
}
],
"functionName": {
"name": "exp",
"nodeType": "YulIdentifier",
"src": "7187:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7187:19:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7178:5:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7237:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7239:16:25"
},
"nodeType": "YulFunctionCall",
"src": "7239:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "7239:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7225:5:25"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "7232:3:25"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7222:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7222:14:25"
},
"nodeType": "YulIf",
"src": "7219:40:25"
},
{
"nodeType": "YulLeave",
"src": "7272:5:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7067:4:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7073:2:25",
"type": "",
"value": "11"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7064:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7064:12:25"
},
{
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7081:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7091:2:25",
"type": "",
"value": "78"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7078:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7078:16:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7060:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7060:35:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7116:4:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7122:3:25",
"type": "",
"value": "307"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7113:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7113:13:25"
},
{
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7131:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7141:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7128:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7128:16:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7109:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7109:36:25"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "7044:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7044:111:25"
},
"nodeType": "YulIf",
"src": "7041:246:25"
},
{
"nodeType": "YulAssignment",
"src": "7297:57:25",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7331:1:25",
"type": "",
"value": "1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7334:4:25"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7340:8:25"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "7350:3:25"
}
],
"functionName": {
"name": "checked_exp_helper",
"nodeType": "YulIdentifier",
"src": "7312:18:25"
},
"nodeType": "YulFunctionCall",
"src": "7312:42:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7297:5:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7304:4:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7393:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7395:16:25"
},
"nodeType": "YulFunctionCall",
"src": "7395:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "7395:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7370:5:25"
},
{
"arguments": [
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "7381:3:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7386:4:25"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "7377:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7377:14:25"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7367:2:25"
},
"nodeType": "YulFunctionCall",
"src": "7367:25:25"
},
"nodeType": "YulIf",
"src": "7364:51:25"
},
{
"nodeType": "YulAssignment",
"src": "7424:25:25",
"value": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7437:5:25"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7444:4:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7433:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7433:16:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7424:5:25"
}
]
}
]
},
"name": "checked_exp_unsigned",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nodeType": "YulTypedName",
"src": "6412:4:25",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "6418:8:25",
"type": ""
},
{
"name": "max",
"nodeType": "YulTypedName",
"src": "6428:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "6436:5:25",
"type": ""
}
],
"src": "6382:1073:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7504:43:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7514:27:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7529:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7536:4:25",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7525:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7525:16:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "7514:7:25"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7486:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "7496:7:25",
"type": ""
}
],
"src": "7461:86:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7617:217:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7627:31:25",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7653:4:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7635:17:25"
},
"nodeType": "YulFunctionCall",
"src": "7635:23:25"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7627:4:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7667:37:25",
"value": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7695:8:25"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "7679:15:25"
},
"nodeType": "YulFunctionCall",
"src": "7679:25:25"
},
"variableNames": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7667:8:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7714:113:25",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7744:4:25"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7750:8:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7760:66:25",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "checked_exp_unsigned",
"nodeType": "YulIdentifier",
"src": "7723:20:25"
},
"nodeType": "YulFunctionCall",
"src": "7723:104:25"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7714:5:25"
}
]
}
]
},
"name": "checked_exp_t_uint256_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nodeType": "YulTypedName",
"src": "7592:4:25",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "7598:8:25",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "7611:5:25",
"type": ""
}
],
"src": "7553:281:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7888:362:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7898:25:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7921:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7903:17:25"
},
"nodeType": "YulFunctionCall",
"src": "7903:20:25"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7898:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7932:25:25",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7955:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7937:17:25"
},
"nodeType": "YulFunctionCall",
"src": "7937:20:25"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7932:1:25"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7966:28:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7989:1:25"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7992:1:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7985:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7985:9:25"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "7970:11:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8003:41:25",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "8032:11:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8014:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8014:30:25"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "8003:7:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8221:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "8223:16:25"
},
"nodeType": "YulFunctionCall",
"src": "8223:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "8223:18:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8154:1:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8147:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8147:9:25"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8177:1:25"
},
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "8184:7:25"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8193:1:25"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "8180:3:25"
},
"nodeType": "YulFunctionCall",
"src": "8180:15:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "8174:2:25"
},
"nodeType": "YulFunctionCall",
"src": "8174:22:25"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "8127:2:25"
},
"nodeType": "YulFunctionCall",
"src": "8127:83:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8107:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8107:113:25"
},
"nodeType": "YulIf",
"src": "8104:139:25"
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "7871:1:25",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7874:1:25",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "7880:7:25",
"type": ""
}
],
"src": "7840:410:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8284:152:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8301:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8304:77:25",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8294:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8294:88:25"
},
"nodeType": "YulExpressionStatement",
"src": "8294:88:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8398:1:25",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8401:4:25",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8391:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8391:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "8391:15:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8422:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8425:4:25",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8415:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8415:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "8415:15:25"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "8256:180:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8484:143:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8494:25:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8517:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8499:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8499:20:25"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8494:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8528:25:25",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8551:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8533:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8533:20:25"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8528:1:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8575:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "8577:16:25"
},
"nodeType": "YulFunctionCall",
"src": "8577:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "8577:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8572:1:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8565:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8565:9:25"
},
"nodeType": "YulIf",
"src": "8562:35:25"
},
{
"nodeType": "YulAssignment",
"src": "8607:14:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8616:1:25"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8619:1:25"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "8612:3:25"
},
"nodeType": "YulFunctionCall",
"src": "8612:9:25"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "8607:1:25"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "8473:1:25",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "8476:1:25",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "8482:1:25",
"type": ""
}
],
"src": "8442:185:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8678:32:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8688:16:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "8699:5:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "8688:7:25"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8660:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "8670:7:25",
"type": ""
}
],
"src": "8633:77:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8781:53:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8798:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8821:5:25"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "8803:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8803:24:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8791:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8791:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "8791:37:25"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8769:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8776:3:25",
"type": ""
}
],
"src": "8716:118:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8905:53:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8922:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8945:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8927:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8927:24:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8915:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8915:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "8915:37:25"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8893:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8900:3:25",
"type": ""
}
],
"src": "8840:118:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9009:81:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9019:65:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9034:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9041:42:25",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9030:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9030:54:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9019:7:25"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8991:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9001:7:25",
"type": ""
}
],
"src": "8964:126:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9141:51:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9151:35:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9180:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "9162:17:25"
},
"nodeType": "YulFunctionCall",
"src": "9162:24:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9151:7:25"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9123:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9133:7:25",
"type": ""
}
],
"src": "9096:96:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9263:53:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9280:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9303:5:25"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "9285:17:25"
},
"nodeType": "YulFunctionCall",
"src": "9285:24:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9273:6:25"
},
"nodeType": "YulFunctionCall",
"src": "9273:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "9273:37:25"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9251:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9258:3:25",
"type": ""
}
],
"src": "9198:118:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9532:454:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9542:27:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9554:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9565:3:25",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9550:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9550:19:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9542:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9623:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9636:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9647:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9632:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9632:17:25"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9579:43:25"
},
"nodeType": "YulFunctionCall",
"src": "9579:71:25"
},
"nodeType": "YulExpressionStatement",
"src": "9579:71:25"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9704:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9717:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9728:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9713:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9713:18:25"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9660:43:25"
},
"nodeType": "YulFunctionCall",
"src": "9660:72:25"
},
"nodeType": "YulExpressionStatement",
"src": "9660:72:25"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9786:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9799:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9810:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9795:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9795:18:25"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9742:43:25"
},
"nodeType": "YulFunctionCall",
"src": "9742:72:25"
},
"nodeType": "YulExpressionStatement",
"src": "9742:72:25"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "9868:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9881:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9892:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9877:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9877:18:25"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9824:43:25"
},
"nodeType": "YulFunctionCall",
"src": "9824:72:25"
},
"nodeType": "YulExpressionStatement",
"src": "9824:72:25"
},
{
"expression": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "9950:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9963:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9974:3:25",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9959:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9959:19:25"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "9906:43:25"
},
"nodeType": "YulFunctionCall",
"src": "9906:73:25"
},
"nodeType": "YulExpressionStatement",
"src": "9906:73:25"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9472:9:25",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "9484:6:25",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "9492:6:25",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9500:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9508:6:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9516:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9527:4:25",
"type": ""
}
],
"src": "9322:664:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10088:73:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10105:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "10110:6:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10098:6:25"
},
"nodeType": "YulFunctionCall",
"src": "10098:19:25"
},
"nodeType": "YulExpressionStatement",
"src": "10098:19:25"
},
{
"nodeType": "YulAssignment",
"src": "10126:29:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10145:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10150:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10141:3:25"
},
"nodeType": "YulFunctionCall",
"src": "10141:14:25"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "10126:11:25"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10060:3:25",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "10065:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "10076:11:25",
"type": ""
}
],
"src": "9992:169:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10273:193:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10295:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10303:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10291:3:25"
},
"nodeType": "YulFunctionCall",
"src": "10291:14:25"
},
{
"hexValue": "537761705468726573686f6c643a2043616e6e6f7420657863656564206c696d",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10307:34:25",
"type": "",
"value": "SwapThreshold: Cannot exceed lim"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10284:6:25"
},
"nodeType": "YulFunctionCall",
"src": "10284:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "10284:58:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10363:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10371:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10359:3:25"
},
"nodeType": "YulFunctionCall",
"src": "10359:15:25"
},
{
"hexValue": "6974732066726f6d20302e30312520746f20352520666f72206e657720737761",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10376:34:25",
"type": "",
"value": "its from 0.01% to 5% for new swa"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10352:6:25"
},
"nodeType": "YulFunctionCall",
"src": "10352:59:25"
},
"nodeType": "YulExpressionStatement",
"src": "10352:59:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10432:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10440:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10428:3:25"
},
"nodeType": "YulFunctionCall",
"src": "10428:15:25"
},
{
"hexValue": "70207468726573686f6c64",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10445:13:25",
"type": "",
"value": "p threshold"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10421:6:25"
},
"nodeType": "YulFunctionCall",
"src": "10421:38:25"
},
"nodeType": "YulExpressionStatement",
"src": "10421:38:25"
}
]
},
"name": "store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10265:6:25",
"type": ""
}
],
"src": "10167:299:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10618:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10628:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10694:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10699:2:25",
"type": "",
"value": "75"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10635:58:25"
},
"nodeType": "YulFunctionCall",
"src": "10635:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10628:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10800:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e",
"nodeType": "YulIdentifier",
"src": "10711:88:25"
},
"nodeType": "YulFunctionCall",
"src": "10711:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "10711:93:25"
},
{
"nodeType": "YulAssignment",
"src": "10813:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10824:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10829:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10820:3:25"
},
"nodeType": "YulFunctionCall",
"src": "10820:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10813:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10606:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10614:3:25",
"type": ""
}
],
"src": "10472:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11015:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11025:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11037:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11048:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11033:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11033:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11025:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11072:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11083:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11068:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11068:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11091:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11097:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11087:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11087:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11061:6:25"
},
"nodeType": "YulFunctionCall",
"src": "11061:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "11061:47:25"
},
{
"nodeType": "YulAssignment",
"src": "11117:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11251:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11125:124:25"
},
"nodeType": "YulFunctionCall",
"src": "11125:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11117:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10995:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11010:4:25",
"type": ""
}
],
"src": "10844:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11313:45:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11323:29:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11338:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11345:6:25",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11334:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11334:18:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "11323:7:25"
}
]
}
]
},
"name": "cleanup_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11295:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "11305:7:25",
"type": ""
}
],
"src": "11269:89:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11427:52:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11444:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11466:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "11449:16:25"
},
"nodeType": "YulFunctionCall",
"src": "11449:23:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11437:6:25"
},
"nodeType": "YulFunctionCall",
"src": "11437:36:25"
},
"nodeType": "YulExpressionStatement",
"src": "11437:36:25"
}
]
},
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11415:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11422:3:25",
"type": ""
}
],
"src": "11364:115:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11581:122:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11591:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11603:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11614:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11599:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11599:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11591:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11669:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11682:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11693:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11678:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11678:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "11627:41:25"
},
"nodeType": "YulFunctionCall",
"src": "11627:69:25"
},
"nodeType": "YulExpressionStatement",
"src": "11627:69:25"
}
]
},
"name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11553:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11565:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11576:4:25",
"type": ""
}
],
"src": "11485:218:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11815:188:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11837:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11845:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11833:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11833:14:25"
},
{
"hexValue": "546178657344656661756c74526f7574657257616c6c65743a2057616c6c6574",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11849:34:25",
"type": "",
"value": "TaxesDefaultRouterWallet: Wallet"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11826:6:25"
},
"nodeType": "YulFunctionCall",
"src": "11826:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "11826:58:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11905:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11913:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11901:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11901:15:25"
},
{
"hexValue": "2074617820726563697069656e742063616e6e6f742062652061203078302061",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11918:34:25",
"type": "",
"value": " tax recipient cannot be a 0x0 a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11894:6:25"
},
"nodeType": "YulFunctionCall",
"src": "11894:59:25"
},
"nodeType": "YulExpressionStatement",
"src": "11894:59:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11974:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11982:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11970:3:25"
},
"nodeType": "YulFunctionCall",
"src": "11970:15:25"
},
{
"hexValue": "646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11987:8:25",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11963:6:25"
},
"nodeType": "YulFunctionCall",
"src": "11963:33:25"
},
"nodeType": "YulExpressionStatement",
"src": "11963:33:25"
}
]
},
"name": "store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11807:6:25",
"type": ""
}
],
"src": "11709:294:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12155:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12165:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12231:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12236:2:25",
"type": "",
"value": "70"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12172:58:25"
},
"nodeType": "YulFunctionCall",
"src": "12172:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12165:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12337:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706",
"nodeType": "YulIdentifier",
"src": "12248:88:25"
},
"nodeType": "YulFunctionCall",
"src": "12248:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "12248:93:25"
},
{
"nodeType": "YulAssignment",
"src": "12350:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12361:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12366:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12357:3:25"
},
"nodeType": "YulFunctionCall",
"src": "12357:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12350:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12143:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12151:3:25",
"type": ""
}
],
"src": "12009:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12552:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12562:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12574:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12585:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12570:3:25"
},
"nodeType": "YulFunctionCall",
"src": "12570:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12562:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12609:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12620:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12605:3:25"
},
"nodeType": "YulFunctionCall",
"src": "12605:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12628:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12634:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "12624:3:25"
},
"nodeType": "YulFunctionCall",
"src": "12624:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12598:6:25"
},
"nodeType": "YulFunctionCall",
"src": "12598:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "12598:47:25"
},
{
"nodeType": "YulAssignment",
"src": "12654:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12788:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12662:124:25"
},
"nodeType": "YulFunctionCall",
"src": "12662:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12654:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12532:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12547:4:25",
"type": ""
}
],
"src": "12381:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12904:124:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12914:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12926:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12937:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12922:3:25"
},
"nodeType": "YulFunctionCall",
"src": "12922:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12914:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12994:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13007:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13018:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13003:3:25"
},
"nodeType": "YulFunctionCall",
"src": "13003:17:25"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "12950:43:25"
},
"nodeType": "YulFunctionCall",
"src": "12950:71:25"
},
"nodeType": "YulExpressionStatement",
"src": "12950:71:25"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12876:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12888:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12899:4:25",
"type": ""
}
],
"src": "12806:222:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13062:152:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13079:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13082:77:25",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13072:6:25"
},
"nodeType": "YulFunctionCall",
"src": "13072:88:25"
},
"nodeType": "YulExpressionStatement",
"src": "13072:88:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13176:1:25",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13179:4:25",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13169:6:25"
},
"nodeType": "YulFunctionCall",
"src": "13169:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "13169:15:25"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13200:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13203:4:25",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "13193:6:25"
},
"nodeType": "YulFunctionCall",
"src": "13193:15:25"
},
"nodeType": "YulExpressionStatement",
"src": "13193:15:25"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "13034:180:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13264:152:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13274:24:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13296:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "13279:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13279:19:25"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13274:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13307:24:25",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13329:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "13312:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13312:19:25"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13307:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13340:17:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13352:1:25"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13355:1:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "13348:3:25"
},
"nodeType": "YulFunctionCall",
"src": "13348:9:25"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "13340:4:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13387:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "13389:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13389:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "13389:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "13373:4:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13379:6:25",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "13370:2:25"
},
"nodeType": "YulFunctionCall",
"src": "13370:16:25"
},
"nodeType": "YulIf",
"src": "13367:42:25"
}
]
},
"name": "checked_sub_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "13250:1:25",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "13253:1:25",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "13259:4:25",
"type": ""
}
],
"src": "13220:196:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13465:150:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13475:24:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13497:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "13480:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13480:19:25"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13475:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13508:24:25",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13530:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "13513:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13513:19:25"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13508:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13541:16:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13552:1:25"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13555:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13548:3:25"
},
"nodeType": "YulFunctionCall",
"src": "13548:9:25"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "13541:3:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13586:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "13588:16:25"
},
"nodeType": "YulFunctionCall",
"src": "13588:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "13588:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "13573:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13578:6:25",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "13570:2:25"
},
"nodeType": "YulFunctionCall",
"src": "13570:15:25"
},
"nodeType": "YulIf",
"src": "13567:41:25"
}
]
},
"name": "checked_add_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "13452:1:25",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "13455:1:25",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "13461:3:25",
"type": ""
}
],
"src": "13422:193:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13727:135:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "13749:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13757:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13745:3:25"
},
"nodeType": "YulFunctionCall",
"src": "13745:14:25"
},
{
"hexValue": "546178657344656661756c74526f757465723a2043616e6e6f74206578636565",
"kind": "string",
"nodeType": "YulLiteral",
"src": "13761:34:25",
"type": "",
"value": "TaxesDefaultRouter: Cannot excee"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13738:6:25"
},
"nodeType": "YulFunctionCall",
"src": "13738:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "13738:58:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "13817:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13825:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13813:3:25"
},
"nodeType": "YulFunctionCall",
"src": "13813:15:25"
},
{
"hexValue": "64206d617820746f74616c20666565206f6620323525",
"kind": "string",
"nodeType": "YulLiteral",
"src": "13830:24:25",
"type": "",
"value": "d max total fee of 25%"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13806:6:25"
},
"nodeType": "YulFunctionCall",
"src": "13806:49:25"
},
"nodeType": "YulExpressionStatement",
"src": "13806:49:25"
}
]
},
"name": "store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "13719:6:25",
"type": ""
}
],
"src": "13621:241:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14014:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14024:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14090:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14095:2:25",
"type": "",
"value": "54"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14031:58:25"
},
"nodeType": "YulFunctionCall",
"src": "14031:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14024:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14196:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31",
"nodeType": "YulIdentifier",
"src": "14107:88:25"
},
"nodeType": "YulFunctionCall",
"src": "14107:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "14107:93:25"
},
{
"nodeType": "YulAssignment",
"src": "14209:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14220:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14225:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14216:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14216:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "14209:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "14002:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "14010:3:25",
"type": ""
}
],
"src": "13868:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14411:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14421:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14433:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14444:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14429:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14429:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14421:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14468:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14479:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14464:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14464:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14487:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14493:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14483:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14483:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14457:6:25"
},
"nodeType": "YulFunctionCall",
"src": "14457:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "14457:47:25"
},
{
"nodeType": "YulAssignment",
"src": "14513:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14647:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14521:124:25"
},
"nodeType": "YulFunctionCall",
"src": "14521:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14513:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14391:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14406:4:25",
"type": ""
}
],
"src": "14240:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14813:282:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14823:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14835:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14846:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14831:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14831:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14823:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "14901:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14914:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14925:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14910:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14910:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "14859:41:25"
},
"nodeType": "YulFunctionCall",
"src": "14859:69:25"
},
"nodeType": "YulExpressionStatement",
"src": "14859:69:25"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "14980:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14993:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15004:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14989:3:25"
},
"nodeType": "YulFunctionCall",
"src": "14989:18:25"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "14938:41:25"
},
"nodeType": "YulFunctionCall",
"src": "14938:70:25"
},
"nodeType": "YulExpressionStatement",
"src": "14938:70:25"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "15060:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15073:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15084:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15069:3:25"
},
"nodeType": "YulFunctionCall",
"src": "15069:18:25"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "15018:41:25"
},
"nodeType": "YulFunctionCall",
"src": "15018:70:25"
},
"nodeType": "YulExpressionStatement",
"src": "15018:70:25"
}
]
},
"name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14769:9:25",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "14781:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "14789:6:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "14797:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14808:4:25",
"type": ""
}
],
"src": "14665:430:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15143:48:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15153:32:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15178:5:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "15171:6:25"
},
"nodeType": "YulFunctionCall",
"src": "15171:13:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "15164:6:25"
},
"nodeType": "YulFunctionCall",
"src": "15164:21:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "15153:7:25"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15125:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "15135:7:25",
"type": ""
}
],
"src": "15101:90:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15256:50:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15273:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15293:5:25"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "15278:14:25"
},
"nodeType": "YulFunctionCall",
"src": "15278:21:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15266:6:25"
},
"nodeType": "YulFunctionCall",
"src": "15266:34:25"
},
"nodeType": "YulExpressionStatement",
"src": "15266:34:25"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15244:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15251:3:25",
"type": ""
}
],
"src": "15197:109:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15404:118:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15414:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15426:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15437:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15422:3:25"
},
"nodeType": "YulFunctionCall",
"src": "15422:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15414:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "15488:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15501:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15512:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15497:3:25"
},
"nodeType": "YulFunctionCall",
"src": "15497:17:25"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "15450:37:25"
},
"nodeType": "YulFunctionCall",
"src": "15450:65:25"
},
"nodeType": "YulExpressionStatement",
"src": "15450:65:25"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15376:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "15388:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15399:4:25",
"type": ""
}
],
"src": "15312:210:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15634:68:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "15656:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15664:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15652:3:25"
},
"nodeType": "YulFunctionCall",
"src": "15652:14:25"
},
{
"hexValue": "4d617857616c6c65743a204c696d697420746f6f206c6f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15668:26:25",
"type": "",
"value": "MaxWallet: Limit too low"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15645:6:25"
},
"nodeType": "YulFunctionCall",
"src": "15645:50:25"
},
"nodeType": "YulExpressionStatement",
"src": "15645:50:25"
}
]
},
"name": "store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "15626:6:25",
"type": ""
}
],
"src": "15528:174:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15854:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15864:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15930:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15935:2:25",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15871:58:25"
},
"nodeType": "YulFunctionCall",
"src": "15871:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15864:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16036:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62",
"nodeType": "YulIdentifier",
"src": "15947:88:25"
},
"nodeType": "YulFunctionCall",
"src": "15947:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "15947:93:25"
},
{
"nodeType": "YulAssignment",
"src": "16049:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16060:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16065:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16056:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16056:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "16049:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15842:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15850:3:25",
"type": ""
}
],
"src": "15708:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16251:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16261:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16273:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16284:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16269:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16269:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16261:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16308:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16319:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16304:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16304:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16327:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16333:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16323:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16323:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16297:6:25"
},
"nodeType": "YulFunctionCall",
"src": "16297:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "16297:47:25"
},
{
"nodeType": "YulAssignment",
"src": "16353:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16487:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16361:124:25"
},
"nodeType": "YulFunctionCall",
"src": "16361:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16353:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16231:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16246:4:25",
"type": ""
}
],
"src": "16080:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16603:124:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16613:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16625:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16636:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16621:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16621:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16613:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "16693:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16706:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16717:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16702:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16702:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "16649:43:25"
},
"nodeType": "YulFunctionCall",
"src": "16649:71:25"
},
"nodeType": "YulExpressionStatement",
"src": "16649:71:25"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16575:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "16587:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16598:4:25",
"type": ""
}
],
"src": "16505:222:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16839:75:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "16861:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16869:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16857:3:25"
},
"nodeType": "YulFunctionCall",
"src": "16857:14:25"
},
{
"hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16873:33:25",
"type": "",
"value": "ERC20: mint to the zero address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16850:6:25"
},
"nodeType": "YulFunctionCall",
"src": "16850:57:25"
},
"nodeType": "YulExpressionStatement",
"src": "16850:57:25"
}
]
},
"name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "16831:6:25",
"type": ""
}
],
"src": "16733:181:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17066:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17076:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17142:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17147:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17083:58:25"
},
"nodeType": "YulFunctionCall",
"src": "17083:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17076:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17248:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"nodeType": "YulIdentifier",
"src": "17159:88:25"
},
"nodeType": "YulFunctionCall",
"src": "17159:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "17159:93:25"
},
{
"nodeType": "YulAssignment",
"src": "17261:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17272:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17277:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17268:3:25"
},
"nodeType": "YulFunctionCall",
"src": "17268:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17261:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "17054:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "17062:3:25",
"type": ""
}
],
"src": "16920:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17463:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17473:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17485:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17496:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17481:3:25"
},
"nodeType": "YulFunctionCall",
"src": "17481:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17473:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17520:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17531:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17516:3:25"
},
"nodeType": "YulFunctionCall",
"src": "17516:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17539:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17545:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17535:3:25"
},
"nodeType": "YulFunctionCall",
"src": "17535:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17509:6:25"
},
"nodeType": "YulFunctionCall",
"src": "17509:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "17509:47:25"
},
{
"nodeType": "YulAssignment",
"src": "17565:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17699:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17573:124:25"
},
"nodeType": "YulFunctionCall",
"src": "17573:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17565:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17443:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17458:4:25",
"type": ""
}
],
"src": "17292:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17761:147:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17771:25:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17794:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "17776:17:25"
},
"nodeType": "YulFunctionCall",
"src": "17776:20:25"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17771:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17805:25:25",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "17828:1:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "17810:17:25"
},
"nodeType": "YulFunctionCall",
"src": "17810:20:25"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "17805:1:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17839:16:25",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17850:1:25"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "17853:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17846:3:25"
},
"nodeType": "YulFunctionCall",
"src": "17846:9:25"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "17839:3:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "17879:22:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "17881:16:25"
},
"nodeType": "YulFunctionCall",
"src": "17881:18:25"
},
"nodeType": "YulExpressionStatement",
"src": "17881:18:25"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17871:1:25"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "17874:3:25"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "17868:2:25"
},
"nodeType": "YulFunctionCall",
"src": "17868:10:25"
},
"nodeType": "YulIf",
"src": "17865:36:25"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "17748:1:25",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "17751:1:25",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "17757:3:25",
"type": ""
}
],
"src": "17717:191:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17976:184:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "17986:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "17995:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "17990:1:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "18055:63:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "18080:3:25"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "18085:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18076:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18076:11:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "18099:3:25"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "18104:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18095:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18095:11:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "18089:5:25"
},
"nodeType": "YulFunctionCall",
"src": "18089:18:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18069:6:25"
},
"nodeType": "YulFunctionCall",
"src": "18069:39:25"
},
"nodeType": "YulExpressionStatement",
"src": "18069:39:25"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "18016:1:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18019:6:25"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "18013:2:25"
},
"nodeType": "YulFunctionCall",
"src": "18013:13:25"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "18027:19:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18029:15:25",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "18038:1:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18041:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18034:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18034:10:25"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "18029:1:25"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "18009:3:25",
"statements": []
},
"src": "18005:113:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "18138:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18143:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18134:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18134:16:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18152:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18127:6:25"
},
"nodeType": "YulFunctionCall",
"src": "18127:27:25"
},
"nodeType": "YulExpressionStatement",
"src": "18127:27:25"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "17958:3:25",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "17963:3:25",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "17968:6:25",
"type": ""
}
],
"src": "17914:246:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18214:54:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18224:38:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18242:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18249:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18238:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18238:14:25"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18258:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "18254:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18254:7:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "18234:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18234:28:25"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "18224:6:25"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "18197:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "18207:6:25",
"type": ""
}
],
"src": "18166:102:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18366:285:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "18376:53:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18423:5:25"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "18390:32:25"
},
"nodeType": "YulFunctionCall",
"src": "18390:39:25"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "18380:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "18438:78:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18504:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18509:6:25"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18445:58:25"
},
"nodeType": "YulFunctionCall",
"src": "18445:71:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18438:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18564:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18571:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18560:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18560:16:25"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18578:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18583:6:25"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "18525:34:25"
},
"nodeType": "YulFunctionCall",
"src": "18525:65:25"
},
"nodeType": "YulExpressionStatement",
"src": "18525:65:25"
},
{
"nodeType": "YulAssignment",
"src": "18599:46:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18610:3:25"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18637:6:25"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "18615:21:25"
},
"nodeType": "YulFunctionCall",
"src": "18615:29:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18606:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18606:39:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "18599:3:25"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "18347:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18354:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18362:3:25",
"type": ""
}
],
"src": "18274:377:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18775:195:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18785:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18797:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18808:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18793:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18793:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18785:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18832:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18843:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18828:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18828:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18851:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18857:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18847:3:25"
},
"nodeType": "YulFunctionCall",
"src": "18847:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18821:6:25"
},
"nodeType": "YulFunctionCall",
"src": "18821:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "18821:47:25"
},
{
"nodeType": "YulAssignment",
"src": "18877:86:25",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "18949:6:25"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18958:4:25"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18885:63:25"
},
"nodeType": "YulFunctionCall",
"src": "18885:78:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18877:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18747:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "18759:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18770:4:25",
"type": ""
}
],
"src": "18657:313:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19034:40:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19045:22:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "19061:5:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "19055:5:25"
},
"nodeType": "YulFunctionCall",
"src": "19055:12:25"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "19045:6:25"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "19017:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "19027:6:25",
"type": ""
}
],
"src": "18976:98:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19136:60:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19146:11:25",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "19154:3:25"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "19146:4:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "19167:22:25",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "19179:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19184:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19175:3:25"
},
"nodeType": "YulFunctionCall",
"src": "19175:14:25"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "19167:4:25"
}
]
}
]
},
"name": "array_dataslot_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "19123:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "19131:4:25",
"type": ""
}
],
"src": "19080:116:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19257:99:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "19268:42:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "19305:3:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "19299:5:25"
},
"nodeType": "YulFunctionCall",
"src": "19299:10:25"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "19281:17:25"
},
"nodeType": "YulFunctionCall",
"src": "19281:29:25"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "19272:5:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "19320:29:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "19344:5:25"
},
"variableNames": [
{
"name": "returnValue",
"nodeType": "YulIdentifier",
"src": "19320:11:25"
}
]
}
]
},
"name": "read_from_memoryt_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "19237:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "returnValue",
"nodeType": "YulTypedName",
"src": "19245:11:25",
"type": ""
}
],
"src": "19202:154:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19452:504:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "19463:52:25",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "19509:5:25"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "19477:31:25"
},
"nodeType": "YulFunctionCall",
"src": "19477:38:25"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "19467:6:25",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "19524:21:25",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "19540:5:25"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "19528:8:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "19555:52:25",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "19601:5:25"
}
],
"functionName": {
"name": "array_dataslot_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "19567:33:25"
},
"nodeType": "YulFunctionCall",
"src": "19567:40:25"
},
"variableNames": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "19555:8:25"
}
]
},
{
"nodeType": "YulAssignment",
"src": "19617:44:25",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "19652:8:25"
}
],
"functionName": {
"name": "read_from_memoryt_bytes32",
"nodeType": "YulIdentifier",
"src": "19626:25:25"
},
"nodeType": "YulFunctionCall",
"src": "19626:35:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "19617:5:25"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "19689:260:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19703:236:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "19733:5:25"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19800:1:25",
"type": "",
"value": "8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19807:2:25",
"type": "",
"value": "32"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "19811:6:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19803:3:25"
},
"nodeType": "YulFunctionCall",
"src": "19803:15:25"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "19796:3:25"
},
"nodeType": "YulFunctionCall",
"src": "19796:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19841:66:25",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "19756:18:25"
},
"nodeType": "YulFunctionCall",
"src": "19756:169:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "19712:3:25"
},
"nodeType": "YulFunctionCall",
"src": "19712:227:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "19703:5:25"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "19677:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19685:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "19674:2:25"
},
"nodeType": "YulFunctionCall",
"src": "19674:14:25"
},
"nodeType": "YulIf",
"src": "19671:278:25"
}
]
},
"name": "convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "19436:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "19446:5:25",
"type": ""
}
],
"src": "19362:594:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20068:76:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "20090:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20098:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20086:3:25"
},
"nodeType": "YulFunctionCall",
"src": "20086:14:25"
},
{
"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "20102:34:25",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20079:6:25"
},
"nodeType": "YulFunctionCall",
"src": "20079:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "20079:58:25"
}
]
},
"name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "20060:6:25",
"type": ""
}
],
"src": "19962:182:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20296:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20306:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20372:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20377:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20313:58:25"
},
"nodeType": "YulFunctionCall",
"src": "20313:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20306:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20478:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"nodeType": "YulIdentifier",
"src": "20389:88:25"
},
"nodeType": "YulFunctionCall",
"src": "20389:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "20389:93:25"
},
{
"nodeType": "YulAssignment",
"src": "20491:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20502:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20507:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20498:3:25"
},
"nodeType": "YulFunctionCall",
"src": "20498:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "20491:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "20284:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "20292:3:25",
"type": ""
}
],
"src": "20150:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20693:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20703:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20715:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20726:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20711:3:25"
},
"nodeType": "YulFunctionCall",
"src": "20711:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20703:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20750:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20761:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20746:3:25"
},
"nodeType": "YulFunctionCall",
"src": "20746:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20769:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20775:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "20765:3:25"
},
"nodeType": "YulFunctionCall",
"src": "20765:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20739:6:25"
},
"nodeType": "YulFunctionCall",
"src": "20739:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "20739:47:25"
},
{
"nodeType": "YulAssignment",
"src": "20795:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20929:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20803:124:25"
},
"nodeType": "YulFunctionCall",
"src": "20803:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20795:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20673:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20688:4:25",
"type": ""
}
],
"src": "20522:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21053:123:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "21075:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21083:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21071:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21071:14:25"
},
{
"hexValue": "456e61626c6554726164696e673a2054726164696e6720776173206e6f742065",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21087:34:25",
"type": "",
"value": "EnableTrading: Trading was not e"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21064:6:25"
},
"nodeType": "YulFunctionCall",
"src": "21064:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "21064:58:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "21143:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21151:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21139:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21139:15:25"
},
{
"hexValue": "6e61626c656420796574",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21156:12:25",
"type": "",
"value": "nabled yet"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21132:6:25"
},
"nodeType": "YulFunctionCall",
"src": "21132:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "21132:37:25"
}
]
},
"name": "store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "21045:6:25",
"type": ""
}
],
"src": "20947:229:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21328:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21338:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21404:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21409:2:25",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21345:58:25"
},
"nodeType": "YulFunctionCall",
"src": "21345:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21338:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21510:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5",
"nodeType": "YulIdentifier",
"src": "21421:88:25"
},
"nodeType": "YulFunctionCall",
"src": "21421:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "21421:93:25"
},
{
"nodeType": "YulAssignment",
"src": "21523:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21534:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21539:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21530:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21530:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "21523:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "21316:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "21324:3:25",
"type": ""
}
],
"src": "21182:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21725:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21735:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21747:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21758:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21743:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21743:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21735:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21782:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21793:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21778:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21778:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21801:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21807:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "21797:3:25"
},
"nodeType": "YulFunctionCall",
"src": "21797:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21771:6:25"
},
"nodeType": "YulFunctionCall",
"src": "21771:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "21771:47:25"
},
{
"nodeType": "YulAssignment",
"src": "21827:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21961:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21835:124:25"
},
"nodeType": "YulFunctionCall",
"src": "21835:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21827:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21705:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21720:4:25",
"type": ""
}
],
"src": "21554:419:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22085:122:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "22107:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22115:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22103:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22103:14:25"
},
{
"hexValue": "4d617857616c6c65743a2043616e6e6f7420657863656564206d61782077616c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22119:34:25",
"type": "",
"value": "MaxWallet: Cannot exceed max wal"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22096:6:25"
},
"nodeType": "YulFunctionCall",
"src": "22096:58:25"
},
"nodeType": "YulExpressionStatement",
"src": "22096:58:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "22175:6:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22183:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22171:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22171:15:25"
},
{
"hexValue": "6c6574206c696d6974",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22188:11:25",
"type": "",
"value": "let limit"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22164:6:25"
},
"nodeType": "YulFunctionCall",
"src": "22164:36:25"
},
"nodeType": "YulExpressionStatement",
"src": "22164:36:25"
}
]
},
"name": "store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "22077:6:25",
"type": ""
}
],
"src": "21979:228:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22359:220:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22369:74:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22435:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22440:2:25",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22376:58:25"
},
"nodeType": "YulFunctionCall",
"src": "22376:67:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22369:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22541:3:25"
}
],
"functionName": {
"name": "store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd",
"nodeType": "YulIdentifier",
"src": "22452:88:25"
},
"nodeType": "YulFunctionCall",
"src": "22452:93:25"
},
"nodeType": "YulExpressionStatement",
"src": "22452:93:25"
},
{
"nodeType": "YulAssignment",
"src": "22554:19:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22565:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22570:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22561:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22561:12:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "22554:3:25"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22347:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "22355:3:25",
"type": ""
}
],
"src": "22213:366:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22756:248:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22766:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22778:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22789:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22774:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22774:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22766:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22813:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22824:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22809:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22809:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22832:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22838:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "22828:3:25"
},
"nodeType": "YulFunctionCall",
"src": "22828:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22802:6:25"
},
"nodeType": "YulFunctionCall",
"src": "22802:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "22802:47:25"
},
{
"nodeType": "YulAssignment",
"src": "22858:139:25",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22992:4:25"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22866:124:25"
},
"nodeType": "YulFunctionCall",
"src": "22866:131:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22858:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22736:9:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22751:4:25",
"type": ""
}
],
"src": "22585:419:25"
}
]
},
"contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function shift_right_1_unsigned(value) -> newValue {\n newValue :=\n\n shr(1, value)\n\n }\n\n function checked_exp_helper(_power, _base, exponent, max) -> power, base {\n power := _power\n base := _base\n for { } gt(exponent, 1) {}\n {\n // overflow check for base * base\n if gt(base, div(max, base)) { panic_error_0x11() }\n if and(exponent, 1)\n {\n // No checks for power := mul(power, base) needed, because the check\n // for base * base above is sufficient, since:\n // |power| <= base (proof by induction) and thus:\n // |power * base| <= base * base <= max <= |min| (for signed)\n // (this is equally true for signed and unsigned exp)\n power := mul(power, base)\n }\n base := mul(base, base)\n exponent := shift_right_1_unsigned(exponent)\n }\n }\n\n function checked_exp_unsigned(base, exponent, max) -> power {\n // This function currently cannot be inlined because of the\n // \"leave\" statements. We have to improve the optimizer.\n\n // Note that 0**0 == 1\n if iszero(exponent) { power := 1 leave }\n if iszero(base) { power := 0 leave }\n\n // Specializations for small bases\n switch base\n // 0 is handled above\n case 1 { power := 1 leave }\n case 2\n {\n if gt(exponent, 255) { panic_error_0x11() }\n power := exp(2, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n if or(\n and(lt(base, 11), lt(exponent, 78)),\n and(lt(base, 307), lt(exponent, 32))\n )\n {\n power := exp(base, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n\n power, base := checked_exp_helper(1, base, exponent, max)\n\n if gt(power, div(max, base)) { panic_error_0x11() }\n power := mul(power, base)\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power {\n base := cleanup_t_uint256(base)\n exponent := cleanup_t_uint8(exponent)\n\n power := checked_exp_unsigned(base, exponent, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_address_to_t_address_fromStack(value4, add(headStart, 128))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e(memPtr) {\n\n mstore(add(memPtr, 0), \"SwapThreshold: Cannot exceed lim\")\n\n mstore(add(memPtr, 32), \"its from 0.01% to 5% for new swa\")\n\n mstore(add(memPtr, 64), \"p threshold\")\n\n }\n\n function abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 75)\n store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e(pos)\n end := add(pos, 96)\n }\n\n function abi_encode_tuple_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n }\n\n function store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706(memPtr) {\n\n mstore(add(memPtr, 0), \"TaxesDefaultRouterWallet: Wallet\")\n\n mstore(add(memPtr, 32), \" tax recipient cannot be a 0x0 a\")\n\n mstore(add(memPtr, 64), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 70)\n store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706(pos)\n end := add(pos, 96)\n }\n\n function abi_encode_tuple_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint16(x, y) -> diff {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffff) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint16(x, y) -> sum {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n sum := add(x, y)\n\n if gt(sum, 0xffff) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31(memPtr) {\n\n mstore(add(memPtr, 0), \"TaxesDefaultRouter: Cannot excee\")\n\n mstore(add(memPtr, 32), \"d max total fee of 25%\")\n\n }\n\n function abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62(memPtr) {\n\n mstore(add(memPtr, 0), \"MaxWallet: Limit too low\")\n\n }\n\n function abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_dataslot_t_bytes_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function read_from_memoryt_bytes32(ptr) -> returnValue {\n\n let value := cleanup_t_bytes32(mload(ptr))\n\n returnValue :=\n\n value\n\n }\n\n function convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32(array) -> value {\n\n let length := array_length_t_bytes_memory_ptr(array)\n let dataArea := array\n\n dataArea := array_dataslot_t_bytes_memory_ptr(array)\n\n value := read_from_memoryt_bytes32(dataArea)\n\n if lt(length, 32) {\n value := and(\n value,\n shift_left_dynamic(\n mul(8, sub(32, length)),\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n )\n )\n }\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5(memPtr) {\n\n mstore(add(memPtr, 0), \"EnableTrading: Trading was not e\")\n\n mstore(add(memPtr, 32), \"nabled yet\")\n\n }\n\n function abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd(memPtr) {\n\n mstore(add(memPtr, 0), \"MaxWallet: Cannot exceed max wal\")\n\n mstore(add(memPtr, 32), \"let limit\")\n\n }\n\n function abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n",
"id": 25,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "6101606040523480156200001257600080fd5b506040518060400160405280600981526020017f4461726532506c61790000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4461726532506c617900000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f44325000000000000000000000000000000000000000000000000000000000008152508160039081620000fd9190620016bd565b5080600490816200010f9190620016bd565b50505062000132620001266200039760201b60201c565b6200039f60201b60201c565b62000148600783620003d860201b90919060201c565b610120818152505062000166600882620003d860201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001a56200043060201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050600073b031999eb2305dad9ef65bebaa96b453a0dfceff90506200020e60326200048d60201b60201c565b6200023373b031999eb2305dad9ef65bebaa96b453a0dfceff6200055360201b60201c565b6200024961012c8060006200067860201b60201c565b6200025c81600162000a4360201b60201c565b6200026f30600162000a4360201b60201c565b6200028281600162000afe60201b60201c565b6200029530600162000afe60201b60201c565b620002a96000600162000afe60201b60201c565b620002f6600a620002bf62000ba960201b60201c565b600a620002cd919062001934565b63ee6b2800620002de919062001985565b620002ea9190620019ff565b62000bb260201b60201c565b6200030981600162000c5a60201b60201c565b6200031c30600162000c5a60201b60201c565b6200036b81600a6200033362000ba960201b60201c565b600a62000341919062001934565b64174876e80062000353919062001985565b6200035f9190620019ff565b62000d1560201b60201c565b6200039073b031999eb2305dad9ef65bebaa96b453a0dfceff6200039f60201b60201c565b50620022c5565b600033905090565b600660006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620003d58162000e8260201b60201c565b50565b6000602083511015620003fe57620003f68362000f4860201b60201c565b90506200042a565b82620004108362000fb560201b60201c565b6000019081620004219190620016bd565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200047295949392919062001aa8565b60405160208183030381529060405280519060200120905090565b6200049d62000fbf60201b60201c565b60008161ffff16118015620004b857506101f48161ffff1611155b620004fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004f19062001bb2565b60405180910390fd5b80600b60026101000a81548161ffff021916908361ffff1602179055507fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f17208160405162000548919062001bf3565b60405180910390a150565b6200056362000fbf60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620005d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005cc9062001cac565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200062981600162000a4360201b60201c565b6200063c81600162000afe60201b60201c565b7f715838749e9e3d898b280fdbc2916224f84cf0f633d5ae4bd45afb4f813fede7816040516200066d919062001cce565b60405180910390a150565b6200068862000fbf60201b60201c565b82600e600060038110620006a157620006a062001ceb565b5b601091828204019190066002029054906101000a900461ffff166010600060038110620006d357620006d262001ceb565b5b601091828204019190066002029054906101000a900461ffff16620006f9919062001d1a565b62000705919062001d57565b60106000600381106200071d576200071c62001ceb565b5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555081600e6001600381106200075b576200075a62001ceb565b5b601091828204019190066002029054906101000a900461ffff1660106001600381106200078d576200078c62001ceb565b5b601091828204019190066002029054906101000a900461ffff16620007b3919062001d1a565b620007bf919062001d57565b6010600160038110620007d757620007d662001ceb565b5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555080600e60026003811062000815576200081462001ceb565b5b601091828204019190066002029054906101000a900461ffff16601060026003811062000847576200084662001ceb565b5b601091828204019190066002029054906101000a900461ffff166200086d919062001d1a565b62000879919062001d57565b601060026003811062000891576200089062001ceb565b5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055506109c46010600060038110620008d157620008d062001ceb565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111580156200093557506109c4601060016003811062000914576200091362001ceb565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b80156200097957506109c4601060026003811062000958576200095762001ceb565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b620009bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b29062001e0a565b60405180910390fd5b60405180606001604052808461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff16815250600e90600362000a0092919062001380565b507fca0cfc59661a961b6c323e200f2d3aa0c236aee7dcb6a1cb695e2c8c1cf90ace83838360405162000a369392919062001e2c565b60405180910390a1505050565b62000a5362000fbf60201b60201c565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000af2919062001e86565b60405180910390a25050565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928260405162000b9d919062001e86565b60405180910390a25050565b60006012905090565b62000bc262000fbf60201b60201c565b62000bd26200105060201b60201c565b81101562000c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c0e9062001ef3565b60405180910390fd5b806015819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e0018160405162000c4f919062001f15565b60405180910390a150565b62000c6a62000fbf60201b60201c565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f38d2732664f4152f6b6754aa1afeaec7fa6618671b172e5430139b51dba2d1d68260405162000d09919062001e86565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d7e9062001f82565b60405180910390fd5b62000d9b600083836200107660201b60201c565b806002600082825462000daf919062001fa4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e62919062001f15565b60405180910390a362000e7e600083836200123760201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080829050601f8151111562000f9857826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040162000f8f91906200205d565b60405180910390fd5b80518162000fa690620020b3565b60001c1760001b915050919050565b6000819050919050565b62000fcf6200039760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000ff5620012fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010459062002173565b60405180910390fd5b565b60006103e8620010656200132460201b60201c565b620010719190620019ff565b905090565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156200111a5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80620011c65750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015620011c55750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156200121f57601660009054906101000a900460ff166200121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001215906200220b565b60405180910390fd5b5b620012328383836200132e60201b60201c565b505050565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16620012e2576015546200129d836200133360201b60201c565b1115620012e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012d890620022a3565b60405180910390fd5b5b620012f58383836200137b60201b60201c565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600254905090565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b505050565b826003600f01601090048101928215620014115791602002820160005b83821115620013df57835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026200139d565b80156200140f5782816101000a81549061ffff0219169055600201602081600101049283019260010302620013df565b505b50905062001420919062001424565b5090565b5b808211156200143f57600081600090555060010162001425565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620014c557607f821691505b602082108103620014db57620014da6200147d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620015457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001506565b62001551868362001506565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200159e62001598620015928462001569565b62001573565b62001569565b9050919050565b6000819050919050565b620015ba836200157d565b620015d2620015c982620015a5565b84845462001513565b825550505050565b600090565b620015e9620015da565b620015f6818484620015af565b505050565b5b818110156200161e5762001612600082620015df565b600181019050620015fc565b5050565b601f8211156200166d576200163781620014e1565b6200164284620014f6565b8101602085101562001652578190505b6200166a6200166185620014f6565b830182620015fb565b50505b505050565b600082821c905092915050565b6000620016926000198460080262001672565b1980831691505092915050565b6000620016ad83836200167f565b9150826002028217905092915050565b620016c88262001443565b67ffffffffffffffff811115620016e457620016e36200144e565b5b620016f08254620014ac565b620016fd82828562001622565b600060209050601f83116001811462001735576000841562001720578287015190505b6200172c85826200169f565b8655506200179c565b601f1984166200174586620014e1565b60005b828110156200176f5784890151825560018201915060208501945060208101905062001748565b868310156200178f57848901516200178b601f8916826200167f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001832578086048111156200180a5762001809620017a4565b5b60018516156200181a5780820291505b80810290506200182a85620017d3565b9450620017ea565b94509492505050565b6000826200184d576001905062001920565b816200185d576000905062001920565b81600181146200187657600281146200188157620018b7565b600191505062001920565b60ff841115620018965762001895620017a4565b5b8360020a915084821115620018b057620018af620017a4565b5b5062001920565b5060208310610133831016604e8410600b8410161715620018f15782820a905083811115620018eb57620018ea620017a4565b5b62001920565b620019008484846001620017e0565b925090508184048111156200191a5762001919620017a4565b5b81810290505b9392505050565b600060ff82169050919050565b6000620019418262001569565b91506200194e8362001927565b92506200197d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200183b565b905092915050565b6000620019928262001569565b91506200199f8362001569565b9250828202620019af8162001569565b91508282048414831517620019c957620019c8620017a4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062001a0c8262001569565b915062001a198362001569565b92508262001a2c5762001a2b620019d0565b5b828204905092915050565b6000819050919050565b62001a4c8162001a37565b82525050565b62001a5d8162001569565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001a908262001a63565b9050919050565b62001aa28162001a83565b82525050565b600060a08201905062001abf600083018862001a41565b62001ace602083018762001a41565b62001add604083018662001a41565b62001aec606083018562001a52565b62001afb608083018462001a97565b9695505050505050565b600082825260208201905092915050565b7f537761705468726573686f6c643a2043616e6e6f7420657863656564206c696d60008201527f6974732066726f6d20302e30312520746f20352520666f72206e65772073776160208201527f70207468726573686f6c64000000000000000000000000000000000000000000604082015250565b600062001b9a604b8362001b05565b915062001ba78262001b16565b606082019050919050565b6000602082019050818103600083015262001bcd8162001b8b565b9050919050565b600061ffff82169050919050565b62001bed8162001bd4565b82525050565b600060208201905062001c0a600083018462001be2565b92915050565b7f546178657344656661756c74526f7574657257616c6c65743a2057616c6c657460008201527f2074617820726563697069656e742063616e6e6f74206265206120307830206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015250565b600062001c9460468362001b05565b915062001ca18262001c10565b606082019050919050565b6000602082019050818103600083015262001cc78162001c85565b9050919050565b600060208201905062001ce5600083018462001a97565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600062001d278262001bd4565b915062001d348362001bd4565b9250828203905061ffff81111562001d515762001d50620017a4565b5b92915050565b600062001d648262001bd4565b915062001d718362001bd4565b9250828201905061ffff81111562001d8e5762001d8d620017a4565b5b92915050565b7f546178657344656661756c74526f757465723a2043616e6e6f7420657863656560008201527f64206d617820746f74616c20666565206f662032352500000000000000000000602082015250565b600062001df260368362001b05565b915062001dff8262001d94565b604082019050919050565b6000602082019050818103600083015262001e258162001de3565b9050919050565b600060608201905062001e43600083018662001be2565b62001e52602083018562001be2565b62001e61604083018462001be2565b949350505050565b60008115159050919050565b62001e808162001e69565b82525050565b600060208201905062001e9d600083018462001e75565b92915050565b7f4d617857616c6c65743a204c696d697420746f6f206c6f770000000000000000600082015250565b600062001edb60188362001b05565b915062001ee88262001ea3565b602082019050919050565b6000602082019050818103600083015262001f0e8162001ecc565b9050919050565b600060208201905062001f2c600083018462001a52565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001f6a601f8362001b05565b915062001f778262001f32565b602082019050919050565b6000602082019050818103600083015262001f9d8162001f5b565b9050919050565b600062001fb18262001569565b915062001fbe8362001569565b925082820190508082111562001fd95762001fd8620017a4565b5b92915050565b60005b8381101562001fff57808201518184015260208101905062001fe2565b60008484015250505050565b6000601f19601f8301169050919050565b6000620020298262001443565b62002035818562001b05565b93506200204781856020860162001fdf565b62002052816200200b565b840191505092915050565b600060208201905081810360008301526200207981846200201c565b905092915050565b600081519050919050565b6000819050602082019050919050565b6000620020aa825162001a37565b80915050919050565b6000620020c08262002081565b82620020cc846200208c565b9050620020d9816200209c565b925060208210156200211c57620021177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262001506565b831692505b5050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200215b60208362001b05565b9150620021688262002123565b602082019050919050565b600060208201905081810360008301526200218e816200214c565b9050919050565b7f456e61626c6554726164696e673a2054726164696e6720776173206e6f74206560008201527f6e61626c65642079657400000000000000000000000000000000000000000000602082015250565b6000620021f3602a8362001b05565b9150620022008262002195565b604082019050919050565b600060208201905081810360008301526200222681620021e4565b9050919050565b7f4d617857616c6c65743a2043616e6e6f7420657863656564206d61782077616c60008201527f6c6574206c696d69740000000000000000000000000000000000000000000000602082015250565b60006200228b60298362001b05565b915062002298826200222d565b604082019050919050565b60006020820190508181036000830152620022be816200227c565b9050919050565b60805160a05160c05160e05161010051610120516101405161590d6200232060003960006115c20152600061158e0152600061358a01526000613569015260006129c001526000612a1601526000612a3f015261590d6000f3fe60806040526004361061028c5760003560e01c806379cc67901161015a578063c0246668116100c1578063d94775261161007a578063d947752614610a03578063dd62ed3e14610a2e578063e30c397814610a6b578063e85ceee814610a96578063f112ba7214610ad3578063f2fde38b14610afe57610293565b8063c02466681461090b578063c0a904a214610934578063c18bc1951461095d578063c4d66de814610986578063caccd7f7146109af578063d505accf146109da57610293565b80638da5cb5b116101135780638da5cb5b146107e55780638fffabed1461081057806395d89b411461083b578063a457c2d714610866578063a9059cbb146108a3578063aa4bde28146108e057610293565b806379cc6790146106e55780637ecebe001461070e578063801b51d91461074b57806384b0196e146107745780638980f11f146107a55780638a8c523c146107ce57610293565b8063408ccbdf116101fe578063502f7446116101b7578063502f7446146105d55780635cce86cd1461060057806370a082311461063d578063715018a61461067a578063768565571461069157806379ba5097146106ce57610293565b8063408ccbdf146104b357806342966c68146104f05780634ada218b146105195780634bc75079146105445780634f011b831461056d5780634fbee1931461059857610293565b80631a0e718c116102505780631a0e718c1461039157806323b872dd146103ba5780632d99d32e146103f7578063313ce567146104205780633644e5151461044b578063395093511461047657610293565b806306fdde0314610298578063095ea7b3146102c357806318160ddd14610300578063184fc5651461032b578063186a63351461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b27565b6040516102ba9190613db8565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613e73565b610bb9565b6040516102f79190613ece565b60405180910390f35b34801561030c57600080fd5b50610315610bdc565b6040516103229190613ef8565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190613f13565b610be6565b005b34801561036057600080fd5b5061037b60048036038101906103769190613f40565b610cee565b6040516103889190613f8a565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613fd1565b610d1c565b005b3480156103c657600080fd5b506103e160048036038101906103dc9190613ffe565b610dd4565b6040516103ee9190613ece565b60405180910390f35b34801561040357600080fd5b5061041e6004803603810190610419919061407d565b610e03565b005b34801561042c57600080fd5b50610435610ea9565b60405161044291906140d9565b60405180910390f35b34801561045757600080fd5b50610460610eb2565b60405161046d919061410d565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190613e73565b610ec1565b6040516104aa9190613ece565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d59190613f40565b610ef8565b6040516104e79190613f8a565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613f40565b610f26565b005b34801561052557600080fd5b5061052e610f3a565b60405161053b9190613ece565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190614128565b610f4d565b005b34801561057957600080fd5b506105826112d7565b60405161058f9190613f8a565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba9190613f13565b6112eb565b6040516105cc9190613ece565b60405180910390f35b3480156105e157600080fd5b506105ea61130b565b6040516105f791906141da565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613f13565b611331565b6040516106349190613ece565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f9190613f13565b611351565b6040516106719190613ef8565b60405180910390f35b34801561068657600080fd5b5061068f611399565b005b34801561069d57600080fd5b506106b860048036038101906106b39190613f13565b6113ad565b6040516106c59190613ece565b60405180910390f35b3480156106da57600080fd5b506106e36113cd565b005b3480156106f157600080fd5b5061070c60048036038101906107079190613e73565b61145a565b005b34801561071a57600080fd5b5061073560048036038101906107309190613f13565b61147a565b6040516107429190613ef8565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d919061407d565b6114ca565b005b34801561078057600080fd5b5061078961157b565b60405161079c97969594939291906142fd565b60405180910390f35b3480156107b157600080fd5b506107cc60048036038101906107c79190613e73565b61167d565b005b3480156107da57600080fd5b506107e361177d565b005b3480156107f157600080fd5b506107fa61181e565b6040516108079190614381565b60405180910390f35b34801561081c57600080fd5b50610825611848565b6040516108329190614381565b60405180910390f35b34801561084757600080fd5b5061085061186e565b60405161085d9190613db8565b60405180910390f35b34801561087257600080fd5b5061088d60048036038101906108889190613e73565b611900565b60405161089a9190613ece565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c59190613e73565b611977565b6040516108d79190613ece565b60405180910390f35b3480156108ec57600080fd5b506108f561199a565b6040516109029190613ef8565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d919061407d565b6119a0565b005b34801561094057600080fd5b5061095b6004803603810190610956919061407d565b611a51565b005b34801561096957600080fd5b50610984600480360381019061097f9190613f40565b611a67565b005b34801561099257600080fd5b506109ad60048036038101906109a89190613f13565b611afa565b005b3480156109bb57600080fd5b506109c4611be2565b6040516109d19190614381565b60405180910390f35b3480156109e657600080fd5b50610a0160048036038101906109fc91906143f4565b611c08565b005b348015610a0f57600080fd5b50610a18611d4a565b604051610a259190613ef8565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190614496565b611da8565b604051610a629190613ef8565b60405180910390f35b348015610a7757600080fd5b50610a80611e2f565b604051610a8d9190614381565b60405180910390f35b348015610aa257600080fd5b50610abd6004803603810190610ab89190613f13565b611e59565b604051610aca9190613ece565b60405180910390f35b348015610adf57600080fd5b50610ae8611e79565b604051610af59190613ef8565b60405180910390f35b348015610b0a57600080fd5b50610b256004803603810190610b209190613f13565b611e8f565b005b606060038054610b3690614505565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6290614505565b8015610baf5780601f10610b8457610100808354040283529160200191610baf565b820191906000526020600020905b815481529060010190602001808311610b9257829003601f168201915b5050505050905090565b600080610bc4611f3c565b9050610bd1818585611f44565b600191505092915050565b6000600254905090565b610bee61210d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c54906145ce565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca98160016119a0565b610cb481600161218b565b7f715838749e9e3d898b280fdbc2916224f84cf0f633d5ae4bd45afb4f813fede781604051610ce39190614381565b60405180910390a150565b600e8160038110610cfe57600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b610d2461210d565b60008161ffff16118015610d3e57506101f48161ffff1611155b610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490614686565b60405180910390fd5b80600b60026101000a81548161ffff021916908361ffff1602179055507fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f172081604051610dc99190613f8a565b60405180910390a150565b600080610ddf611f3c565b9050610dec858285612234565b610df78585856122c0565b60019150509392505050565b610e0b61210d565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614718565b60405180910390fd5b610ea58282612901565b5050565b60006012905090565b6000610ebc6129bc565b905090565b600080610ecc611f3c565b9050610eed818585610ede8589611da8565b610ee89190614767565b611f44565b600191505092915050565b60108160038110610f0857600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b610f37610f31611f3c565b82612a73565b50565b601660009054906101000a900460ff1681565b610f5561210d565b82600e600060038110610f6b57610f6a61479b565b5b601091828204019190066002029054906101000a900461ffff166010600060038110610f9a57610f9961479b565b5b601091828204019190066002029054906101000a900461ffff16610fbe91906147ca565b610fc89190614800565b6010600060038110610fdd57610fdc61479b565b5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555081600e6001600381106110185761101761479b565b5b601091828204019190066002029054906101000a900461ffff1660106001600381106110475761104661479b565b5b601091828204019190066002029054906101000a900461ffff1661106b91906147ca565b6110759190614800565b601060016003811061108a5761108961479b565b5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555080600e6002600381106110c5576110c461479b565b5b601091828204019190066002029054906101000a900461ffff1660106002600381106110f4576110f361479b565b5b601091828204019190066002029054906101000a900461ffff1661111891906147ca565b6111229190614800565b60106002600381106111375761113661479b565b5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055506109c460106000600381106111745761117361479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111580156111d457506109c460106001600381106111b3576111b261479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b801561121457506109c460106002600381106111f3576111f261479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff1611155b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a906148a8565b60405180910390fd5b60405180606001604052808461ffff1661ffff1681526020018361ffff1661ffff1681526020018261ffff1661ffff16815250600e906003611296929190613c6e565b507fca0cfc59661a961b6c323e200f2d3aa0c236aee7dcb6a1cb695e2c8c1cf90ace8383836040516112ca939291906148c8565b60405180910390a1505050565b600b60029054906101000a900461ffff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113a161210d565b6113ab6000612c40565b565b60136020528060005260406000206000915054906101000a900460ff1681565b60006113d7611f3c565b90508073ffffffffffffffffffffffffffffffffffffffff166113f8611e2f565b73ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590614971565b60405180910390fd5b61145781612c40565b50565b61146c82611466611f3c565b83612234565b6114768282612a73565b5050565b60006114c3600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c71565b9050919050565b6114d261210d565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f38d2732664f4152f6b6754aa1afeaec7fa6618671b172e5430139b51dba2d1d68260405161156f9190613ece565b60405180910390a25050565b6000606080600080600060606115bb60077f0000000000000000000000000000000000000000000000000000000000000000612c7f90919063ffffffff16565b6115ef60087f0000000000000000000000000000000000000000000000000000000000000000612c7f90919063ffffffff16565b46306000801b600067ffffffffffffffff8111156116105761160f614991565b5b60405190808252806020026020018201604052801561163e5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b61168561210d565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614a32565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61171761181e565b836040518363ffffffff1660e01b8152600401611735929190614a52565b6020604051808303816000875af1158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190614a90565b505050565b61178561210d565b601660009054906101000a900460ff16156117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc90614b2f565b60405180910390fd5b6001601660006101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461187d90614505565b80601f01602080910402602001604051908101604052809291908181526020018280546118a990614505565b80156118f65780601f106118cb576101008083540402835291602001916118f6565b820191906000526020600020905b8154815290600101906020018083116118d957829003601f168201915b5050505050905090565b60008061190b611f3c565b905060006119198286611da8565b90508381101561195e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195590614bc1565b60405180910390fd5b61196b8286868403611f44565b60019250505092915050565b600080611982611f3c565b905061198f8185856122c0565b600191505092915050565b60155481565b6119a861210d565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a459190613ece565b60405180910390a25050565b611a5961210d565b611a63828261218b565b5050565b611a6f61210d565b611a77612d2f565b811015611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614c2d565b60405180910390fd5b806015819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00181604051611aef9190613ef8565b60405180910390a150565b600b60019054906101000a900460ff1680611b225750600b60009054906101000a900460ff16155b611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890614cbf565b60405180910390fd5b6000600b60019054906101000a900460ff161590508015611bb3576001600b60016101000a81548160ff0219169083151502179055506001600b60006101000a81548160ff0219169083151502179055505b611bbc82612d4b565b8015611bde576000600b60016101000a81548160ff0219169083151502179055505b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b83421115611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614d2b565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611c7a8c612fe8565b89604051602001611c9096959493929190614d4b565b6040516020818303038152906040528051906020012090506000611cb382613046565b90506000611cc382878787613060565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614df8565b60405180910390fd5b611d3e8a8a8a611f44565b50505050505050505050565b6000612710600b60029054906101000a900461ffff1661ffff16611d8f601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611351565b611d999190614e18565b611da39190614e89565b905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600c546000611e8a9190614767565b905090565b611e9761210d565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611ef761181e565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90614f2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990614fbe565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121009190613ef8565b60405180910390a3505050565b612115611f3c565b73ffffffffffffffffffffffffffffffffffffffff1661213361181e565b73ffffffffffffffffffffffffffffffffffffffff1614612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061502a565b60405180910390fd5b565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516122289190613ece565b60405180910390a25050565b60006122408484611da8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122ba57818110156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a390615096565b60405180910390fd5b6122b98484848403611f44565b5b50505050565b601160009054906101000a900460ff161580156122dd5750600081115b80156123375750601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238d5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123e35750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126785760008060039050601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561248657600060106000600381106124585761245761479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111561248157600090505b61255f565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561251d57600060106001600381106124ef576124ee61479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111561251857600190505b61255e565b600060106002600381106125345761253361479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16111561255d57600290505b5b5b60038160ff1610156126605761271060108260ff16600381106125855761258461479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16846125ae9190614e18565b6125b89190614e89565b915081836125c691906150b6565b925060108160ff16600381106125df576125de61479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff16600e8260ff16600381106126145761261361479b565b5b601091828204019190066002029054906101000a900461ffff1661ffff168361263d9190614e18565b6126479190614e89565b600c60008282546126589190614767565b925050819055505b60008211156126755761267485308461308b565b5b50505b6000612682611d4a565b61268a611e79565b101580156126c2575060006126c0601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611351565b115b9050601160009054906101000a900460ff1615801561272b5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127855750601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561278e5750805b156128f0576001601160006101000a81548160ff0219169083151502179055506000806127bd57506000600c54115b156128d4576000600c5460006127d39190614767565b905060006127e082613301565b6000479050600083600c54836127f69190614e18565b6128009190614e89565b905060008111156128c757600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050925082156128c6577fe74ff83287143f0bf18ca2ef2512d67578e727b6884ac317f1d639c497fd3ce0600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516128bd929190614a52565b60405180910390a15b5b6000600c81905550505050505b6000601160006101000a81548160ff0219169083151502179055505b6128fb84848461308b565b50505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561296a5761296982600161218b565b5b8173ffffffffffffffffffffffffffffffffffffffff167f911aa18ddbbbc33c9b4c704a71bdaa0984b0aa2e82726a7f51e64bad0b0a8455826040516129b09190613ece565b60405180910390a25050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015612a3857507f000000000000000000000000000000000000000000000000000000000000000046145b15612a65577f00000000000000000000000000000000000000000000000000000000000000009050612a70565b612a6d613544565b90505b90565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad99061515c565b60405180910390fd5b612aee826000836135da565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b906151ee565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c279190613ef8565b60405180910390a3612c3b8360008461378c565b505050565b600660006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055612c6e8161383b565b50565b600081600001549050919050565b606060ff60001b8314612c9c57612c9583613901565b9050612d29565b818054612ca890614505565b80601f0160208091040260200160405190810160405280929190818152602001828054612cd490614505565b8015612d215780601f10612cf657610100808354040283529160200191612d21565b820191906000526020600020905b815481529060010190602001808311612d0457829003601f168201915b505050505090505b92915050565b60006103e8612d3c610bdc565b612d469190614e89565b905090565b80601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1d9190615223565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190615223565b6040518363ffffffff1660e01b8152600401612ee7929190615250565b6020604051808303816000875af1158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2a9190615223565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f7581600161218b565b612fa2601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612901565b8073ffffffffffffffffffffffffffffffffffffffff167fbc052db65df144ad4f71f02da93cae3d4401104c30ac374d7cc10d87ee07b60260405160405180910390a250565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061303581612c71565b915061304081613975565b50919050565b60006130596130536129bc565b8361398b565b9050919050565b6000806000613071878787876139cc565b9150915061307e81613aae565b8192505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f1906152eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613169576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131609061537d565b60405180910390fd5b6131748383836135da565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f19061540f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e89190613ef8565b60405180910390a36132fb84848461378c565b50505050565b6000600267ffffffffffffffff81111561331e5761331d614991565b5b60405190808252806020026020018201604052801561334c5781602001602082028036833780820191505090505b50905030816000815181106133645761336361479b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561340b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342f9190615223565b816001815181106134435761344261479b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134aa30601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f44565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161350e959493929190615528565b600060405180830381600087803b15801561352857600080fd5b505af115801561353c573d6000803e3d6000fd5b505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016135bf959493929190615582565b60405160208183030381529060405280519060200120905090565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137275750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137265750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561377c57601660009054906101000a900460ff1661377b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377290615647565b60405180910390fd5b5b613787838383613c14565b505050565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661382b576015546137e983611351565b111561382a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613821906156d9565b60405180910390fd5b5b613836838383613c19565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6060600061390e83613c1e565b90506000602067ffffffffffffffff81111561392d5761392c614991565b5b6040519080825280601f01601f19166020018201604052801561395f5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115613a07576000600391509150613aa5565b600060018787878760405160008152602001604052604051613a2c94939291906156f9565b6020604051602081039080840390855afa158015613a4e573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a9c57600060019250925050613aa5565b80600092509250505b94509492505050565b60006004811115613ac257613ac161573e565b5b816004811115613ad557613ad461573e565b5b0315613c115760016004811115613aef57613aee61573e565b5b816004811115613b0257613b0161573e565b5b03613b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b39906157b9565b60405180910390fd5b60026004811115613b5657613b5561573e565b5b816004811115613b6957613b6861573e565b5b03613ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba090615825565b60405180910390fd5b60036004811115613bbd57613bbc61573e565b5b816004811115613bd057613bcf61573e565b5b03613c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c07906158b7565b60405180910390fd5b5b50565b505050565b505050565b60008060ff8360001c169050601f811115613c65576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b826003600f01601090048101928215613cfa5791602002820160005b83821115613cca57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613c8a565b8015613cf85782816101000a81549061ffff0219169055600201602081600101049283019260010302613cca565b505b509050613d079190613d0b565b5090565b5b80821115613d24576000816000905550600101613d0c565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d62578082015181840152602081019050613d47565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d8a82613d28565b613d948185613d33565b9350613da4818560208601613d44565b613dad81613d6e565b840191505092915050565b60006020820190508181036000830152613dd28184613d7f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e0a82613ddf565b9050919050565b613e1a81613dff565b8114613e2557600080fd5b50565b600081359050613e3781613e11565b92915050565b6000819050919050565b613e5081613e3d565b8114613e5b57600080fd5b50565b600081359050613e6d81613e47565b92915050565b60008060408385031215613e8a57613e89613dda565b5b6000613e9885828601613e28565b9250506020613ea985828601613e5e565b9150509250929050565b60008115159050919050565b613ec881613eb3565b82525050565b6000602082019050613ee36000830184613ebf565b92915050565b613ef281613e3d565b82525050565b6000602082019050613f0d6000830184613ee9565b92915050565b600060208284031215613f2957613f28613dda565b5b6000613f3784828501613e28565b91505092915050565b600060208284031215613f5657613f55613dda565b5b6000613f6484828501613e5e565b91505092915050565b600061ffff82169050919050565b613f8481613f6d565b82525050565b6000602082019050613f9f6000830184613f7b565b92915050565b613fae81613f6d565b8114613fb957600080fd5b50565b600081359050613fcb81613fa5565b92915050565b600060208284031215613fe757613fe6613dda565b5b6000613ff584828501613fbc565b91505092915050565b60008060006060848603121561401757614016613dda565b5b600061402586828701613e28565b935050602061403686828701613e28565b925050604061404786828701613e5e565b9150509250925092565b61405a81613eb3565b811461406557600080fd5b50565b60008135905061407781614051565b92915050565b6000806040838503121561409457614093613dda565b5b60006140a285828601613e28565b92505060206140b385828601614068565b9150509250929050565b600060ff82169050919050565b6140d3816140bd565b82525050565b60006020820190506140ee60008301846140ca565b92915050565b6000819050919050565b614107816140f4565b82525050565b600060208201905061412260008301846140fe565b92915050565b60008060006060848603121561414157614140613dda565b5b600061414f86828701613fbc565b935050602061416086828701613fbc565b925050604061417186828701613fbc565b9150509250925092565b6000819050919050565b60006141a061419b61419684613ddf565b61417b565b613ddf565b9050919050565b60006141b282614185565b9050919050565b60006141c4826141a7565b9050919050565b6141d4816141b9565b82525050565b60006020820190506141ef60008301846141cb565b92915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61422a816141f5565b82525050565b61423981613dff565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61427481613e3d565b82525050565b6000614286838361426b565b60208301905092915050565b6000602082019050919050565b60006142aa8261423f565b6142b4818561424a565b93506142bf8361425b565b8060005b838110156142f05781516142d7888261427a565b97506142e283614292565b9250506001810190506142c3565b5085935050505092915050565b600060e082019050614312600083018a614221565b81810360208301526143248189613d7f565b905081810360408301526143388188613d7f565b90506143476060830187613ee9565b6143546080830186614230565b61436160a08301856140fe565b81810360c0830152614373818461429f565b905098975050505050505050565b60006020820190506143966000830184614230565b92915050565b6143a5816140bd565b81146143b057600080fd5b50565b6000813590506143c28161439c565b92915050565b6143d1816140f4565b81146143dc57600080fd5b50565b6000813590506143ee816143c8565b92915050565b600080600080600080600060e0888a03121561441357614412613dda565b5b60006144218a828b01613e28565b97505060206144328a828b01613e28565b96505060406144438a828b01613e5e565b95505060606144548a828b01613e5e565b94505060806144658a828b016143b3565b93505060a06144768a828b016143df565b92505060c06144878a828b016143df565b91505092959891949750929550565b600080604083850312156144ad576144ac613dda565b5b60006144bb85828601613e28565b92505060206144cc85828601613e28565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451d57607f821691505b6020821081036145305761452f6144d6565b5b50919050565b7f546178657344656661756c74526f7574657257616c6c65743a2057616c6c657460008201527f2074617820726563697069656e742063616e6e6f74206265206120307830206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015250565b60006145b8604683613d33565b91506145c382614536565b606082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b7f537761705468726573686f6c643a2043616e6e6f7420657863656564206c696d60008201527f6974732066726f6d20302e30312520746f20352520666f72206e65772073776160208201527f70207468726573686f6c64000000000000000000000000000000000000000000604082015250565b6000614670604b83613d33565b915061467b826145ee565b606082019050919050565b6000602082019050818103600083015261469f81614663565b9050919050565b7f44656661756c74526f757465723a2043616e6e6f742072656d6f766520696e6960008201527f7469616c20706169722066726f6d206c69737400000000000000000000000000602082015250565b6000614702603383613d33565b915061470d826146a6565b604082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061477282613e3d565b915061477d83613e3d565b925082820190508082111561479557614794614738565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147d582613f6d565b91506147e083613f6d565b9250828203905061ffff8111156147fa576147f9614738565b5b92915050565b600061480b82613f6d565b915061481683613f6d565b9250828201905061ffff8111156148305761482f614738565b5b92915050565b7f546178657344656661756c74526f757465723a2043616e6e6f7420657863656560008201527f64206d617820746f74616c20666565206f662032352500000000000000000000602082015250565b6000614892603683613d33565b915061489d82614836565b604082019050919050565b600060208201905081810360008301526148c181614885565b9050919050565b60006060820190506148dd6000830186613f7b565b6148ea6020830185613f7b565b6148f76040830184613f7b565b949350505050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b600061495b602983613d33565b9150614966826148ff565b604082019050919050565b6000602082019050818103600083015261498a8161494e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f546f6b656e5265636f7665723a2043616e6e6f74207265636f7665722074686960008201527f7320746f6b656e00000000000000000000000000000000000000000000000000602082015250565b6000614a1c602783613d33565b9150614a27826149c0565b604082019050919050565b60006020820190508181036000830152614a4b81614a0f565b9050919050565b6000604082019050614a676000830185614230565b614a746020830184613ee9565b9392505050565b600081519050614a8a81614051565b92915050565b600060208284031215614aa657614aa5613dda565b5b6000614ab484828501614a7b565b91505092915050565b7f456e61626c6554726164696e673a2054726164696e672077617320656e61626c60008201527f656420616c726561647900000000000000000000000000000000000000000000602082015250565b6000614b19602a83613d33565b9150614b2482614abd565b604082019050919050565b60006020820190508181036000830152614b4881614b0c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614bab602583613d33565b9150614bb682614b4f565b604082019050919050565b60006020820190508181036000830152614bda81614b9e565b9050919050565b7f4d617857616c6c65743a204c696d697420746f6f206c6f770000000000000000600082015250565b6000614c17601883613d33565b9150614c2282614be1565b602082019050919050565b60006020820190508181036000830152614c4681614c0a565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614ca9602e83613d33565b9150614cb482614c4d565b604082019050919050565b60006020820190508181036000830152614cd881614c9c565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000614d15601d83613d33565b9150614d2082614cdf565b602082019050919050565b60006020820190508181036000830152614d4481614d08565b9050919050565b600060c082019050614d6060008301896140fe565b614d6d6020830188614230565b614d7a6040830187614230565b614d876060830186613ee9565b614d946080830185613ee9565b614da160a0830184613ee9565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000614de2601e83613d33565b9150614ded82614dac565b602082019050919050565b60006020820190508181036000830152614e1181614dd5565b9050919050565b6000614e2382613e3d565b9150614e2e83613e3d565b9250828202614e3c81613e3d565b91508282048414831517614e5357614e52614738565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e9482613e3d565b9150614e9f83613e3d565b925082614eaf57614eae614e5a565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f16602483613d33565b9150614f2182614eba565b604082019050919050565b60006020820190508181036000830152614f4581614f09565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fa8602283613d33565b9150614fb382614f4c565b604082019050919050565b60006020820190508181036000830152614fd781614f9b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615014602083613d33565b915061501f82614fde565b602082019050919050565b6000602082019050818103600083015261504381615007565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615080601d83613d33565b915061508b8261504a565b602082019050919050565b600060208201905081810360008301526150af81615073565b9050919050565b60006150c182613e3d565b91506150cc83613e3d565b92508282039050818111156150e4576150e3614738565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615146602183613d33565b9150615151826150ea565b604082019050919050565b6000602082019050818103600083015261517581615139565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006151d8602283613d33565b91506151e38261517c565b604082019050919050565b60006020820190508181036000830152615207816151cb565b9050919050565b60008151905061521d81613e11565b92915050565b60006020828403121561523957615238613dda565b5b60006152478482850161520e565b91505092915050565b60006040820190506152656000830185614230565b6152726020830184614230565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006152d5602583613d33565b91506152e082615279565b604082019050919050565b60006020820190508181036000830152615304816152c8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615367602383613d33565b91506153728261530b565b604082019050919050565b600060208201905081810360008301526153968161535a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006153f9602683613d33565b91506154048261539d565b604082019050919050565b60006020820190508181036000830152615428816153ec565b9050919050565b6000819050919050565b600061545461544f61544a8461542f565b61417b565b613e3d565b9050919050565b61546481615439565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549f81613dff565b82525050565b60006154b18383615496565b60208301905092915050565b6000602082019050919050565b60006154d58261546a565b6154df8185615475565b93506154ea83615486565b8060005b8381101561551b57815161550288826154a5565b975061550d836154bd565b9250506001810190506154ee565b5085935050505092915050565b600060a08201905061553d6000830188613ee9565b61554a602083018761545b565b818103604083015261555c81866154ca565b905061556b6060830185614230565b6155786080830184613ee9565b9695505050505050565b600060a08201905061559760008301886140fe565b6155a460208301876140fe565b6155b160408301866140fe565b6155be6060830185613ee9565b6155cb6080830184614230565b9695505050505050565b7f456e61626c6554726164696e673a2054726164696e6720776173206e6f74206560008201527f6e61626c65642079657400000000000000000000000000000000000000000000602082015250565b6000615631602a83613d33565b915061563c826155d5565b604082019050919050565b6000602082019050818103600083015261566081615624565b9050919050565b7f4d617857616c6c65743a2043616e6e6f7420657863656564206d61782077616c60008201527f6c6574206c696d69740000000000000000000000000000000000000000000000602082015250565b60006156c3602983613d33565b91506156ce82615667565b604082019050919050565b600060208201905081810360008301526156f2816156b6565b9050919050565b600060808201905061570e60008301876140fe565b61571b60208301866140ca565b61572860408301856140fe565b61573560608301846140fe565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006157a3601883613d33565b91506157ae8261576d565b602082019050919050565b600060208201905081810360008301526157d281615796565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061580f601f83613d33565b915061581a826157d9565b602082019050919050565b6000602082019050818103600083015261583e81615802565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006158a1602283613d33565b91506158ac82615845565b604082019050919050565b600060208201905081810360008301526158d081615894565b905091905056fea26469706673582212209abdb5edc68f505a277027e7ddc5c2b141849055e80eb18a0ea906c9b4facc2064736f6c63430008130033",
"opcodes": "PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4461726532506C61790000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4461726532506C61790000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4432500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0xFD SWAP2 SWAP1 PUSH3 0x16BD JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0x10F SWAP2 SWAP1 PUSH3 0x16BD JUMP JUMPDEST POP POP POP PUSH3 0x132 PUSH3 0x126 PUSH3 0x397 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x39F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x148 PUSH1 0x7 DUP4 PUSH3 0x3D8 PUSH1 0x20 SHL SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 DUP2 DUP2 MSTORE POP POP PUSH3 0x166 PUSH1 0x8 DUP3 PUSH3 0x3D8 PUSH1 0x20 SHL SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x140 DUP2 DUP2 MSTORE POP POP DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0xE0 DUP2 DUP2 MSTORE POP POP DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x100 DUP2 DUP2 MSTORE POP POP CHAINID PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH3 0x1A5 PUSH3 0x430 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x80 DUP2 DUP2 MSTORE POP POP ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP POP PUSH1 0x0 PUSH20 0xB031999EB2305DAD9EF65BEBAA96B453A0DFCEFF SWAP1 POP PUSH3 0x20E PUSH1 0x32 PUSH3 0x48D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x233 PUSH20 0xB031999EB2305DAD9EF65BEBAA96B453A0DFCEFF PUSH3 0x553 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x249 PUSH2 0x12C DUP1 PUSH1 0x0 PUSH3 0x678 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x25C DUP2 PUSH1 0x1 PUSH3 0xA43 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x26F ADDRESS PUSH1 0x1 PUSH3 0xA43 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x282 DUP2 PUSH1 0x1 PUSH3 0xAFE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x295 ADDRESS PUSH1 0x1 PUSH3 0xAFE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2A9 PUSH1 0x0 PUSH1 0x1 PUSH3 0xAFE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2F6 PUSH1 0xA PUSH3 0x2BF PUSH3 0xBA9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xA PUSH3 0x2CD SWAP2 SWAP1 PUSH3 0x1934 JUMP JUMPDEST PUSH4 0xEE6B2800 PUSH3 0x2DE SWAP2 SWAP1 PUSH3 0x1985 JUMP JUMPDEST PUSH3 0x2EA SWAP2 SWAP1 PUSH3 0x19FF JUMP JUMPDEST PUSH3 0xBB2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x309 DUP2 PUSH1 0x1 PUSH3 0xC5A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x31C ADDRESS PUSH1 0x1 PUSH3 0xC5A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x36B DUP2 PUSH1 0xA PUSH3 0x333 PUSH3 0xBA9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xA PUSH3 0x341 SWAP2 SWAP1 PUSH3 0x1934 JUMP JUMPDEST PUSH5 0x174876E800 PUSH3 0x353 SWAP2 SWAP1 PUSH3 0x1985 JUMP JUMPDEST PUSH3 0x35F SWAP2 SWAP1 PUSH3 0x19FF JUMP JUMPDEST PUSH3 0xD15 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x390 PUSH20 0xB031999EB2305DAD9EF65BEBAA96B453A0DFCEFF PUSH3 0x39F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x22C5 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x3D5 DUP2 PUSH3 0xE82 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD LT ISZERO PUSH3 0x3FE JUMPI PUSH3 0x3F6 DUP4 PUSH3 0xF48 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH3 0x42A JUMP JUMPDEST DUP3 PUSH3 0x410 DUP4 PUSH3 0xFB5 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 ADD SWAP1 DUP2 PUSH3 0x421 SWAP2 SWAP1 PUSH3 0x16BD JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x0 SHL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD CHAINID ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x472 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1AA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x49D PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH3 0x4B8 JUMPI POP PUSH2 0x1F4 DUP2 PUSH2 0xFFFF AND GT ISZERO JUMPDEST PUSH3 0x4FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x4F1 SWAP1 PUSH3 0x1BB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xB PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xCF1366790FE21E66C9DF9DCF67218B1E10ACD64D3C99AE8A7429A68DE91F1720 DUP2 PUSH1 0x40 MLOAD PUSH3 0x548 SWAP2 SWAP1 PUSH3 0x1BF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH3 0x563 PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x5D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x5CC SWAP1 PUSH3 0x1CAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x629 DUP2 PUSH1 0x1 PUSH3 0xA43 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x63C DUP2 PUSH1 0x1 PUSH3 0xAFE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH32 0x715838749E9E3D898B280FDBC2916224F84CF0F633D5AE4BD45AFB4F813FEDE7 DUP2 PUSH1 0x40 MLOAD PUSH3 0x66D SWAP2 SWAP1 PUSH3 0x1CCE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH3 0x688 PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP3 PUSH1 0xE PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH3 0x6A1 JUMPI PUSH3 0x6A0 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH3 0x6D3 JUMPI PUSH3 0x6D2 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH3 0x6F9 SWAP2 SWAP1 PUSH3 0x1D1A JUMP JUMPDEST PUSH3 0x705 SWAP2 SWAP1 PUSH3 0x1D57 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH3 0x71D JUMPI PUSH3 0x71C PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0xE PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH3 0x75B JUMPI PUSH3 0x75A PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH3 0x78D JUMPI PUSH3 0x78C PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH3 0x7B3 SWAP2 SWAP1 PUSH3 0x1D1A JUMP JUMPDEST PUSH3 0x7BF SWAP2 SWAP1 PUSH3 0x1D57 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH3 0x7D7 JUMPI PUSH3 0x7D6 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xE PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH3 0x815 JUMPI PUSH3 0x814 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH3 0x847 JUMPI PUSH3 0x846 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH3 0x86D SWAP2 SWAP1 PUSH3 0x1D1A JUMP JUMPDEST PUSH3 0x879 SWAP2 SWAP1 PUSH3 0x1D57 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH3 0x891 JUMPI PUSH3 0x890 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH3 0x8D1 JUMPI PUSH3 0x8D0 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO DUP1 ISZERO PUSH3 0x935 JUMPI POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH3 0x914 JUMPI PUSH3 0x913 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x979 JUMPI POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH3 0x958 JUMPI PUSH3 0x957 PUSH3 0x1CEB JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO JUMPDEST PUSH3 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9B2 SWAP1 PUSH3 0x1E0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE POP PUSH1 0xE SWAP1 PUSH1 0x3 PUSH3 0xA00 SWAP3 SWAP2 SWAP1 PUSH3 0x1380 JUMP JUMPDEST POP PUSH32 0xCA0CFC59661A961B6C323E200F2D3AA0C236AEE7DCB6A1CB695E2C8C1CF90ACE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH3 0xA36 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1E2C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH3 0xA53 PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0xF PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9D8F7706EA1113D1A167B526ECA956215946DD36CC7DF39EB16180222D8B5DF7 DUP3 PUSH1 0x40 MLOAD PUSH3 0xAF2 SWAP2 SWAP1 PUSH3 0x1E86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x14 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4B89C347592B1D537E066CB4ED98D87696AE35164745D7E370E4ADD16941DC92 DUP3 PUSH1 0x40 MLOAD PUSH3 0xB9D SWAP2 SWAP1 PUSH3 0x1E86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0xBC2 PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xBD2 PUSH3 0x1050 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 LT ISZERO PUSH3 0xC17 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC0E SWAP1 PUSH3 0x1EF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x15 DUP2 SWAP1 SSTORE POP PUSH32 0x4B39C36D20C57D220F61FD25C4349D4435CC03EF6C2A680942F15333C3C3E001 DUP2 PUSH1 0x40 MLOAD PUSH3 0xC4F SWAP2 SWAP1 PUSH3 0x1F15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH3 0xC6A PUSH3 0xFBF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x17 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D2732664F4152F6B6754AA1AFEAEC7FA6618671B172E5430139B51DBA2D1D6 DUP3 PUSH1 0x40 MLOAD PUSH3 0xD09 SWAP2 SWAP1 PUSH3 0x1E86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xD87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xD7E SWAP1 PUSH3 0x1F82 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xD9B PUSH1 0x0 DUP4 DUP4 PUSH3 0x1076 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0xDAF SWAP2 SWAP1 PUSH3 0x1FA4 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0xE62 SWAP2 SWAP1 PUSH3 0x1F15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH3 0xE7E PUSH1 0x0 DUP4 DUP4 PUSH3 0x1237 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x1F DUP2 MLOAD GT ISZERO PUSH3 0xF98 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x305A27A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xF8F SWAP2 SWAP1 PUSH3 0x205D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH3 0xFA6 SWAP1 PUSH3 0x20B3 JUMP JUMPDEST PUSH1 0x0 SHR OR PUSH1 0x0 SHL SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xFCF PUSH3 0x397 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFF5 PUSH3 0x12FA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x104E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1045 SWAP1 PUSH3 0x2173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E8 PUSH3 0x1065 PUSH3 0x1324 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1071 SWAP2 SWAP1 PUSH3 0x19FF JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH3 0x111A JUMPI POP PUSH1 0x17 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH3 0x11C6 JUMPI POP PUSH1 0x13 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH3 0x11C5 JUMPI POP PUSH1 0x17 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST JUMPDEST ISZERO PUSH3 0x121F JUMPI PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH3 0x121E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1215 SWAP1 PUSH3 0x220B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH3 0x1232 DUP4 DUP4 DUP4 PUSH3 0x132E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x14 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH3 0x12E2 JUMPI PUSH1 0x15 SLOAD PUSH3 0x129D DUP4 PUSH3 0x1333 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST GT ISZERO PUSH3 0x12E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12D8 SWAP1 PUSH3 0x22A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH3 0x12F5 DUP4 DUP4 DUP4 PUSH3 0x137B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x3 PUSH1 0xF ADD PUSH1 0x10 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x1411 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x13DF JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x2 ADD PUSH1 0x20 DUP2 PUSH1 0x1 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x139D JUMP JUMPDEST DUP1 ISZERO PUSH3 0x140F JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x2 ADD PUSH1 0x20 DUP2 PUSH1 0x1 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x13DF JUMP JUMPDEST POP JUMPDEST POP SWAP1 POP PUSH3 0x1420 SWAP2 SWAP1 PUSH3 0x1424 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x143F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x1425 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x14C5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x14DB JUMPI PUSH3 0x14DA PUSH3 0x147D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH3 0x1545 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1506 JUMP JUMPDEST PUSH3 0x1551 DUP7 DUP4 PUSH3 0x1506 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x159E PUSH3 0x1598 PUSH3 0x1592 DUP5 PUSH3 0x1569 JUMP JUMPDEST PUSH3 0x1573 JUMP JUMPDEST PUSH3 0x1569 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x15BA DUP4 PUSH3 0x157D JUMP JUMPDEST PUSH3 0x15D2 PUSH3 0x15C9 DUP3 PUSH3 0x15A5 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1513 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH3 0x15E9 PUSH3 0x15DA JUMP JUMPDEST PUSH3 0x15F6 DUP2 DUP5 DUP5 PUSH3 0x15AF JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x161E JUMPI PUSH3 0x1612 PUSH1 0x0 DUP3 PUSH3 0x15DF JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x15FC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x166D JUMPI PUSH3 0x1637 DUP2 PUSH3 0x14E1 JUMP JUMPDEST PUSH3 0x1642 DUP5 PUSH3 0x14F6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x1652 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x166A PUSH3 0x1661 DUP6 PUSH3 0x14F6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x15FB JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1692 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x1672 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x16AD DUP4 DUP4 PUSH3 0x167F JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x16C8 DUP3 PUSH3 0x1443 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x16E4 JUMPI PUSH3 0x16E3 PUSH3 0x144E JUMP JUMPDEST JUMPDEST PUSH3 0x16F0 DUP3 SLOAD PUSH3 0x14AC JUMP JUMPDEST PUSH3 0x16FD DUP3 DUP3 DUP6 PUSH3 0x1622 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x1735 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x1720 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x172C DUP6 DUP3 PUSH3 0x169F JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x179C JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x1745 DUP7 PUSH3 0x14E1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x176F JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x1748 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x178F JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x178B PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x167F JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH3 0x1832 JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH3 0x180A JUMPI PUSH3 0x1809 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH3 0x181A JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH3 0x182A DUP6 PUSH3 0x17D3 JUMP JUMPDEST SWAP5 POP PUSH3 0x17EA JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x184D JUMPI PUSH1 0x1 SWAP1 POP PUSH3 0x1920 JUMP JUMPDEST DUP2 PUSH3 0x185D JUMPI PUSH1 0x0 SWAP1 POP PUSH3 0x1920 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x1876 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x1881 JUMPI PUSH3 0x18B7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x1920 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x1896 JUMPI PUSH3 0x1895 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH3 0x18B0 JUMPI PUSH3 0x18AF PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST POP PUSH3 0x1920 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x18F1 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH3 0x18EB JUMPI PUSH3 0x18EA PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST PUSH3 0x1920 JUMP JUMPDEST PUSH3 0x1900 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH3 0x17E0 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH3 0x191A JUMPI PUSH3 0x1919 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1941 DUP3 PUSH3 0x1569 JUMP JUMPDEST SWAP2 POP PUSH3 0x194E DUP4 PUSH3 0x1927 JUMP JUMPDEST SWAP3 POP PUSH3 0x197D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH3 0x183B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1992 DUP3 PUSH3 0x1569 JUMP JUMPDEST SWAP2 POP PUSH3 0x199F DUP4 PUSH3 0x1569 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH3 0x19AF DUP2 PUSH3 0x1569 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH3 0x19C9 JUMPI PUSH3 0x19C8 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x1A0C DUP3 PUSH3 0x1569 JUMP JUMPDEST SWAP2 POP PUSH3 0x1A19 DUP4 PUSH3 0x1569 JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x1A2C JUMPI PUSH3 0x1A2B PUSH3 0x19D0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1A4C DUP2 PUSH3 0x1A37 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x1A5D DUP2 PUSH3 0x1569 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A90 DUP3 PUSH3 0x1A63 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AA2 DUP2 PUSH3 0x1A83 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH3 0x1ABF PUSH1 0x0 DUP4 ADD DUP9 PUSH3 0x1A41 JUMP JUMPDEST PUSH3 0x1ACE PUSH1 0x20 DUP4 ADD DUP8 PUSH3 0x1A41 JUMP JUMPDEST PUSH3 0x1ADD PUSH1 0x40 DUP4 ADD DUP7 PUSH3 0x1A41 JUMP JUMPDEST PUSH3 0x1AEC PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x1A52 JUMP JUMPDEST PUSH3 0x1AFB PUSH1 0x80 DUP4 ADD DUP5 PUSH3 0x1A97 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x537761705468726573686F6C643A2043616E6E6F7420657863656564206C696D PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6974732066726F6D20302E30312520746F20352520666F72206E657720737761 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x70207468726573686F6C64000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B9A PUSH1 0x4B DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x1BA7 DUP3 PUSH3 0x1B16 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1BCD DUP2 PUSH3 0x1B8B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1BED DUP2 PUSH3 0x1BD4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1C0A PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1BE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546178657344656661756C74526F7574657257616C6C65743A2057616C6C6574 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x2074617820726563697069656E742063616E6E6F742062652061203078302061 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C94 PUSH1 0x46 DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x1CA1 DUP3 PUSH3 0x1C10 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1CC7 DUP2 PUSH3 0x1C85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1CE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A97 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x1D27 DUP3 PUSH3 0x1BD4 JUMP JUMPDEST SWAP2 POP PUSH3 0x1D34 DUP4 PUSH3 0x1BD4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x1D51 JUMPI PUSH3 0x1D50 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1D64 DUP3 PUSH3 0x1BD4 JUMP JUMPDEST SWAP2 POP PUSH3 0x1D71 DUP4 PUSH3 0x1BD4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x1D8E JUMPI PUSH3 0x1D8D PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546178657344656661756C74526F757465723A2043616E6E6F74206578636565 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x64206D617820746F74616C20666565206F662032352500000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1DF2 PUSH1 0x36 DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x1DFF DUP3 PUSH3 0x1D94 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1E25 DUP2 PUSH3 0x1DE3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x1E43 PUSH1 0x0 DUP4 ADD DUP7 PUSH3 0x1BE2 JUMP JUMPDEST PUSH3 0x1E52 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x1BE2 JUMP JUMPDEST PUSH3 0x1E61 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x1BE2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1E80 DUP2 PUSH3 0x1E69 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1E9D PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1E75 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D617857616C6C65743A204C696D697420746F6F206C6F770000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1EDB PUSH1 0x18 DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x1EE8 DUP3 PUSH3 0x1EA3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1F0E DUP2 PUSH3 0x1ECC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1F2C PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A52 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1F6A PUSH1 0x1F DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x1F77 DUP3 PUSH3 0x1F32 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1F9D DUP2 PUSH3 0x1F5B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FB1 DUP3 PUSH3 0x1569 JUMP JUMPDEST SWAP2 POP PUSH3 0x1FBE DUP4 PUSH3 0x1569 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH3 0x1FD9 JUMPI PUSH3 0x1FD8 PUSH3 0x17A4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1FFF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x1FE2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2029 DUP3 PUSH3 0x1443 JUMP JUMPDEST PUSH3 0x2035 DUP2 DUP6 PUSH3 0x1B05 JUMP JUMPDEST SWAP4 POP PUSH3 0x2047 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x1FDF JUMP JUMPDEST PUSH3 0x2052 DUP2 PUSH3 0x200B JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2079 DUP2 DUP5 PUSH3 0x201C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x20AA DUP3 MLOAD PUSH3 0x1A37 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x20C0 DUP3 PUSH3 0x2081 JUMP JUMPDEST DUP3 PUSH3 0x20CC DUP5 PUSH3 0x208C JUMP JUMPDEST SWAP1 POP PUSH3 0x20D9 DUP2 PUSH3 0x209C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP3 LT ISZERO PUSH3 0x211C JUMPI PUSH3 0x2117 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 PUSH1 0x20 SUB PUSH1 0x8 MUL PUSH3 0x1506 JUMP JUMPDEST DUP4 AND SWAP3 POP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x215B PUSH1 0x20 DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x2168 DUP3 PUSH3 0x2123 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x218E DUP2 PUSH3 0x214C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x456E61626C6554726164696E673A2054726164696E6720776173206E6F742065 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E61626C65642079657400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x21F3 PUSH1 0x2A DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x2200 DUP3 PUSH3 0x2195 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2226 DUP2 PUSH3 0x21E4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D617857616C6C65743A2043616E6E6F7420657863656564206D61782077616C PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6574206C696D69740000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x228B PUSH1 0x29 DUP4 PUSH3 0x1B05 JUMP JUMPDEST SWAP2 POP PUSH3 0x2298 DUP3 PUSH3 0x222D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x22BE DUP2 PUSH3 0x227C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x590D PUSH3 0x2320 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x15C2 ADD MSTORE PUSH1 0x0 PUSH2 0x158E ADD MSTORE PUSH1 0x0 PUSH2 0x358A ADD MSTORE PUSH1 0x0 PUSH2 0x3569 ADD MSTORE PUSH1 0x0 PUSH2 0x29C0 ADD MSTORE PUSH1 0x0 PUSH2 0x2A16 ADD MSTORE PUSH1 0x0 PUSH2 0x2A3F ADD MSTORE PUSH2 0x590D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x28C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0x15A JUMPI DUP1 PUSH4 0xC0246668 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xD9477526 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD9477526 EQ PUSH2 0xA03 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0xA2E JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xA6B JUMPI DUP1 PUSH4 0xE85CEEE8 EQ PUSH2 0xA96 JUMPI DUP1 PUSH4 0xF112BA72 EQ PUSH2 0xAD3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xAFE JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0xC0246668 EQ PUSH2 0x90B JUMPI DUP1 PUSH4 0xC0A904A2 EQ PUSH2 0x934 JUMPI DUP1 PUSH4 0xC18BC195 EQ PUSH2 0x95D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x986 JUMPI DUP1 PUSH4 0xCACCD7F7 EQ PUSH2 0x9AF JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x9DA JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0x8FFFABED EQ PUSH2 0x810 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x866 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8A3 JUMPI DUP1 PUSH4 0xAA4BDE28 EQ PUSH2 0x8E0 JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x6E5 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x70E JUMPI DUP1 PUSH4 0x801B51D9 EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0x8980F11F EQ PUSH2 0x7A5 JUMPI DUP1 PUSH4 0x8A8C523C EQ PUSH2 0x7CE JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x408CCBDF GT PUSH2 0x1FE JUMPI DUP1 PUSH4 0x502F7446 GT PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x502F7446 EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0x5CCE86CD EQ PUSH2 0x600 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x67A JUMPI DUP1 PUSH4 0x76856557 EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x6CE JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x408CCBDF EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x4ADA218B EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x4BC75079 EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x4F011B83 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x4FBEE193 EQ PUSH2 0x598 JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x1A0E718C GT PUSH2 0x250 JUMPI DUP1 PUSH4 0x1A0E718C EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x2D99D32E EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x44B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x476 JUMPI PUSH2 0x293 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x184FC565 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x186A6335 EQ PUSH2 0x354 JUMPI PUSH2 0x293 JUMP JUMPDEST CALLDATASIZE PUSH2 0x293 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD PUSH2 0xB27 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BA SWAP2 SWAP1 PUSH2 0x3DB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E5 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0xBB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x322 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x352 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x34D SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0xBE6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xCEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x388 SWAP2 SWAP1 PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x3FD1 JUMP JUMPDEST PUSH2 0xD1C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DC SWAP2 SWAP1 PUSH2 0x3FFE JUMP JUMPDEST PUSH2 0xDD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EE SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x407D JUMP JUMPDEST PUSH2 0xE03 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x435 PUSH2 0xEA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 SWAP1 PUSH2 0x40D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x460 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46D SWAP2 SWAP1 PUSH2 0x410D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x49D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x498 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0xEC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4AA SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D5 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xEF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E7 SWAP2 SWAP1 PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x517 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x512 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xF26 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x525 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52E PUSH2 0xF3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53B SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x56B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x566 SWAP2 SWAP1 PUSH2 0x4128 JUMP JUMPDEST PUSH2 0xF4D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x582 PUSH2 0x12D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x58F SWAP2 SWAP1 PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5BF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5BA SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5CC SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5EA PUSH2 0x130B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5F7 SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x627 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x622 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x634 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x664 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65F SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x671 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x68F PUSH2 0x1399 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6B3 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C5 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6E3 PUSH2 0x13CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x707 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0x145A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x735 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x730 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x147A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x742 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x772 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x76D SWAP2 SWAP1 PUSH2 0x407D JUMP JUMPDEST PUSH2 0x14CA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x789 PUSH2 0x157B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79C SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7CC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7C7 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0x167D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7E3 PUSH2 0x177D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7FA PUSH2 0x181E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x807 SWAP2 SWAP1 PUSH2 0x4381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x825 PUSH2 0x1848 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x832 SWAP2 SWAP1 PUSH2 0x4381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x850 PUSH2 0x186E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x85D SWAP2 SWAP1 PUSH2 0x3DB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x888 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0x1900 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x89A SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8C5 SWAP2 SWAP1 PUSH2 0x3E73 JUMP JUMPDEST PUSH2 0x1977 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D7 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8F5 PUSH2 0x199A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x902 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x917 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x932 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x92D SWAP2 SWAP1 PUSH2 0x407D JUMP JUMPDEST PUSH2 0x19A0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x95B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x956 SWAP2 SWAP1 PUSH2 0x407D JUMP JUMPDEST PUSH2 0x1A51 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x969 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x984 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97F SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x1A67 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9AD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x9A8 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x1AFA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C4 PUSH2 0x1BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D1 SWAP2 SWAP1 PUSH2 0x4381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA01 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x9FC SWAP2 SWAP1 PUSH2 0x43F4 JUMP JUMPDEST PUSH2 0x1C08 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA18 PUSH2 0x1D4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA25 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA50 SWAP2 SWAP1 PUSH2 0x4496 JUMP JUMPDEST PUSH2 0x1DA8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA62 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA80 PUSH2 0x1E2F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8D SWAP2 SWAP1 PUSH2 0x4381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xABD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAB8 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x1E59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xACA SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xADF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE8 PUSH2 0x1E79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAF5 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB25 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xB20 SWAP2 SWAP1 PUSH2 0x3F13 JUMP JUMPDEST PUSH2 0x1E8F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0xB36 SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xB62 SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBAF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB84 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBAF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB92 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBC4 PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP PUSH2 0xBD1 DUP2 DUP6 DUP6 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xBEE PUSH2 0x210D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC54 SWAP1 PUSH2 0x45CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0xCA9 DUP2 PUSH1 0x1 PUSH2 0x19A0 JUMP JUMPDEST PUSH2 0xCB4 DUP2 PUSH1 0x1 PUSH2 0x218B JUMP JUMPDEST PUSH32 0x715838749E9E3D898B280FDBC2916224F84CF0F633D5AE4BD45AFB4F813FEDE7 DUP2 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP2 SWAP1 PUSH2 0x4381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xE DUP2 PUSH1 0x3 DUP2 LT PUSH2 0xCFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xD24 PUSH2 0x210D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0xD3E JUMPI POP PUSH2 0x1F4 DUP2 PUSH2 0xFFFF AND GT ISZERO JUMPDEST PUSH2 0xD7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD74 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xB PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xCF1366790FE21E66C9DF9DCF67218B1E10ACD64D3C99AE8A7429A68DE91F1720 DUP2 PUSH1 0x40 MLOAD PUSH2 0xDC9 SWAP2 SWAP1 PUSH2 0x3F8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDDF PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP PUSH2 0xDEC DUP6 DUP3 DUP6 PUSH2 0x2234 JUMP JUMPDEST PUSH2 0xDF7 DUP6 DUP6 DUP6 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE0B PUSH2 0x210D JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE92 SWAP1 PUSH2 0x4718 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEA5 DUP3 DUP3 PUSH2 0x2901 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEBC PUSH2 0x29BC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xECC PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP PUSH2 0xEED DUP2 DUP6 DUP6 PUSH2 0xEDE DUP6 DUP10 PUSH2 0x1DA8 JUMP JUMPDEST PUSH2 0xEE8 SWAP2 SWAP1 PUSH2 0x4767 JUMP JUMPDEST PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x10 DUP2 PUSH1 0x3 DUP2 LT PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xF37 PUSH2 0xF31 PUSH2 0x1F3C JUMP JUMPDEST DUP3 PUSH2 0x2A73 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF55 PUSH2 0x210D JUMP JUMPDEST DUP3 PUSH1 0xE PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0xF6B JUMPI PUSH2 0xF6A PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0xF9A JUMPI PUSH2 0xF99 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFBE SWAP2 SWAP1 PUSH2 0x47CA JUMP JUMPDEST PUSH2 0xFC8 SWAP2 SWAP1 PUSH2 0x4800 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0xFDD JUMPI PUSH2 0xFDC PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0xE PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x1018 JUMPI PUSH2 0x1017 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x1047 JUMPI PUSH2 0x1046 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x106B SWAP2 SWAP1 PUSH2 0x47CA JUMP JUMPDEST PUSH2 0x1075 SWAP2 SWAP1 PUSH2 0x4800 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x108A JUMPI PUSH2 0x1089 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xE PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH2 0x10C5 JUMPI PUSH2 0x10C4 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH2 0x10F4 JUMPI PUSH2 0x10F3 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0x1118 SWAP2 SWAP1 PUSH2 0x47CA JUMP JUMPDEST PUSH2 0x1122 SWAP2 SWAP1 PUSH2 0x4800 JUMP JUMPDEST PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH2 0x1137 JUMPI PUSH2 0x1136 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0x1174 JUMPI PUSH2 0x1173 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x11D4 JUMPI POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x11B3 JUMPI PUSH2 0x11B2 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1214 JUMPI POP PUSH2 0x9C4 PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH2 0x11F3 JUMPI PUSH2 0x11F2 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO JUMPDEST PUSH2 0x1253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x124A SWAP1 PUSH2 0x48A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE POP PUSH1 0xE SWAP1 PUSH1 0x3 PUSH2 0x1296 SWAP3 SWAP2 SWAP1 PUSH2 0x3C6E JUMP JUMPDEST POP PUSH32 0xCA0CFC59661A961B6C323E200F2D3AA0C236AEE7DCB6A1CB695E2C8C1CF90ACE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x12CA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH1 0xF PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x13A1 PUSH2 0x210D JUMP JUMPDEST PUSH2 0x13AB PUSH1 0x0 PUSH2 0x2C40 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D7 PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13F8 PUSH2 0x1E2F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x144E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1445 SWAP1 PUSH2 0x4971 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1457 DUP2 PUSH2 0x2C40 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x146C DUP3 PUSH2 0x1466 PUSH2 0x1F3C JUMP JUMPDEST DUP4 PUSH2 0x2234 JUMP JUMPDEST PUSH2 0x1476 DUP3 DUP3 PUSH2 0x2A73 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 PUSH1 0x9 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x2C71 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14D2 PUSH2 0x210D JUMP JUMPDEST DUP1 PUSH1 0x17 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D2732664F4152F6B6754AA1AFEAEC7FA6618671B172E5430139B51DBA2D1D6 DUP3 PUSH1 0x40 MLOAD PUSH2 0x156F SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 PUSH2 0x15BB PUSH1 0x7 PUSH32 0x0 PUSH2 0x2C7F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x15EF PUSH1 0x8 PUSH32 0x0 PUSH2 0x2C7F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST CHAINID ADDRESS PUSH1 0x0 DUP1 SHL PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1610 JUMPI PUSH2 0x160F PUSH2 0x4991 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x163E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 JUMP JUMPDEST PUSH2 0x1685 PUSH2 0x210D JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x16F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16EA SWAP1 PUSH2 0x4A32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x1717 PUSH2 0x181E JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1735 SWAP3 SWAP2 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1754 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1778 SWAP2 SWAP1 PUSH2 0x4A90 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1785 PUSH2 0x210D JUMP JUMPDEST PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x17D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17CC SWAP1 PUSH2 0x4B2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x16 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x799663458A5EF2936F7FA0C99B3336C69C25890F82974F04E811E5BB359186C7 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x187D SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x18A9 SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x18F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x18F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x18D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x190B PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1919 DUP3 DUP7 PUSH2 0x1DA8 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x195E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1955 SWAP1 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x196B DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1982 PUSH2 0x1F3C JUMP JUMPDEST SWAP1 POP PUSH2 0x198F DUP2 DUP6 DUP6 PUSH2 0x22C0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x19A8 PUSH2 0x210D JUMP JUMPDEST DUP1 PUSH1 0xF PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x9D8F7706EA1113D1A167B526ECA956215946DD36CC7DF39EB16180222D8B5DF7 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1A45 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x1A59 PUSH2 0x210D JUMP JUMPDEST PUSH2 0x1A63 DUP3 DUP3 PUSH2 0x218B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1A6F PUSH2 0x210D JUMP JUMPDEST PUSH2 0x1A77 PUSH2 0x2D2F JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1AB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AB0 SWAP1 PUSH2 0x4C2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x15 DUP2 SWAP1 SSTORE POP PUSH32 0x4B39C36D20C57D220F61FD25C4349D4435CC03EF6C2A680942F15333C3C3E001 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1AEF SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0xB PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x1B22 JUMPI POP PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x1B61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B58 SWAP1 PUSH2 0x4CBF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x1BB3 JUMPI PUSH1 0x1 PUSH1 0xB PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x1BBC DUP3 PUSH2 0x2D4B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1BDE JUMPI PUSH1 0x0 PUSH1 0xB PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x1C4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C42 SWAP1 PUSH2 0x4D2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x1C7A DUP13 PUSH2 0x2FE8 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C90 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0x1CB3 DUP3 PUSH2 0x3046 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1CC3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x3060 JUMP JUMPDEST SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D2A SWAP1 PUSH2 0x4DF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1D3E DUP11 DUP11 DUP11 PUSH2 0x1F44 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH1 0xB PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0x1D8F PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x1D99 SWAP2 SWAP1 PUSH2 0x4E18 JUMP JUMPDEST PUSH2 0x1DA3 SWAP2 SWAP1 PUSH2 0x4E89 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x17 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x0 PUSH2 0x1E8A SWAP2 SWAP1 PUSH2 0x4767 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E97 PUSH2 0x210D JUMP JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1EF7 PUSH2 0x181E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1FB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FAA SWAP1 PUSH2 0x4F2C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2022 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2019 SWAP1 PUSH2 0x4FBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2100 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2115 PUSH2 0x1F3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2133 PUSH2 0x181E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2189 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2180 SWAP1 PUSH2 0x502A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST DUP1 PUSH1 0x14 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4B89C347592B1D537E066CB4ED98D87696AE35164745D7E370E4ADD16941DC92 DUP3 PUSH1 0x40 MLOAD PUSH2 0x2228 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2240 DUP5 DUP5 PUSH2 0x1DA8 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x22BA JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x22AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A3 SWAP1 PUSH2 0x5096 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22B9 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x1F44 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x11 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x22DD JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST DUP1 ISZERO PUSH2 0x2337 JUMPI POP PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x238D JUMPI POP PUSH1 0xF PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x23E3 JUMPI POP PUSH1 0xF PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0x2678 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 SWAP1 POP PUSH1 0x13 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2486 JUMPI PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0x2458 JUMPI PUSH2 0x2457 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO PUSH2 0x2481 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH2 0x255F JUMP JUMPDEST PUSH1 0x13 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x251D JUMPI PUSH1 0x0 PUSH1 0x10 PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x24EF JUMPI PUSH2 0x24EE PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO PUSH2 0x2518 JUMPI PUSH1 0x1 SWAP1 POP JUMPDEST PUSH2 0x255E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x2 PUSH1 0x3 DUP2 LT PUSH2 0x2534 JUMPI PUSH2 0x2533 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND GT ISZERO PUSH2 0x255D JUMPI PUSH1 0x2 SWAP1 POP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x3 DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x2660 JUMPI PUSH2 0x2710 PUSH1 0x10 DUP3 PUSH1 0xFF AND PUSH1 0x3 DUP2 LT PUSH2 0x2585 JUMPI PUSH2 0x2584 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP5 PUSH2 0x25AE SWAP2 SWAP1 PUSH2 0x4E18 JUMP JUMPDEST PUSH2 0x25B8 SWAP2 SWAP1 PUSH2 0x4E89 JUMP JUMPDEST SWAP2 POP DUP2 DUP4 PUSH2 0x25C6 SWAP2 SWAP1 PUSH2 0x50B6 JUMP JUMPDEST SWAP3 POP PUSH1 0x10 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 LT PUSH2 0x25DF JUMPI PUSH2 0x25DE PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH1 0xE DUP3 PUSH1 0xFF AND PUSH1 0x3 DUP2 LT PUSH2 0x2614 JUMPI PUSH2 0x2613 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x10 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x2 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP4 PUSH2 0x263D SWAP2 SWAP1 PUSH2 0x4E18 JUMP JUMPDEST PUSH2 0x2647 SWAP2 SWAP1 PUSH2 0x4E89 JUMP JUMPDEST PUSH1 0xC PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2658 SWAP2 SWAP1 PUSH2 0x4767 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP3 GT ISZERO PUSH2 0x2675 JUMPI PUSH2 0x2674 DUP6 ADDRESS DUP5 PUSH2 0x308B JUMP JUMPDEST JUMPDEST POP POP JUMPDEST PUSH1 0x0 PUSH2 0x2682 PUSH2 0x1D4A JUMP JUMPDEST PUSH2 0x268A PUSH2 0x1E79 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x26C2 JUMPI POP PUSH1 0x0 PUSH2 0x26C0 PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1351 JUMP JUMPDEST GT JUMPDEST SWAP1 POP PUSH1 0x11 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x272B JUMPI POP PUSH1 0x13 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2785 JUMPI POP PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x278E JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x28F0 JUMPI PUSH1 0x1 PUSH1 0x11 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH2 0x27BD JUMPI POP PUSH1 0x0 PUSH1 0xC SLOAD GT JUMPDEST ISZERO PUSH2 0x28D4 JUMPI PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x0 PUSH2 0x27D3 SWAP2 SWAP1 PUSH2 0x4767 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x27E0 DUP3 PUSH2 0x3301 JUMP JUMPDEST PUSH1 0x0 SELFBALANCE SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0xC SLOAD DUP4 PUSH2 0x27F6 SWAP2 SWAP1 PUSH2 0x4E18 JUMP JUMPDEST PUSH2 0x2800 SWAP2 SWAP1 PUSH2 0x4E89 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x28C7 JUMPI PUSH1 0xD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP SWAP3 POP DUP3 ISZERO PUSH2 0x28C6 JUMPI PUSH32 0xE74FF83287143F0BF18CA2EF2512D67578E727B6884AC317F1D639C497FD3CE0 PUSH1 0xD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x28BD SWAP3 SWAP2 SWAP1 PUSH2 0x4A52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE POP POP POP POP POP JUMPDEST PUSH1 0x0 PUSH1 0x11 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x28FB DUP5 DUP5 DUP5 PUSH2 0x308B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x13 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x296A JUMPI PUSH2 0x2969 DUP3 PUSH1 0x1 PUSH2 0x218B JUMP JUMPDEST JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x911AA18DDBBBC33C9B4C704A71BDAA0984B0AA2E82726A7F51E64BAD0B0A8455 DUP3 PUSH1 0x40 MLOAD PUSH2 0x29B0 SWAP2 SWAP1 PUSH2 0x3ECE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x2A38 JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x2A65 JUMPI PUSH32 0x0 SWAP1 POP PUSH2 0x2A70 JUMP JUMPDEST PUSH2 0x2A6D PUSH2 0x3544 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AD9 SWAP1 PUSH2 0x515C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AEE DUP3 PUSH1 0x0 DUP4 PUSH2 0x35DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x2B74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B6B SWAP1 PUSH2 0x51EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2C27 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x2C3B DUP4 PUSH1 0x0 DUP5 PUSH2 0x378C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH2 0x2C6E DUP2 PUSH2 0x383B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xFF PUSH1 0x0 SHL DUP4 EQ PUSH2 0x2C9C JUMPI PUSH2 0x2C95 DUP4 PUSH2 0x3901 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D29 JUMP JUMPDEST DUP2 DUP1 SLOAD PUSH2 0x2CA8 SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2CD4 SWAP1 PUSH2 0x4505 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D21 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2CF6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D21 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2D04 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2D3C PUSH2 0xBDC JUMP JUMPDEST PUSH2 0x2D46 SWAP2 SWAP1 PUSH2 0x4E89 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x11 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC45A0155 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E1D SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9C65396 ADDRESS PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2ECA SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EE7 SWAP3 SWAP2 SWAP1 PUSH2 0x5250 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F2A SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2F75 DUP2 PUSH1 0x1 PUSH2 0x218B JUMP JUMPDEST PUSH2 0x2FA2 PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH2 0x2901 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC052DB65DF144AD4F71F02DA93CAE3D4401104C30AC374D7CC10D87EE07B602 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x9 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x3035 DUP2 PUSH2 0x2C71 JUMP JUMPDEST SWAP2 POP PUSH2 0x3040 DUP2 PUSH2 0x3975 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3059 PUSH2 0x3053 PUSH2 0x29BC JUMP JUMPDEST DUP4 PUSH2 0x398B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3071 DUP8 DUP8 DUP8 DUP8 PUSH2 0x39CC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x307E DUP2 PUSH2 0x3AAE JUMP JUMPDEST DUP2 SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x30FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30F1 SWAP1 PUSH2 0x52EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3169 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3160 SWAP1 PUSH2 0x537D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3174 DUP4 DUP4 DUP4 PUSH2 0x35DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x31FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31F1 SWAP1 PUSH2 0x540F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x32E8 SWAP2 SWAP1 PUSH2 0x3EF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x32FB DUP5 DUP5 DUP5 PUSH2 0x378C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x331E JUMPI PUSH2 0x331D PUSH2 0x4991 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x334C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3364 JUMPI PUSH2 0x3363 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x340B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x342F SWAP2 SWAP1 PUSH2 0x5223 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x3443 JUMPI PUSH2 0x3442 PUSH2 0x479B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x34AA ADDRESS PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x11 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x791AC947 DUP4 PUSH1 0x0 DUP5 ADDRESS TIMESTAMP PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x350E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5528 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x353C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 CHAINID ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x35BF SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5582 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x367D JUMPI POP PUSH1 0x17 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x3727 JUMPI POP PUSH1 0x13 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x3726 JUMPI POP PUSH1 0x17 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST JUMPDEST ISZERO PUSH2 0x377C JUMPI PUSH1 0x16 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x377B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3772 SWAP1 PUSH2 0x5647 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x3787 DUP4 DUP4 DUP4 PUSH2 0x3C14 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x14 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x382B JUMPI PUSH1 0x15 SLOAD PUSH2 0x37E9 DUP4 PUSH2 0x1351 JUMP JUMPDEST GT ISZERO PUSH2 0x382A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3821 SWAP1 PUSH2 0x56D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x3836 DUP4 DUP4 DUP4 PUSH2 0x3C19 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x390E DUP4 PUSH2 0x3C1E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x392D JUMPI PUSH2 0x392C PUSH2 0x4991 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x395F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP4 PUSH1 0x2 DUP3 ADD MSTORE DUP3 PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 DUP2 KECCAK256 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 PUSH1 0x0 SHR GT ISZERO PUSH2 0x3A07 JUMPI PUSH1 0x0 PUSH1 0x3 SWAP2 POP SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3A2C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x56F9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A4E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A9C JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x3AA5 JUMP JUMPDEST DUP1 PUSH1 0x0 SWAP3 POP SWAP3 POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3AC2 JUMPI PUSH2 0x3AC1 PUSH2 0x573E JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3AD5 JUMPI PUSH2 0x3AD4 PUSH2 0x573E JUMP JUMPDEST JUMPDEST SUB ISZERO PUSH2 0x3C11 JUMPI PUSH1 0x1 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3AEF JUMPI PUSH2 0x3AEE PUSH2 0x573E JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3B02 JUMPI PUSH2 0x3B01 PUSH2 0x573E JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3B42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B39 SWAP1 PUSH2 0x57B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3B56 JUMPI PUSH2 0x3B55 PUSH2 0x573E JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3B69 JUMPI PUSH2 0x3B68 PUSH2 0x573E JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3BA9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BA0 SWAP1 PUSH2 0x5825 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3BBD JUMPI PUSH2 0x3BBC PUSH2 0x573E JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3BD0 JUMPI PUSH2 0x3BCF PUSH2 0x573E JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3C10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C07 SWAP1 PUSH2 0x58B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xFF DUP4 PUSH1 0x0 SHR AND SWAP1 POP PUSH1 0x1F DUP2 GT ISZERO PUSH2 0x3C65 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 PUSH1 0x3 PUSH1 0xF ADD PUSH1 0x10 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x3CFA JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0x3CCA JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x2 ADD PUSH1 0x20 DUP2 PUSH1 0x1 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x3C8A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3CF8 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x2 ADD PUSH1 0x20 DUP2 PUSH1 0x1 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x3CCA JUMP JUMPDEST POP JUMPDEST POP SWAP1 POP PUSH2 0x3D07 SWAP2 SWAP1 PUSH2 0x3D0B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3D24 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3D0C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D62 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3D47 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D8A DUP3 PUSH2 0x3D28 JUMP JUMPDEST PUSH2 0x3D94 DUP2 DUP6 PUSH2 0x3D33 JUMP JUMPDEST SWAP4 POP PUSH2 0x3DA4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3D44 JUMP JUMPDEST PUSH2 0x3DAD DUP2 PUSH2 0x3D6E JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DD2 DUP2 DUP5 PUSH2 0x3D7F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E0A DUP3 PUSH2 0x3DDF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E1A DUP2 PUSH2 0x3DFF JUMP JUMPDEST DUP2 EQ PUSH2 0x3E25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3E37 DUP2 PUSH2 0x3E11 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E50 DUP2 PUSH2 0x3E3D JUMP JUMPDEST DUP2 EQ PUSH2 0x3E5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3E6D DUP2 PUSH2 0x3E47 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E8A JUMPI PUSH2 0x3E89 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3E98 DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3EA9 DUP6 DUP3 DUP7 ADD PUSH2 0x3E5E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3EC8 DUP2 PUSH2 0x3EB3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3EE3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3EBF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3EF2 DUP2 PUSH2 0x3E3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3F0D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3EE9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F29 JUMPI PUSH2 0x3F28 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F37 DUP5 DUP3 DUP6 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F56 JUMPI PUSH2 0x3F55 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F64 DUP5 DUP3 DUP6 ADD PUSH2 0x3E5E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F84 DUP2 PUSH2 0x3F6D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3F9F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3F7B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3FAE DUP2 PUSH2 0x3F6D JUMP JUMPDEST DUP2 EQ PUSH2 0x3FB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3FCB DUP2 PUSH2 0x3FA5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FE7 JUMPI PUSH2 0x3FE6 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3FF5 DUP5 DUP3 DUP6 ADD PUSH2 0x3FBC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4017 JUMPI PUSH2 0x4016 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4025 DUP7 DUP3 DUP8 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4036 DUP7 DUP3 DUP8 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4047 DUP7 DUP3 DUP8 ADD PUSH2 0x3E5E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x405A DUP2 PUSH2 0x3EB3 JUMP JUMPDEST DUP2 EQ PUSH2 0x4065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4077 DUP2 PUSH2 0x4051 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4094 JUMPI PUSH2 0x4093 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x40A2 DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x40B3 DUP6 DUP3 DUP7 ADD PUSH2 0x4068 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x40D3 DUP2 PUSH2 0x40BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x40EE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40CA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4107 DUP2 PUSH2 0x40F4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4122 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4141 JUMPI PUSH2 0x4140 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x414F DUP7 DUP3 DUP8 ADD PUSH2 0x3FBC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4160 DUP7 DUP3 DUP8 ADD PUSH2 0x3FBC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4171 DUP7 DUP3 DUP8 ADD PUSH2 0x3FBC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A0 PUSH2 0x419B PUSH2 0x4196 DUP5 PUSH2 0x3DDF JUMP JUMPDEST PUSH2 0x417B JUMP JUMPDEST PUSH2 0x3DDF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41B2 DUP3 PUSH2 0x4185 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41C4 DUP3 PUSH2 0x41A7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x41D4 DUP2 PUSH2 0x41B9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x41EF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x41CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x422A DUP2 PUSH2 0x41F5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4239 DUP2 PUSH2 0x3DFF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4274 DUP2 PUSH2 0x3E3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4286 DUP4 DUP4 PUSH2 0x426B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42AA DUP3 PUSH2 0x423F JUMP JUMPDEST PUSH2 0x42B4 DUP2 DUP6 PUSH2 0x424A JUMP JUMPDEST SWAP4 POP PUSH2 0x42BF DUP4 PUSH2 0x425B JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42F0 JUMPI DUP2 MLOAD PUSH2 0x42D7 DUP9 DUP3 PUSH2 0x427A JUMP JUMPDEST SWAP8 POP PUSH2 0x42E2 DUP4 PUSH2 0x4292 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C3 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x4312 PUSH1 0x0 DUP4 ADD DUP11 PUSH2 0x4221 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4324 DUP2 DUP10 PUSH2 0x3D7F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4338 DUP2 DUP9 PUSH2 0x3D7F JUMP JUMPDEST SWAP1 POP PUSH2 0x4347 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x3EE9 JUMP JUMPDEST PUSH2 0x4354 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x4361 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x40FE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4373 DUP2 DUP5 PUSH2 0x429F JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4396 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4230 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x43A5 DUP2 PUSH2 0x40BD JUMP JUMPDEST DUP2 EQ PUSH2 0x43B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x43C2 DUP2 PUSH2 0x439C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x43D1 DUP2 PUSH2 0x40F4 JUMP JUMPDEST DUP2 EQ PUSH2 0x43DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x43EE DUP2 PUSH2 0x43C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4413 JUMPI PUSH2 0x4412 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4421 DUP11 DUP3 DUP12 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4432 DUP11 DUP3 DUP12 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4443 DUP11 DUP3 DUP12 ADD PUSH2 0x3E5E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4454 DUP11 DUP3 DUP12 ADD PUSH2 0x3E5E JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4465 DUP11 DUP3 DUP12 ADD PUSH2 0x43B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4476 DUP11 DUP3 DUP12 ADD PUSH2 0x43DF JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4487 DUP11 DUP3 DUP12 ADD PUSH2 0x43DF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44AD JUMPI PUSH2 0x44AC PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x44BB DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x44CC DUP6 DUP3 DUP7 ADD PUSH2 0x3E28 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x451D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4530 JUMPI PUSH2 0x452F PUSH2 0x44D6 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x546178657344656661756C74526F7574657257616C6C65743A2057616C6C6574 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x2074617820726563697069656E742063616E6E6F742062652061203078302061 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45B8 PUSH1 0x46 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x45C3 DUP3 PUSH2 0x4536 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x45E7 DUP2 PUSH2 0x45AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537761705468726573686F6C643A2043616E6E6F7420657863656564206C696D PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6974732066726F6D20302E30312520746F20352520666F72206E657720737761 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x70207468726573686F6C64000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4670 PUSH1 0x4B DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x467B DUP3 PUSH2 0x45EE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x469F DUP2 PUSH2 0x4663 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x44656661756C74526F757465723A2043616E6E6F742072656D6F766520696E69 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7469616C20706169722066726F6D206C69737400000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4702 PUSH1 0x33 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x470D DUP3 PUSH2 0x46A6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4731 DUP2 PUSH2 0x46F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4772 DUP3 PUSH2 0x3E3D JUMP JUMPDEST SWAP2 POP PUSH2 0x477D DUP4 PUSH2 0x3E3D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x4795 JUMPI PUSH2 0x4794 PUSH2 0x4738 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47D5 DUP3 PUSH2 0x3F6D JUMP JUMPDEST SWAP2 POP PUSH2 0x47E0 DUP4 PUSH2 0x3F6D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH2 0x47FA JUMPI PUSH2 0x47F9 PUSH2 0x4738 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x480B DUP3 PUSH2 0x3F6D JUMP JUMPDEST SWAP2 POP PUSH2 0x4816 DUP4 PUSH2 0x3F6D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH2 0x4830 JUMPI PUSH2 0x482F PUSH2 0x4738 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546178657344656661756C74526F757465723A2043616E6E6F74206578636565 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x64206D617820746F74616C20666565206F662032352500000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4892 PUSH1 0x36 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x489D DUP3 PUSH2 0x4836 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x48C1 DUP2 PUSH2 0x4885 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x48DD PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3F7B JUMP JUMPDEST PUSH2 0x48EA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3F7B JUMP JUMPDEST PUSH2 0x48F7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F7B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C6532537465703A2063616C6C6572206973206E6F742074686520 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E6577206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x495B PUSH1 0x29 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4966 DUP3 PUSH2 0x48FF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x498A DUP2 PUSH2 0x494E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x546F6B656E5265636F7665723A2043616E6E6F74207265636F76657220746869 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7320746F6B656E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A1C PUSH1 0x27 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4A27 DUP3 PUSH2 0x49C0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4A4B DUP2 PUSH2 0x4A0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4A67 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x4A74 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3EE9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4A8A DUP2 PUSH2 0x4051 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4AA6 JUMPI PUSH2 0x4AA5 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4AB4 DUP5 DUP3 DUP6 ADD PUSH2 0x4A7B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x456E61626C6554726164696E673A2054726164696E672077617320656E61626C PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x656420616C726561647900000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B19 PUSH1 0x2A DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4B24 DUP3 PUSH2 0x4ABD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4B48 DUP2 PUSH2 0x4B0C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BAB PUSH1 0x25 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4BB6 DUP3 PUSH2 0x4B4F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4BDA DUP2 PUSH2 0x4B9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D617857616C6C65743A204C696D697420746F6F206C6F770000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C17 PUSH1 0x18 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4C22 DUP3 PUSH2 0x4BE1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4C46 DUP2 PUSH2 0x4C0A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CA9 PUSH1 0x2E DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4CB4 DUP3 PUSH2 0x4C4D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4CD8 DUP2 PUSH2 0x4C9C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332305065726D69743A206578706972656420646561646C696E65000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D15 PUSH1 0x1D DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4D20 DUP3 PUSH2 0x4CDF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4D44 DUP2 PUSH2 0x4D08 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x4D60 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x4D6D PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x4D7A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x4D87 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3EE9 JUMP JUMPDEST PUSH2 0x4D94 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x3EE9 JUMP JUMPDEST PUSH2 0x4DA1 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x3EE9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x45524332305065726D69743A20696E76616C6964207369676E61747572650000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DE2 PUSH1 0x1E DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4DED DUP3 PUSH2 0x4DAC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4E11 DUP2 PUSH2 0x4DD5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E23 DUP3 PUSH2 0x3E3D JUMP JUMPDEST SWAP2 POP PUSH2 0x4E2E DUP4 PUSH2 0x3E3D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x4E3C DUP2 PUSH2 0x3E3D JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x4E53 JUMPI PUSH2 0x4E52 PUSH2 0x4738 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4E94 DUP3 PUSH2 0x3E3D JUMP JUMPDEST SWAP2 POP PUSH2 0x4E9F DUP4 PUSH2 0x3E3D JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4EAF JUMPI PUSH2 0x4EAE PUSH2 0x4E5A JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F16 PUSH1 0x24 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4F21 DUP3 PUSH2 0x4EBA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4F45 DUP2 PUSH2 0x4F09 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FA8 PUSH1 0x22 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x4FB3 DUP3 PUSH2 0x4F4C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4FD7 DUP2 PUSH2 0x4F9B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5014 PUSH1 0x20 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x501F DUP3 PUSH2 0x4FDE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5043 DUP2 PUSH2 0x5007 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5080 PUSH1 0x1D DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x508B DUP3 PUSH2 0x504A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x50AF DUP2 PUSH2 0x5073 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50C1 DUP3 PUSH2 0x3E3D JUMP JUMPDEST SWAP2 POP PUSH2 0x50CC DUP4 PUSH2 0x3E3D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x50E4 JUMPI PUSH2 0x50E3 PUSH2 0x4738 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5146 PUSH1 0x21 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x5151 DUP3 PUSH2 0x50EA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5175 DUP2 PUSH2 0x5139 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51D8 PUSH1 0x22 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x51E3 DUP3 PUSH2 0x517C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5207 DUP2 PUSH2 0x51CB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x521D DUP2 PUSH2 0x3E11 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5239 JUMPI PUSH2 0x5238 PUSH2 0x3DDA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x5247 DUP5 DUP3 DUP6 ADD PUSH2 0x520E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5265 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x5272 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4230 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52D5 PUSH1 0x25 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x52E0 DUP3 PUSH2 0x5279 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5304 DUP2 PUSH2 0x52C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5367 PUSH1 0x23 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x5372 DUP3 PUSH2 0x530B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5396 DUP2 PUSH2 0x535A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53F9 PUSH1 0x26 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x5404 DUP3 PUSH2 0x539D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5428 DUP2 PUSH2 0x53EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5454 PUSH2 0x544F PUSH2 0x544A DUP5 PUSH2 0x542F JUMP JUMPDEST PUSH2 0x417B JUMP JUMPDEST PUSH2 0x3E3D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5464 DUP2 PUSH2 0x5439 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x549F DUP2 PUSH2 0x3DFF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54B1 DUP4 DUP4 PUSH2 0x5496 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54D5 DUP3 PUSH2 0x546A JUMP JUMPDEST PUSH2 0x54DF DUP2 DUP6 PUSH2 0x5475 JUMP JUMPDEST SWAP4 POP PUSH2 0x54EA DUP4 PUSH2 0x5486 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x551B JUMPI DUP2 MLOAD PUSH2 0x5502 DUP9 DUP3 PUSH2 0x54A5 JUMP JUMPDEST SWAP8 POP PUSH2 0x550D DUP4 PUSH2 0x54BD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x54EE JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x553D PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x3EE9 JUMP JUMPDEST PUSH2 0x554A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x545B JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x555C DUP2 DUP7 PUSH2 0x54CA JUMP JUMPDEST SWAP1 POP PUSH2 0x556B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4230 JUMP JUMPDEST PUSH2 0x5578 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x3EE9 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5597 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x55A4 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x55B1 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x55BE PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3EE9 JUMP JUMPDEST PUSH2 0x55CB PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4230 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x456E61626C6554726164696E673A2054726164696E6720776173206E6F742065 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E61626C65642079657400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5631 PUSH1 0x2A DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x563C DUP3 PUSH2 0x55D5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5660 DUP2 PUSH2 0x5624 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D617857616C6C65743A2043616E6E6F7420657863656564206D61782077616C PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6574206C696D69740000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56C3 PUSH1 0x29 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x56CE DUP3 PUSH2 0x5667 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x56F2 DUP2 PUSH2 0x56B6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x570E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x571B PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x40CA JUMP JUMPDEST PUSH2 0x5728 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x40FE JUMP JUMPDEST PUSH2 0x5735 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x40FE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57A3 PUSH1 0x18 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x57AE DUP3 PUSH2 0x576D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x57D2 DUP2 PUSH2 0x5796 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x580F PUSH1 0x1F DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x581A DUP3 PUSH2 0x57D9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x583E DUP2 PUSH2 0x5802 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58A1 PUSH1 0x22 DUP4 PUSH2 0x3D33 JUMP JUMPDEST SWAP2 POP PUSH2 0x58AC DUP3 PUSH2 0x5845 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58D0 DUP2 PUSH2 0x5894 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 0xBD 0xB5 0xED 0xC6 DUP16 POP GAS 0x27 PUSH17 0x27E7DDC5C2B141849055E80EB18A0EA906 0xC9 0xB4 STATICCALL 0xCC KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ",
"sourceMap": "368:9569:2:-:0;;;1778:933;;;;;;;;;;1751:52:7;;;;;;;;;;;;;;;;;1790:4;3162:431:4;;;;;;;;;;;;;;;;;1959:113:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2033:5;2025;:13;;;;;;:::i;:::-;;2058:7;2048;:17;;;;;;:::i;:::-;;1959:113;;929:32:18;948:12;:10;;;:12;;:::i;:::-;929:18;;;:32;;:::i;:::-;3235:45:4;3266:13;3235:4;:30;;;;:45;;;;:::i;:::-;3227:53;;;;;;3301:51;3335:16;3301:7;:33;;;;:51;;;;:::i;:::-;3290:62;;;;;;3392:4;3376:22;;;;;;3362:36;;;;;;3441:7;3425:25;;;;;;3408:42;;;;;;3478:13;3461:30;;;;;;3526:23;:21;;;:23;;:::i;:::-;3501:48;;;;;;3581:4;3559:27;;;;;;;;;;3162:431;;1751:52:7;1895:23:2::2;1921:42;1895:68;;1982:23;2002:2;1982:19;;;:23;;:::i;:::-;2016:65;2038:42;2016:21;;;:65;;:::i;:::-;2091:31;2110:3;2115::::0;2120:1:::2;2091:18;;;:31;;:::i;:::-;2133:38;2149:15;2166:4;2133:15;;;:38;;:::i;:::-;2181:36;2205:4;2212;2181:15;;;:36;;:::i;:::-;2229:41;2248:15;2265:4;2229:18;;;:41;;:::i;:::-;2280:39;2307:4;2314;2280:18;;;:39;;:::i;:::-;2329:36;2356:1;2360:4;2329:18;;;:36;;:::i;:::-;2377:59;2433:2;2419:10;:8;;;:10;;:::i;:::-;2413:2;:16;;;;:::i;:::-;2399:10;:31;;;;:::i;:::-;:36;;;;:::i;:::-;2377:21;;;:59;;:::i;:::-;2447:52;2477:15;2494:4;2447:29;;;:52;;:::i;:::-;2509:50;2547:4;2554;2509:29;;;:50;;:::i;:::-;2570:62;2576:15;2629:2;2615:10;:8;;;:10;;:::i;:::-;2609:2;:16;;;;:::i;:::-;2593:12;:33;;;;:::i;:::-;:38;;;;:::i;:::-;2570:5;;;:62;;:::i;:::-;2642;2661:42;2642:18;;;:62;;:::i;:::-;1885:826;368:9569:::0;;640:96:0;693:7;719:10;712:17;;640:96;:::o;1501:153:19:-;1590:13;;1583:20;;;;;;;;;;;1613:34;1638:8;1613:24;;;:34;;:::i;:::-;1501:153;:::o;2895:341:20:-;2991:11;3040:2;3024:5;3018:19;:24;3014:216;;;3065:20;3079:5;3065:13;;;:20;;:::i;:::-;3058:27;;;;3014:216;3157:5;3116:32;3142:5;3116:25;;;:32;;:::i;:::-;:38;;:46;;;;;;:::i;:::-;;1371:66;3200:18;;3176:43;;2895:341;;;;;:::o;3947:180:4:-;4002:7;1913:95;4061:11;;4074:14;;4090:13;4113:4;4038:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4028:92;;;;;;4021:99;;3947:180;:::o;3458:347:2:-;1087:13:18;:11;;;:13;;:::i;:::-;3572:1:2::1;3550:19;:23;;;:53;;;;;3600:3;3577:19;:26;;;;3550:53;3542:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;3714:19;3693:18;;:40;;;;;;;;;;;;;;;;;;3757:41;3778:19;3757:41;;;;;;:::i;:::-;;;;;;;;3458:347:::0;:::o;4057:386::-;1087:13:18;:11;;;:13;;:::i;:::-;4167:1:2::1;4144:25;;:11;:25;;::::0;4136:108:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4282:11;4263:16;;:30;;;;;;;;;;;;;;;;;;4303:34;4319:11;4332:4;4303:15;;;:34;;:::i;:::-;4347:37;4366:11;4379:4;4347:18;;;:37;;:::i;:::-;4400:36;4424:11;4400:36;;;;;;:::i;:::-;;;;;;;;4057:386:::0;:::o;4449:584::-;1087:13:18;:11;;;:13;;:::i;:::-;4607:7:2::1;4588:13;4602:1;4588:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;4573:9;4583:1;4573:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:41;;;;:::i;:::-;4558:9;4568:1;4558:12;;;;;;;:::i;:::-;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;4673:8;4654:13;4668:1;4654:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;4639:9;4649:1;4639:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:42;;;;:::i;:::-;4624:9;4634:1;4624:12;;;;;;;:::i;:::-;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;4740:12;4721:13;4735:1;4721:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;4706:9;4716:1;4706:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:46;;;;:::i;:::-;4691:9;4701:1;4691:12;;;;;;;:::i;:::-;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;4786:4;4770:9;4780:1;4770:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:20;;;;:44;;;;;4810:4;4794:9;4804:1;4794:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:20;;;;4770:44;:68;;;;;4834:4;4818:9;4828:1;4818:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:20;;;;4770:68;4762:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;4908:49;;;;;;;;4925:7;4908:49;;;;;;;;4934:8;4908:49;;;;;;;;4944:12;4908:49;;;;;;::::0;:13:::1;:49;;;;;;;:::i;:::-;;4973:53;4994:7;5003:8;5013:12;4973:53;;;;;;;;:::i;:::-;;;;;;;;4449:584:::0;;;:::o;5039:193::-;1087:13:18;:11;;;:13;;:::i;:::-;5155:10:2::1;5125:18;:27;5144:7;5125:27;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;5205:7;5189:36;;;5214:10;5189:36;;;;;;:::i;:::-;;;;;;;;5039:193:::0;;:::o;8092:184::-;8205:10;8173:20;:29;8194:7;8173:29;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8249:7;8231:38;;;8258:10;8231:38;;;;;;:::i;:::-;;;;;;;;8092:184;;:::o;2987:83::-;3037:5;3061:2;3054:9;;2987:83;:::o;8282:277::-;1087:13:18;:11;;;:13;;:::i;:::-;8394:21:2::1;:19;;;:21;;:::i;:::-;8374:16;:41;;8366:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;8472:16;8454:15;:34;;;;8512:40;8535:16;8512:40;;;;;;:::i;:::-;;;;;;;;8282:277:::0;:::o;8885:235::-;1087:13:18;:11;;;:13;;:::i;:::-;9029:10:2::1;8985:32;:41;9018:7;8985:41;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;9093:7;9063:50;;;9102:10;9063:50;;;;;;:::i;:::-;;;;;;;;8885:235:::0;;:::o;8499:535:5:-;8601:1;8582:21;;:7;:21;;;8574:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8650:49;8679:1;8683:7;8692:6;8650:20;;;:49;;:::i;:::-;8726:6;8710:12;;:22;;;;;;;:::i;:::-;;;;;;;;8900:6;8878:9;:18;8888:7;8878:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;8952:7;8931:37;;8948:1;8931:37;;;8961:6;8931:37;;;;;;:::i;:::-;;;;;;;;8979:48;9007:1;9011:7;9020:6;8979:19;;;:48;;:::i;:::-;8499:535;;:::o;2419:187:18:-;2492:16;2511:6;;;;;;;;;;;2492:25;;2536:8;2527:6;;:17;;;;;;;;;;;;;;;;;;2590:8;2559:40;;2580:8;2559:40;;;;;;;;;;;;2482:124;2419:187;:::o;1689:286:20:-;1754:11;1777:17;1803:3;1777:30;;1835:2;1821:4;:11;:16;1817:72;;;1874:3;1860:18;;;;;;;;;;;:::i;:::-;;;;;;;;1817:72;1955:4;:11;1946:4;1938:13;;;:::i;:::-;1930:22;;:36;1922:45;;1898:70;;;1689:286;;;:::o;3310:202:22:-;3378:20;3486:10;3476:20;;3310:202;;;:::o;1352:130:18:-;1426:12;:10;;;:12;;:::i;:::-;1415:23;;:7;:5;;;:7;;:::i;:::-;:23;;;1407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1352:130::o;8565:106:2:-;8618:7;8660:4;8644:13;:11;;;:13;;:::i;:::-;:20;;;;:::i;:::-;8637:27;;8565:106;:::o;9126:482::-;9334:8;:14;9343:4;9334:14;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;9353:32;:36;9386:2;9353:36;;;;;;;;;;;;;;;;;;;;;;;;;9352:37;9334:55;9333:118;;;;9395:8;:12;9404:2;9395:12;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;9412:32;:38;9445:4;9412:38;;;;;;;;;;;;;;;;;;;;;;;;;9411:39;9395:55;9333:118;9329:218;;;9475:14;;;;;;;;;;;9467:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9329:218;9557:44;9584:4;9590:2;9594:6;9557:26;;;:44;;:::i;:::-;9126:482;;;:::o;9614:321::-;9738:20;:24;9759:2;9738:24;;;;;;;;;;;;;;;;;;;;;;;;;9733:142;;9803:15;;9786:13;9796:2;9786:9;;;:13;;:::i;:::-;:32;;9778:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9733:142;9885:43;9911:4;9917:2;9921:6;9885:25;;;:43;;:::i;:::-;9614:321;;;:::o;1194:85:18:-;1240:7;1266:6;;;;;;;;;;;1259:13;;1194:85;:::o;3234:106:5:-;3295:7;3321:12;;3314:19;;3234:106;:::o;12052:91::-;;;;:::o;3398:125::-;3472:7;3498:9;:18;3508:7;3498:18;;;;;;;;;;;;;;;;3491:25;;3398:125;;;:::o;12731:90::-;;;;:::o;368:9569:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:99:25:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;5234:180::-;5282:77;5279:1;5272:88;5379:4;5376:1;5369:15;5403:4;5400:1;5393:15;5420:102;5462:8;5509:5;5506:1;5502:13;5481:34;;5420:102;;;:::o;5528:848::-;5589:5;5596:4;5620:6;5611:15;;5644:5;5635:14;;5658:712;5679:1;5669:8;5666:15;5658:712;;;5774:4;5769:3;5765:14;5759:4;5756:24;5753:50;;;5783:18;;:::i;:::-;5753:50;5833:1;5823:8;5819:16;5816:451;;;6248:4;6241:5;6237:16;6228:25;;5816:451;6298:4;6292;6288:15;6280:23;;6328:32;6351:8;6328:32;:::i;:::-;6316:44;;5658:712;;;5528:848;;;;;;;:::o;6382:1073::-;6436:5;6627:8;6617:40;;6648:1;6639:10;;6650:5;;6617:40;6676:4;6666:36;;6693:1;6684:10;;6695:5;;6666:36;6762:4;6810:1;6805:27;;;;6846:1;6841:191;;;;6755:277;;6805:27;6823:1;6814:10;;6825:5;;;6841:191;6886:3;6876:8;6873:17;6870:43;;;6893:18;;:::i;:::-;6870:43;6942:8;6939:1;6935:16;6926:25;;6977:3;6970:5;6967:14;6964:40;;;6984:18;;:::i;:::-;6964:40;7017:5;;;6755:277;;7141:2;7131:8;7128:16;7122:3;7116:4;7113:13;7109:36;7091:2;7081:8;7078:16;7073:2;7067:4;7064:12;7060:35;7044:111;7041:246;;;7197:8;7191:4;7187:19;7178:28;;7232:3;7225:5;7222:14;7219:40;;;7239:18;;:::i;:::-;7219:40;7272:5;;7041:246;7312:42;7350:3;7340:8;7334:4;7331:1;7312:42;:::i;:::-;7297:57;;;;7386:4;7381:3;7377:14;7370:5;7367:25;7364:51;;;7395:18;;:::i;:::-;7364:51;7444:4;7437:5;7433:16;7424:25;;6382:1073;;;;;;:::o;7461:86::-;7496:7;7536:4;7529:5;7525:16;7514:27;;7461:86;;;:::o;7553:281::-;7611:5;7635:23;7653:4;7635:23;:::i;:::-;7627:31;;7679:25;7695:8;7679:25;:::i;:::-;7667:37;;7723:104;7760:66;7750:8;7744:4;7723:104;:::i;:::-;7714:113;;7553:281;;;;:::o;7840:410::-;7880:7;7903:20;7921:1;7903:20;:::i;:::-;7898:25;;7937:20;7955:1;7937:20;:::i;:::-;7932:25;;7992:1;7989;7985:9;8014:30;8032:11;8014:30;:::i;:::-;8003:41;;8193:1;8184:7;8180:15;8177:1;8174:22;8154:1;8147:9;8127:83;8104:139;;8223:18;;:::i;:::-;8104:139;7888:362;7840:410;;;;:::o;8256:180::-;8304:77;8301:1;8294:88;8401:4;8398:1;8391:15;8425:4;8422:1;8415:15;8442:185;8482:1;8499:20;8517:1;8499:20;:::i;:::-;8494:25;;8533:20;8551:1;8533:20;:::i;:::-;8528:25;;8572:1;8562:35;;8577:18;;:::i;:::-;8562:35;8619:1;8616;8612:9;8607:14;;8442:185;;;;:::o;8633:77::-;8670:7;8699:5;8688:16;;8633:77;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:::-;8927:24;8945:5;8927:24;:::i;:::-;8922:3;8915:37;8840:118;;:::o;8964:126::-;9001:7;9041:42;9034:5;9030:54;9019:65;;8964:126;;;:::o;9096:96::-;9133:7;9162:24;9180:5;9162:24;:::i;:::-;9151:35;;9096:96;;;:::o;9198:118::-;9285:24;9303:5;9285:24;:::i;:::-;9280:3;9273:37;9198:118;;:::o;9322:664::-;9527:4;9565:3;9554:9;9550:19;9542:27;;9579:71;9647:1;9636:9;9632:17;9623:6;9579:71;:::i;:::-;9660:72;9728:2;9717:9;9713:18;9704:6;9660:72;:::i;:::-;9742;9810:2;9799:9;9795:18;9786:6;9742:72;:::i;:::-;9824;9892:2;9881:9;9877:18;9868:6;9824:72;:::i;:::-;9906:73;9974:3;9963:9;9959:19;9950:6;9906:73;:::i;:::-;9322:664;;;;;;;;:::o;9992:169::-;10076:11;10110:6;10105:3;10098:19;10150:4;10145:3;10141:14;10126:29;;9992:169;;;;:::o;10167:299::-;10307:34;10303:1;10295:6;10291:14;10284:58;10376:34;10371:2;10363:6;10359:15;10352:59;10445:13;10440:2;10432:6;10428:15;10421:38;10167:299;:::o;10472:366::-;10614:3;10635:67;10699:2;10694:3;10635:67;:::i;:::-;10628:74;;10711:93;10800:3;10711:93;:::i;:::-;10829:2;10824:3;10820:12;10813:19;;10472:366;;;:::o;10844:419::-;11010:4;11048:2;11037:9;11033:18;11025:26;;11097:9;11091:4;11087:20;11083:1;11072:9;11068:17;11061:47;11125:131;11251:4;11125:131;:::i;:::-;11117:139;;10844:419;;;:::o;11269:89::-;11305:7;11345:6;11338:5;11334:18;11323:29;;11269:89;;;:::o;11364:115::-;11449:23;11466:5;11449:23;:::i;:::-;11444:3;11437:36;11364:115;;:::o;11485:218::-;11576:4;11614:2;11603:9;11599:18;11591:26;;11627:69;11693:1;11682:9;11678:17;11669:6;11627:69;:::i;:::-;11485:218;;;;:::o;11709:294::-;11849:34;11845:1;11837:6;11833:14;11826:58;11918:34;11913:2;11905:6;11901:15;11894:59;11987:8;11982:2;11974:6;11970:15;11963:33;11709:294;:::o;12009:366::-;12151:3;12172:67;12236:2;12231:3;12172:67;:::i;:::-;12165:74;;12248:93;12337:3;12248:93;:::i;:::-;12366:2;12361:3;12357:12;12350:19;;12009:366;;;:::o;12381:419::-;12547:4;12585:2;12574:9;12570:18;12562:26;;12634:9;12628:4;12624:20;12620:1;12609:9;12605:17;12598:47;12662:131;12788:4;12662:131;:::i;:::-;12654:139;;12381:419;;;:::o;12806:222::-;12899:4;12937:2;12926:9;12922:18;12914:26;;12950:71;13018:1;13007:9;13003:17;12994:6;12950:71;:::i;:::-;12806:222;;;;:::o;13034:180::-;13082:77;13079:1;13072:88;13179:4;13176:1;13169:15;13203:4;13200:1;13193:15;13220:196;13259:4;13279:19;13296:1;13279:19;:::i;:::-;13274:24;;13312:19;13329:1;13312:19;:::i;:::-;13307:24;;13355:1;13352;13348:9;13340:17;;13379:6;13373:4;13370:16;13367:42;;;13389:18;;:::i;:::-;13367:42;13220:196;;;;:::o;13422:193::-;13461:3;13480:19;13497:1;13480:19;:::i;:::-;13475:24;;13513:19;13530:1;13513:19;:::i;:::-;13508:24;;13555:1;13552;13548:9;13541:16;;13578:6;13573:3;13570:15;13567:41;;;13588:18;;:::i;:::-;13567:41;13422:193;;;;:::o;13621:241::-;13761:34;13757:1;13749:6;13745:14;13738:58;13830:24;13825:2;13817:6;13813:15;13806:49;13621:241;:::o;13868:366::-;14010:3;14031:67;14095:2;14090:3;14031:67;:::i;:::-;14024:74;;14107:93;14196:3;14107:93;:::i;:::-;14225:2;14220:3;14216:12;14209:19;;13868:366;;;:::o;14240:419::-;14406:4;14444:2;14433:9;14429:18;14421:26;;14493:9;14487:4;14483:20;14479:1;14468:9;14464:17;14457:47;14521:131;14647:4;14521:131;:::i;:::-;14513:139;;14240:419;;;:::o;14665:430::-;14808:4;14846:2;14835:9;14831:18;14823:26;;14859:69;14925:1;14914:9;14910:17;14901:6;14859:69;:::i;:::-;14938:70;15004:2;14993:9;14989:18;14980:6;14938:70;:::i;:::-;15018;15084:2;15073:9;15069:18;15060:6;15018:70;:::i;:::-;14665:430;;;;;;:::o;15101:90::-;15135:7;15178:5;15171:13;15164:21;15153:32;;15101:90;;;:::o;15197:109::-;15278:21;15293:5;15278:21;:::i;:::-;15273:3;15266:34;15197:109;;:::o;15312:210::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15450:65;15512:1;15501:9;15497:17;15488:6;15450:65;:::i;:::-;15312:210;;;;:::o;15528:174::-;15668:26;15664:1;15656:6;15652:14;15645:50;15528:174;:::o;15708:366::-;15850:3;15871:67;15935:2;15930:3;15871:67;:::i;:::-;15864:74;;15947:93;16036:3;15947:93;:::i;:::-;16065:2;16060:3;16056:12;16049:19;;15708:366;;;:::o;16080:419::-;16246:4;16284:2;16273:9;16269:18;16261:26;;16333:9;16327:4;16323:20;16319:1;16308:9;16304:17;16297:47;16361:131;16487:4;16361:131;:::i;:::-;16353:139;;16080:419;;;:::o;16505:222::-;16598:4;16636:2;16625:9;16621:18;16613:26;;16649:71;16717:1;16706:9;16702:17;16693:6;16649:71;:::i;:::-;16505:222;;;;:::o;16733:181::-;16873:33;16869:1;16861:6;16857:14;16850:57;16733:181;:::o;16920:366::-;17062:3;17083:67;17147:2;17142:3;17083:67;:::i;:::-;17076:74;;17159:93;17248:3;17159:93;:::i;:::-;17277:2;17272:3;17268:12;17261:19;;16920:366;;;:::o;17292:419::-;17458:4;17496:2;17485:9;17481:18;17473:26;;17545:9;17539:4;17535:20;17531:1;17520:9;17516:17;17509:47;17573:131;17699:4;17573:131;:::i;:::-;17565:139;;17292:419;;;:::o;17717:191::-;17757:3;17776:20;17794:1;17776:20;:::i;:::-;17771:25;;17810:20;17828:1;17810:20;:::i;:::-;17805:25;;17853:1;17850;17846:9;17839:16;;17874:3;17871:1;17868:10;17865:36;;;17881:18;;:::i;:::-;17865:36;17717:191;;;;:::o;17914:246::-;17995:1;18005:113;18019:6;18016:1;18013:13;18005:113;;;18104:1;18099:3;18095:11;18089:18;18085:1;18080:3;18076:11;18069:39;18041:2;18038:1;18034:10;18029:15;;18005:113;;;18152:1;18143:6;18138:3;18134:16;18127:27;17976:184;17914:246;;;:::o;18166:102::-;18207:6;18258:2;18254:7;18249:2;18242:5;18238:14;18234:28;18224:38;;18166:102;;;:::o;18274:377::-;18362:3;18390:39;18423:5;18390:39;:::i;:::-;18445:71;18509:6;18504:3;18445:71;:::i;:::-;18438:78;;18525:65;18583:6;18578:3;18571:4;18564:5;18560:16;18525:65;:::i;:::-;18615:29;18637:6;18615:29;:::i;:::-;18610:3;18606:39;18599:46;;18366:285;18274:377;;;;:::o;18657:313::-;18770:4;18808:2;18797:9;18793:18;18785:26;;18857:9;18851:4;18847:20;18843:1;18832:9;18828:17;18821:47;18885:78;18958:4;18949:6;18885:78;:::i;:::-;18877:86;;18657:313;;;;:::o;18976:98::-;19027:6;19061:5;19055:12;19045:22;;18976:98;;;:::o;19080:116::-;19131:4;19154:3;19146:11;;19184:4;19179:3;19175:14;19167:22;;19080:116;;;:::o;19202:154::-;19245:11;19281:29;19305:3;19299:10;19281:29;:::i;:::-;19344:5;19320:29;;19257:99;19202:154;;;:::o;19362:594::-;19446:5;19477:38;19509:5;19477:38;:::i;:::-;19540:5;19567:40;19601:5;19567:40;:::i;:::-;19555:52;;19626:35;19652:8;19626:35;:::i;:::-;19617:44;;19685:2;19677:6;19674:14;19671:278;;;19756:169;19841:66;19811:6;19807:2;19803:15;19800:1;19796:23;19756:169;:::i;:::-;19733:5;19712:227;19703:236;;19671:278;19452:504;;19362:594;;;:::o;19962:182::-;20102:34;20098:1;20090:6;20086:14;20079:58;19962:182;:::o;20150:366::-;20292:3;20313:67;20377:2;20372:3;20313:67;:::i;:::-;20306:74;;20389:93;20478:3;20389:93;:::i;:::-;20507:2;20502:3;20498:12;20491:19;;20150:366;;;:::o;20522:419::-;20688:4;20726:2;20715:9;20711:18;20703:26;;20775:9;20769:4;20765:20;20761:1;20750:9;20746:17;20739:47;20803:131;20929:4;20803:131;:::i;:::-;20795:139;;20522:419;;;:::o;20947:229::-;21087:34;21083:1;21075:6;21071:14;21064:58;21156:12;21151:2;21143:6;21139:15;21132:37;20947:229;:::o;21182:366::-;21324:3;21345:67;21409:2;21404:3;21345:67;:::i;:::-;21338:74;;21421:93;21510:3;21421:93;:::i;:::-;21539:2;21534:3;21530:12;21523:19;;21182:366;;;:::o;21554:419::-;21720:4;21758:2;21747:9;21743:18;21735:26;;21807:9;21801:4;21797:20;21793:1;21782:9;21778:17;21771:47;21835:131;21961:4;21835:131;:::i;:::-;21827:139;;21554:419;;;:::o;21979:228::-;22119:34;22115:1;22107:6;22103:14;22096:58;22188:11;22183:2;22175:6;22171:15;22164:36;21979:228;:::o;22213:366::-;22355:3;22376:67;22440:2;22435:3;22376:67;:::i;:::-;22369:74;;22452:93;22541:3;22452:93;:::i;:::-;22570:2;22565:3;22561:12;22554:19;;22213:366;;;:::o;22585:419::-;22751:4;22789:2;22778:9;22774:18;22766:26;;22838:9;22832:4;22828:20;22824:1;22813:9;22809:17;22802:47;22866:131;22992:4;22866:131;:::i;:::-;22858:139;;22585:419;;;:::o;368:9569:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@AMMPairs_148": {
"entryPoint": 5037,
"id": 148,
"parameterSlots": 0,
"returnSlots": 0
},
"@DOMAIN_SEPARATOR_2469": {
"entryPoint": 3762,
"id": 2469,
"parameterSlots": 0,
"returnSlots": 1
},
"@_337": {
"entryPoint": null,
"id": 337,
"parameterSlots": 0,
"returnSlots": 0
},
"@_afterTokenTransfer_1125": {
"entryPoint": 14220,
"id": 1125,
"parameterSlots": 3,
"returnSlots": 0
},
"@_afterTokenTransfer_2282": {
"entryPoint": 15385,
"id": 2282,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_2217": {
"entryPoint": 8004,
"id": 2217,
"parameterSlots": 3,
"returnSlots": 0
},
"@_beforeTokenTransfer_1091": {
"entryPoint": 13786,
"id": 1091,
"parameterSlots": 3,
"returnSlots": 0
},
"@_beforeTokenTransfer_2271": {
"entryPoint": 15380,
"id": 2271,
"parameterSlots": 3,
"returnSlots": 0
},
"@_buildDomainSeparator_1632": {
"entryPoint": 13636,
"id": 1632,
"parameterSlots": 0,
"returnSlots": 1
},
"@_burn_2172": {
"entryPoint": 10867,
"id": 2172,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkOwner_4331": {
"entryPoint": 8461,
"id": 4331,
"parameterSlots": 0,
"returnSlots": 0
},
"@_domainSeparatorV4_1611": {
"entryPoint": 10684,
"id": 1611,
"parameterSlots": 0,
"returnSlots": 1
},
"@_excludeFromLimits_971": {
"entryPoint": 8587,
"id": 971,
"parameterSlots": 2,
"returnSlots": 0
},
"@_hashTypedDataV4_1648": {
"entryPoint": 12358,
"id": 1648,
"parameterSlots": 1,
"returnSlots": 1
},
"@_maxWalletSafeLimit_1006": {
"entryPoint": 11567,
"id": 1006,
"parameterSlots": 0,
"returnSlots": 1
},
"@_msgSender_11": {
"entryPoint": 7996,
"id": 11,
"parameterSlots": 0,
"returnSlots": 1
},
"@_setAMMPair_937": {
"entryPoint": 10497,
"id": 937,
"parameterSlots": 2,
"returnSlots": 0
},
"@_spendAllowance_2260": {
"entryPoint": 8756,
"id": 2260,
"parameterSlots": 3,
"returnSlots": 0
},
"@_swapTokensForCoin_406": {
"entryPoint": 13057,
"id": 406,
"parameterSlots": 1,
"returnSlots": 0
},
"@_throwError_1180": {
"entryPoint": 15022,
"id": 1180,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transferOwnership_4388": {
"entryPoint": 14395,
"id": 4388,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transferOwnership_4449": {
"entryPoint": 11328,
"id": 4449,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_2043": {
"entryPoint": 12427,
"id": 2043,
"parameterSlots": 3,
"returnSlots": 0
},
"@_transfer_845": {
"entryPoint": 8896,
"id": 845,
"parameterSlots": 3,
"returnSlots": 0
},
"@_updateRouterV2_888": {
"entryPoint": 11595,
"id": 888,
"parameterSlots": 1,
"returnSlots": 0
},
"@_useNonce_2498": {
"entryPoint": 12264,
"id": 2498,
"parameterSlots": 1,
"returnSlots": 1
},
"@acceptOwnership_4471": {
"entryPoint": 5069,
"id": 4471,
"parameterSlots": 0,
"returnSlots": 0
},
"@allowance_1838": {
"entryPoint": 7592,
"id": 1838,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_1863": {
"entryPoint": 3001,
"id": 1863,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_1795": {
"entryPoint": 4945,
"id": 1795,
"parameterSlots": 1,
"returnSlots": 1
},
"@burnFrom_2326": {
"entryPoint": 5210,
"id": 2326,
"parameterSlots": 2,
"returnSlots": 0
},
"@burn_2305": {
"entryPoint": 3878,
"id": 2305,
"parameterSlots": 1,
"returnSlots": 0
},
"@byteLength_4589": {
"entryPoint": 15390,
"id": 4589,
"parameterSlots": 1,
"returnSlots": 1
},
"@current_39": {
"entryPoint": 11377,
"id": 39,
"parameterSlots": 1,
"returnSlots": 1
},
"@decimals_346": {
"entryPoint": 3753,
"id": 346,
"parameterSlots": 0,
"returnSlots": 1
},
"@decreaseAllowance_1966": {
"entryPoint": 6400,
"id": 1966,
"parameterSlots": 2,
"returnSlots": 1
},
"@developerAddressSetup_493": {
"entryPoint": 3046,
"id": 493,
"parameterSlots": 1,
"returnSlots": 0
},
"@developerAddress_125": {
"entryPoint": 7138,
"id": 125,
"parameterSlots": 0,
"returnSlots": 0
},
"@developerFeesSetup_581": {
"entryPoint": 3917,
"id": 581,
"parameterSlots": 3,
"returnSlots": 0
},
"@developerFees_129": {
"entryPoint": 3310,
"id": 129,
"parameterSlots": 0,
"returnSlots": 0
},
"@eip712Domain_1695": {
"entryPoint": 5499,
"id": 1695,
"parameterSlots": 0,
"returnSlots": 7
},
"@enableTrading_1025": {
"entryPoint": 6013,
"id": 1025,
"parameterSlots": 0,
"returnSlots": 0
},
"@excludeFromFees_602": {
"entryPoint": 6560,
"id": 602,
"parameterSlots": 2,
"returnSlots": 0
},
"@excludeFromLimits_952": {
"entryPoint": 6737,
"id": 952,
"parameterSlots": 2,
"returnSlots": 0
},
"@excludeFromTradingRestriction_1046": {
"entryPoint": 5322,
"id": 1046,
"parameterSlots": 2,
"returnSlots": 0
},
"@getAllPending_457": {
"entryPoint": 7801,
"id": 457,
"parameterSlots": 0,
"returnSlots": 1
},
"@getSwapThresholdAmount_447": {
"entryPoint": 7498,
"id": 447,
"parameterSlots": 0,
"returnSlots": 1
},
"@increaseAllowance_1925": {
"entryPoint": 3777,
"id": 1925,
"parameterSlots": 2,
"returnSlots": 1
},
"@increment_53": {
"entryPoint": 14709,
"id": 53,
"parameterSlots": 1,
"returnSlots": 0
},
"@initialize_333": {
"entryPoint": 6906,
"id": 333,
"parameterSlots": 1,
"returnSlots": 0
},
"@isExcludedFromFees_133": {
"entryPoint": 4843,
"id": 133,
"parameterSlots": 0,
"returnSlots": 0
},
"@isExcludedFromLimits_152": {
"entryPoint": 4913,
"id": 152,
"parameterSlots": 0,
"returnSlots": 0
},
"@isExcludedFromTradingRestriction_160": {
"entryPoint": 7769,
"id": 160,
"parameterSlots": 0,
"returnSlots": 0
},
"@maxWalletAmount_154": {
"entryPoint": 6554,
"id": 154,
"parameterSlots": 0,
"returnSlots": 0
},
"@name_1751": {
"entryPoint": 2855,
"id": 1751,
"parameterSlots": 0,
"returnSlots": 1
},
"@nonces_2458": {
"entryPoint": 5242,
"id": 2458,
"parameterSlots": 1,
"returnSlots": 1
},
"@owner_4317": {
"entryPoint": 6174,
"id": 4317,
"parameterSlots": 0,
"returnSlots": 1
},
"@pairV2_144": {
"entryPoint": 6216,
"id": 144,
"parameterSlots": 0,
"returnSlots": 0
},
"@pendingOwner_4412": {
"entryPoint": 7727,
"id": 4412,
"parameterSlots": 0,
"returnSlots": 1
},
"@permit_2442": {
"entryPoint": 7176,
"id": 2442,
"parameterSlots": 7,
"returnSlots": 0
},
"@recoverERC20_5167": {
"entryPoint": 5757,
"id": 5167,
"parameterSlots": 2,
"returnSlots": 0
},
"@recover_1427": {
"entryPoint": 12384,
"id": 1427,
"parameterSlots": 4,
"returnSlots": 1
},
"@renounceOwnership_4345": {
"entryPoint": 5017,
"id": 4345,
"parameterSlots": 0,
"returnSlots": 0
},
"@routerV2_142": {
"entryPoint": 4875,
"id": 142,
"parameterSlots": 0,
"returnSlots": 0
},
"@setAMMPair_910": {
"entryPoint": 3587,
"id": 910,
"parameterSlots": 2,
"returnSlots": 0
},
"@swapThresholdRatio_121": {
"entryPoint": 4823,
"id": 121,
"parameterSlots": 0,
"returnSlots": 0
},
"@symbol_1761": {
"entryPoint": 6254,
"id": 1761,
"parameterSlots": 0,
"returnSlots": 1
},
"@toStringWithFallback_4656": {
"entryPoint": 11391,
"id": 4656,
"parameterSlots": 2,
"returnSlots": 1
},
"@toString_4557": {
"entryPoint": 14593,
"id": 4557,
"parameterSlots": 1,
"returnSlots": 1
},
"@toTypedDataHash_1471": {
"entryPoint": 14731,
"id": 1471,
"parameterSlots": 2,
"returnSlots": 1
},
"@totalFees_137": {
"entryPoint": 3832,
"id": 137,
"parameterSlots": 0,
"returnSlots": 0
},
"@totalSupply_1781": {
"entryPoint": 3036,
"id": 1781,
"parameterSlots": 0,
"returnSlots": 1
},
"@tradingEnabled_156": {
"entryPoint": 3898,
"id": 156,
"parameterSlots": 0,
"returnSlots": 0
},
"@transferFrom_1896": {
"entryPoint": 3540,
"id": 1896,
"parameterSlots": 3,
"returnSlots": 1
},
"@transferOwnership_4432": {
"entryPoint": 7823,
"id": 4432,
"parameterSlots": 1,
"returnSlots": 0
},
"@transfer_1820": {
"entryPoint": 6519,
"id": 1820,
"parameterSlots": 2,
"returnSlots": 1
},
"@tryRecover_1394": {
"entryPoint": 14796,
"id": 1394,
"parameterSlots": 4,
"returnSlots": 2
},
"@updateMaxWalletAmount_995": {
"entryPoint": 6759,
"id": 995,
"parameterSlots": 1,
"returnSlots": 0
},
"@updateSwapThreshold_433": {
"entryPoint": 3356,
"id": 433,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address": {
"entryPoint": 15912,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 21006,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool": {
"entryPoint": 16488,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 19067,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 17375,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint16": {
"entryPoint": 16316,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 15966,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint8": {
"entryPoint": 17331,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 16147,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 21027,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 17558,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 16382,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
"entryPoint": 17396,
"id": null,
"parameterSlots": 2,
"returnSlots": 7
},
"abi_decode_tuple_t_addresst_bool": {
"entryPoint": 16509,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 15987,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 19088,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint16": {
"entryPoint": 16337,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint16t_uint16t_uint16": {
"entryPoint": 16680,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 16192,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encodeUpdatedPos_t_address_to_t_address": {
"entryPoint": 21669,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encodeUpdatedPos_t_uint256_to_t_uint256": {
"entryPoint": 17018,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address": {
"entryPoint": 21654,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 16944,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack": {
"entryPoint": 21706,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 17055,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 16063,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes1_to_t_bytes1_fromStack": {
"entryPoint": 16929,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 16638,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_IUniswapV2Router02_$3364_to_t_address_fromStack": {
"entryPoint": 16843,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": {
"entryPoint": 21595,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 15743,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack": {
"entryPoint": 22422,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack": {
"entryPoint": 21338,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20939,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack": {
"entryPoint": 22530,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack": {
"entryPoint": 18766,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20379,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20595,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19720,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack": {
"entryPoint": 21484,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_507d4d4f063df47084abc92c1bcf60afb379d9fa7a7ff70b450ddd49aadbe391_to_t_string_memory_ptr_fromStack": {
"entryPoint": 18165,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_51940b7c2cb14dd1fb90a517cb0bf11d35c18a6b3ac44f5da488ffbc37e15ae7_to_t_string_memory_ptr_fromStack": {
"entryPoint": 18959,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 22676,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 18019,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19612,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19466,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19925,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20487,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20793,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5_to_t_string_memory_ptr_fromStack": {
"entryPoint": 22052,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b8a0cf2963d1b85e9c32a7e30a3e3446c8e7972abeac0c27ce2da1e30e063d1d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19212,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack": {
"entryPoint": 21192,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706_to_t_string_memory_ptr_fromStack": {
"entryPoint": 17835,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 22198,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack": {
"entryPoint": 20233,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack": {
"entryPoint": 19358,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31_to_t_string_memory_ptr_fromStack": {
"entryPoint": 18565,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint16_to_t_uint16_fromStack": {
"entryPoint": 16251,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256": {
"entryPoint": 17003,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 16105,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint8_to_t_uint8_fromStack": {
"entryPoint": 16586,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 17281,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
"entryPoint": 21072,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 19026,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 16078,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 17149,
"id": null,
"parameterSlots": 8,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 16653,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 19787,
"id": null,
"parameterSlots": 7,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
"entryPoint": 21890,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
"entryPoint": 22265,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IUniswapV2Router02_$3364__to_t_address__fromStack_reversed": {
"entryPoint": 16858,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15800,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 22457,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 21373,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20974,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 22565,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 18801,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20414,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20630,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19755,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 21519,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_507d4d4f063df47084abc92c1bcf60afb379d9fa7a7ff70b450ddd49aadbe391__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 18200,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_51940b7c2cb14dd1fb90a517cb0bf11d35c18a6b3ac44f5da488ffbc37e15ae7__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 18994,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 22711,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 18054,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19647,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19501,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19960,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20522,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20828,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 22087,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b8a0cf2963d1b85e9c32a7e30a3e3446c8e7972abeac0c27ce2da1e30e063d1d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19247,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 21227,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 17870,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 22233,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 20268,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 19393,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 18600,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
"entryPoint": 16266,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed": {
"entryPoint": 18632,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 16120,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 21800,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": 16601,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 21638,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 16987,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 21610,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 16959,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 15656,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 21693,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 17042,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack": {
"entryPoint": 21621,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 16970,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 15667,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint16": {
"entryPoint": 18432,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 18279,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 20105,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 19992,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint16": {
"entryPoint": 18378,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 20662,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 15871,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 16051,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes1": {
"entryPoint": 16885,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 16628,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_rational_0_by_1": {
"entryPoint": 21551,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint16": {
"entryPoint": 16237,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 15839,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 15933,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 16573,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_IUniswapV2Router02_$3364_to_t_address": {
"entryPoint": 16825,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_rational_0_by_1_to_t_uint256": {
"entryPoint": 21561,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_address": {
"entryPoint": 16807,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_uint160": {
"entryPoint": 16773,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 15684,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 17669,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"identity": {
"entryPoint": 16763,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 18232,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 20058,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x21": {
"entryPoint": 22334,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 17622,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 18331,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 18833,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 15834,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 15726,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be": {
"entryPoint": 22381,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f": {
"entryPoint": 21259,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd": {
"entryPoint": 20860,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77": {
"entryPoint": 22489,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc": {
"entryPoint": 18687,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029": {
"entryPoint": 20300,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe": {
"entryPoint": 20554,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_3e89525a63fb9c966b61cf8f5305156de8420bc773a2b60828a2f32c3c5797bd": {
"entryPoint": 19679,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6": {
"entryPoint": 21405,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_507d4d4f063df47084abc92c1bcf60afb379d9fa7a7ff70b450ddd49aadbe391": {
"entryPoint": 18086,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_51940b7c2cb14dd1fb90a517cb0bf11d35c18a6b3ac44f5da488ffbc37e15ae7": {
"entryPoint": 18880,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd": {
"entryPoint": 22597,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5d854a62f5ae14d990b4a89933c50e6d3e19b3d72b58f92df11ca56ffb6d887e": {
"entryPoint": 17902,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759": {
"entryPoint": 19533,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7be588676b581ae056ce2445212d7700edb927feffcb9f015a664cba7728ee62": {
"entryPoint": 19425,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_94ca1ab58dfda790a1782ffbb0c0a140ec51d4148dbeecc6c39e37b25ff4b124": {
"entryPoint": 19884,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": {
"entryPoint": 20446,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f": {
"entryPoint": 20714,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b4e35d39671a2526490fa24565f0d53d81fb6a7f01c3cc004c2131133765ece5": {
"entryPoint": 21973,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b8a0cf2963d1b85e9c32a7e30a3e3446c8e7972abeac0c27ce2da1e30e063d1d": {
"entryPoint": 19133,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea": {
"entryPoint": 21113,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_bdf71e9eb0b8fdfc1bb8827a132241cecebf598b9e3101b58a0c5ab8f1883706": {
"entryPoint": 17718,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_bfbe92df8da1279768253fbf87c0a476f2a3f499b8fe53d633a263b829b7e7bd": {
"entryPoint": 22119,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208": {
"entryPoint": 20154,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8": {
"entryPoint": 19279,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fc8d3ce60e5e9b9a70f8d350a97e4b5052ca35956b660876a58265ea13139b31": {
"entryPoint": 18486,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 15889,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 16465,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 17352,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint16": {
"entryPoint": 16293,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 15943,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint8": {
"entryPoint": 17308,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:51448:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "66:40:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "93:5:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "87:5:25"
},
"nodeType": "YulFunctionCall",
"src": "87:12:25"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "77:6:25"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "49:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "59:6:25",
"type": ""
}
],
"src": "7:99:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "208:73:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "225:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "230:6:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "218:6:25"
},
"nodeType": "YulFunctionCall",
"src": "218:19:25"
},
"nodeType": "YulExpressionStatement",
"src": "218:19:25"
},
{
"nodeType": "YulAssignment",
"src": "246:29:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "265:3:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "261:3:25"
},
"nodeType": "YulFunctionCall",
"src": "261:14:25"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "246:11:25"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "180:3:25",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "185:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "196:11:25",
"type": ""
}
],
"src": "112:169:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "349:184:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "359:10:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "368:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "363:1:25",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "428:63:25",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "453:3:25"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "458:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "449:3:25"
},
"nodeType": "YulFunctionCall",
"src": "449:11:25"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "472:3:25"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "477:1:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "468:3:25"
},
"nodeType": "YulFunctionCall",
"src": "468:11:25"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "462:5:25"
},
"nodeType": "YulFunctionCall",
"src": "462:18:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "442:6:25"
},
"nodeType": "YulFunctionCall",
"src": "442:39:25"
},
"nodeType": "YulExpressionStatement",
"src": "442:39:25"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "389:1:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "392:6:25"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "386:2:25"
},
"nodeType": "YulFunctionCall",
"src": "386:13:25"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "400:19:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "402:15:25",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "411:1:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "414:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "407:3:25"
},
"nodeType": "YulFunctionCall",
"src": "407:10:25"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "402:1:25"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "382:3:25",
"statements": []
},
"src": "378:113:25"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "511:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "516:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "507:3:25"
},
"nodeType": "YulFunctionCall",
"src": "507:16:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "525:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "500:6:25"
},
"nodeType": "YulFunctionCall",
"src": "500:27:25"
},
"nodeType": "YulExpressionStatement",
"src": "500:27:25"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "331:3:25",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "336:3:25",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "341:6:25",
"type": ""
}
],
"src": "287:246:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "587:54:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "597:38:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "615:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "622:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "611:3:25"
},
"nodeType": "YulFunctionCall",
"src": "611:14:25"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "631:2:25",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "627:3:25"
},
"nodeType": "YulFunctionCall",
"src": "627:7:25"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "607:3:25"
},
"nodeType": "YulFunctionCall",
"src": "607:28:25"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "597:6:25"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "570:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "580:6:25",
"type": ""
}
],
"src": "539:102:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "739:285:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "749:53:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "796:5:25"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "763:32:25"
},
"nodeType": "YulFunctionCall",
"src": "763:39:25"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "753:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "811:78:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "877:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "882:6:25"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "818:58:25"
},
"nodeType": "YulFunctionCall",
"src": "818:71:25"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "811:3:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "937:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "944:4:25",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "933:3:25"
},
"nodeType": "YulFunctionCall",
"src": "933:16:25"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "951:3:25"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "956:6:25"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "898:34:25"
},
"nodeType": "YulFunctionCall",
"src": "898:65:25"
},
"nodeType": "YulExpressionStatement",
"src": "898:65:25"
},
{
"nodeType": "YulAssignment",
"src": "972:46:25",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "983:3:25"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1010:6:25"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "988:21:25"
},
"nodeType": "YulFunctionCall",
"src": "988:29:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "979:3:25"
},
"nodeType": "YulFunctionCall",
"src": "979:39:25"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "972:3:25"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "720:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "727:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "735:3:25",
"type": ""
}
],
"src": "647:377:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1148:195:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1158:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1170:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1181:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1166:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1166:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1158:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1205:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1216:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1201:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1201:17:25"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1224:4:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1230:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1220:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1220:20:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:25"
},
"nodeType": "YulFunctionCall",
"src": "1194:47:25"
},
"nodeType": "YulExpressionStatement",
"src": "1194:47:25"
},
{
"nodeType": "YulAssignment",
"src": "1250:86:25",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1322:6:25"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1331:4:25"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1258:63:25"
},
"nodeType": "YulFunctionCall",
"src": "1258:78:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1250:4:25"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1120:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1132:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1143:4:25",
"type": ""
}
],
"src": "1030:313:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1389:35:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1399:19:25",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1415:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1409:5:25"
},
"nodeType": "YulFunctionCall",
"src": "1409:9:25"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1399:6:25"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1382:6:25",
"type": ""
}
],
"src": "1349:75:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1519:28:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1536:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1539:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1529:6:25"
},
"nodeType": "YulFunctionCall",
"src": "1529:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "1529:12:25"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1430:117:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1642:28:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1659:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1662:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1652:6:25"
},
"nodeType": "YulFunctionCall",
"src": "1652:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "1652:12:25"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1553:117:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1721:81:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1731:65:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1746:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1753:42:25",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1742:3:25"
},
"nodeType": "YulFunctionCall",
"src": "1742:54:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1731:7:25"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1703:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1713:7:25",
"type": ""
}
],
"src": "1676:126:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1853:51:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1863:35:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1892:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1874:17:25"
},
"nodeType": "YulFunctionCall",
"src": "1874:24:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1863:7:25"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1835:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1845:7:25",
"type": ""
}
],
"src": "1808:96:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1953:79:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2010:16:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2019:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2022:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2012:6:25"
},
"nodeType": "YulFunctionCall",
"src": "2012:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "2012:12:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1976:5:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2001:5:25"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1983:17:25"
},
"nodeType": "YulFunctionCall",
"src": "1983:24:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1973:2:25"
},
"nodeType": "YulFunctionCall",
"src": "1973:35:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1966:6:25"
},
"nodeType": "YulFunctionCall",
"src": "1966:43:25"
},
"nodeType": "YulIf",
"src": "1963:63:25"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1946:5:25",
"type": ""
}
],
"src": "1910:122:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2090:87:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2100:29:25",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2122:6:25"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2109:12:25"
},
"nodeType": "YulFunctionCall",
"src": "2109:20:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2100:5:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2165:5:25"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2138:26:25"
},
"nodeType": "YulFunctionCall",
"src": "2138:33:25"
},
"nodeType": "YulExpressionStatement",
"src": "2138:33:25"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2068:6:25",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2076:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2084:5:25",
"type": ""
}
],
"src": "2038:139:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2228:32:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2238:16:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2249:5:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2238:7:25"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2210:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2220:7:25",
"type": ""
}
],
"src": "2183:77:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2309:79:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2366:16:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2375:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2378:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2368:6:25"
},
"nodeType": "YulFunctionCall",
"src": "2368:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "2368:12:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2332:5:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2357:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2339:17:25"
},
"nodeType": "YulFunctionCall",
"src": "2339:24:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2329:2:25"
},
"nodeType": "YulFunctionCall",
"src": "2329:35:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2322:6:25"
},
"nodeType": "YulFunctionCall",
"src": "2322:43:25"
},
"nodeType": "YulIf",
"src": "2319:63:25"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2302:5:25",
"type": ""
}
],
"src": "2266:122:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2446:87:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2456:29:25",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2478:6:25"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2465:12:25"
},
"nodeType": "YulFunctionCall",
"src": "2465:20:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2456:5:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2521:5:25"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2494:26:25"
},
"nodeType": "YulFunctionCall",
"src": "2494:33:25"
},
"nodeType": "YulExpressionStatement",
"src": "2494:33:25"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2424:6:25",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2432:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2440:5:25",
"type": ""
}
],
"src": "2394:139:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2622:391:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2668:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2670:77:25"
},
"nodeType": "YulFunctionCall",
"src": "2670:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "2670:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2643:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2652:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2639:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2639:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2664:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2635:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2635:32:25"
},
"nodeType": "YulIf",
"src": "2632:119:25"
},
{
"nodeType": "YulBlock",
"src": "2761:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2776:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2790:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2780:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2805:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2840:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2851:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2836:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2836:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2860:7:25"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2815:20:25"
},
"nodeType": "YulFunctionCall",
"src": "2815:53:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2805:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2888:118:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2903:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2917:2:25",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2907:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2933:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2968:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2979:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2964:3:25"
},
"nodeType": "YulFunctionCall",
"src": "2964:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2988:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2943:20:25"
},
"nodeType": "YulFunctionCall",
"src": "2943:53:25"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2933:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2584:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2595:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2607:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2615:6:25",
"type": ""
}
],
"src": "2539:474:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3061:48:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3071:32:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3096:5:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3089:6:25"
},
"nodeType": "YulFunctionCall",
"src": "3089:13:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3082:6:25"
},
"nodeType": "YulFunctionCall",
"src": "3082:21:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3071:7:25"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3043:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3053:7:25",
"type": ""
}
],
"src": "3019:90:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3174:50:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3191:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3211:5:25"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "3196:14:25"
},
"nodeType": "YulFunctionCall",
"src": "3196:21:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3184:6:25"
},
"nodeType": "YulFunctionCall",
"src": "3184:34:25"
},
"nodeType": "YulExpressionStatement",
"src": "3184:34:25"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3162:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3169:3:25",
"type": ""
}
],
"src": "3115:109:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3322:118:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3332:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3344:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3355:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3340:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3340:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3332:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3406:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3419:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3430:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3415:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3415:17:25"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "3368:37:25"
},
"nodeType": "YulFunctionCall",
"src": "3368:65:25"
},
"nodeType": "YulExpressionStatement",
"src": "3368:65:25"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3294:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3306:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3317:4:25",
"type": ""
}
],
"src": "3230:210:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3511:53:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3528:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3551:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3533:17:25"
},
"nodeType": "YulFunctionCall",
"src": "3533:24:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3521:6:25"
},
"nodeType": "YulFunctionCall",
"src": "3521:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "3521:37:25"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3499:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3506:3:25",
"type": ""
}
],
"src": "3446:118:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3668:124:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3678:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3690:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3701:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3686:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3686:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3678:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3758:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3771:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3782:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3767:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3767:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "3714:43:25"
},
"nodeType": "YulFunctionCall",
"src": "3714:71:25"
},
"nodeType": "YulExpressionStatement",
"src": "3714:71:25"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3640:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3652:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3663:4:25",
"type": ""
}
],
"src": "3570:222:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3864:263:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3910:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3912:77:25"
},
"nodeType": "YulFunctionCall",
"src": "3912:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "3912:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3885:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3894:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3881:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3881:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3906:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3877:3:25"
},
"nodeType": "YulFunctionCall",
"src": "3877:32:25"
},
"nodeType": "YulIf",
"src": "3874:119:25"
},
{
"nodeType": "YulBlock",
"src": "4003:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4018:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4032:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4022:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4047:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4082:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4093:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4078:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4078:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4102:7:25"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4057:20:25"
},
"nodeType": "YulFunctionCall",
"src": "4057:53:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4047:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3834:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3845:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3857:6:25",
"type": ""
}
],
"src": "3798:329:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4199:263:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4245:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4247:77:25"
},
"nodeType": "YulFunctionCall",
"src": "4247:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "4247:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4220:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4229:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4216:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4216:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4241:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4212:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4212:32:25"
},
"nodeType": "YulIf",
"src": "4209:119:25"
},
{
"nodeType": "YulBlock",
"src": "4338:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4353:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4367:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4357:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4382:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4417:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4428:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4413:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4413:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4437:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4392:20:25"
},
"nodeType": "YulFunctionCall",
"src": "4392:53:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4382:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4169:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4180:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4192:6:25",
"type": ""
}
],
"src": "4133:329:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4512:45:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4522:29:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4537:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4544:6:25",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4533:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4533:18:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4522:7:25"
}
]
}
]
},
"name": "cleanup_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4494:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4504:7:25",
"type": ""
}
],
"src": "4468:89:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4626:52:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4643:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4665:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "4648:16:25"
},
"nodeType": "YulFunctionCall",
"src": "4648:23:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4636:6:25"
},
"nodeType": "YulFunctionCall",
"src": "4636:36:25"
},
"nodeType": "YulExpressionStatement",
"src": "4636:36:25"
}
]
},
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4614:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4621:3:25",
"type": ""
}
],
"src": "4563:115:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4780:122:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4790:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4802:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4813:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4798:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4798:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4790:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4868:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4881:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4892:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4877:3:25"
},
"nodeType": "YulFunctionCall",
"src": "4877:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "4826:41:25"
},
"nodeType": "YulFunctionCall",
"src": "4826:69:25"
},
"nodeType": "YulExpressionStatement",
"src": "4826:69:25"
}
]
},
"name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4752:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4764:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4775:4:25",
"type": ""
}
],
"src": "4684:218:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4950:78:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5006:16:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5015:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5018:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5008:6:25"
},
"nodeType": "YulFunctionCall",
"src": "5008:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "5008:12:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4973:5:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4997:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "4980:16:25"
},
"nodeType": "YulFunctionCall",
"src": "4980:23:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4970:2:25"
},
"nodeType": "YulFunctionCall",
"src": "4970:34:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4963:6:25"
},
"nodeType": "YulFunctionCall",
"src": "4963:42:25"
},
"nodeType": "YulIf",
"src": "4960:62:25"
}
]
},
"name": "validator_revert_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4943:5:25",
"type": ""
}
],
"src": "4908:120:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5085:86:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5095:29:25",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5117:6:25"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5104:12:25"
},
"nodeType": "YulFunctionCall",
"src": "5104:20:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5095:5:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5159:5:25"
}
],
"functionName": {
"name": "validator_revert_t_uint16",
"nodeType": "YulIdentifier",
"src": "5133:25:25"
},
"nodeType": "YulFunctionCall",
"src": "5133:32:25"
},
"nodeType": "YulExpressionStatement",
"src": "5133:32:25"
}
]
},
"name": "abi_decode_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5063:6:25",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5071:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5079:5:25",
"type": ""
}
],
"src": "5034:137:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5242:262:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5288:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5290:77:25"
},
"nodeType": "YulFunctionCall",
"src": "5290:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "5290:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5263:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5272:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5259:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5259:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5284:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5255:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5255:32:25"
},
"nodeType": "YulIf",
"src": "5252:119:25"
},
{
"nodeType": "YulBlock",
"src": "5381:116:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5396:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5410:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5400:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5425:62:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5459:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5470:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5455:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5455:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5479:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint16",
"nodeType": "YulIdentifier",
"src": "5435:19:25"
},
"nodeType": "YulFunctionCall",
"src": "5435:52:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5425:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5212:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5223:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5235:6:25",
"type": ""
}
],
"src": "5177:327:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5610:519:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5656:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5658:77:25"
},
"nodeType": "YulFunctionCall",
"src": "5658:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "5658:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5631:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5640:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5627:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5627:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5652:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5623:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5623:32:25"
},
"nodeType": "YulIf",
"src": "5620:119:25"
},
{
"nodeType": "YulBlock",
"src": "5749:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5764:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5778:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5768:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5793:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5828:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5839:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5824:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5824:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5848:7:25"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5803:20:25"
},
"nodeType": "YulFunctionCall",
"src": "5803:53:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5793:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5876:118:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5891:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5905:2:25",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5895:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5921:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5956:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5967:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5952:3:25"
},
"nodeType": "YulFunctionCall",
"src": "5952:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5976:7:25"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5931:20:25"
},
"nodeType": "YulFunctionCall",
"src": "5931:53:25"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5921:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6004:118:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6019:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6033:2:25",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6023:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6049:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6084:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6095:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6080:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6080:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6104:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6059:20:25"
},
"nodeType": "YulFunctionCall",
"src": "6059:53:25"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6049:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5564:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5575:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5587:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5595:6:25",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5603:6:25",
"type": ""
}
],
"src": "5510:619:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6175:76:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6229:16:25",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6238:1:25",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6241:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6231:6:25"
},
"nodeType": "YulFunctionCall",
"src": "6231:12:25"
},
"nodeType": "YulExpressionStatement",
"src": "6231:12:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6198:5:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6220:5:25"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "6205:14:25"
},
"nodeType": "YulFunctionCall",
"src": "6205:21:25"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6195:2:25"
},
"nodeType": "YulFunctionCall",
"src": "6195:32:25"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6188:6:25"
},
"nodeType": "YulFunctionCall",
"src": "6188:40:25"
},
"nodeType": "YulIf",
"src": "6185:60:25"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6168:5:25",
"type": ""
}
],
"src": "6135:116:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6306:84:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6316:29:25",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6338:6:25"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "6325:12:25"
},
"nodeType": "YulFunctionCall",
"src": "6325:20:25"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6316:5:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6378:5:25"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "6354:23:25"
},
"nodeType": "YulFunctionCall",
"src": "6354:30:25"
},
"nodeType": "YulExpressionStatement",
"src": "6354:30:25"
}
]
},
"name": "abi_decode_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6284:6:25",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6292:3:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6300:5:25",
"type": ""
}
],
"src": "6257:133:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6476:388:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6522:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "6524:77:25"
},
"nodeType": "YulFunctionCall",
"src": "6524:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "6524:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6497:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6506:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6493:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6493:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6518:2:25",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6489:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6489:32:25"
},
"nodeType": "YulIf",
"src": "6486:119:25"
},
{
"nodeType": "YulBlock",
"src": "6615:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6630:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6644:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6634:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6659:63:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6694:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6705:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6690:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6690:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6714:7:25"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6669:20:25"
},
"nodeType": "YulFunctionCall",
"src": "6669:53:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6659:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6742:115:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6757:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6771:2:25",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6761:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6787:60:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6819:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6830:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6815:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6815:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6839:7:25"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "6797:17:25"
},
"nodeType": "YulFunctionCall",
"src": "6797:50:25"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6787:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6438:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6449:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6461:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6469:6:25",
"type": ""
}
],
"src": "6396:468:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6913:43:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6923:27:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6938:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6945:4:25",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6934:3:25"
},
"nodeType": "YulFunctionCall",
"src": "6934:16:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6923:7:25"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6895:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6905:7:25",
"type": ""
}
],
"src": "6870:86:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7023:51:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7040:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7061:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "7045:15:25"
},
"nodeType": "YulFunctionCall",
"src": "7045:22:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7033:6:25"
},
"nodeType": "YulFunctionCall",
"src": "7033:35:25"
},
"nodeType": "YulExpressionStatement",
"src": "7033:35:25"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7011:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7018:3:25",
"type": ""
}
],
"src": "6962:112:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7174:120:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7184:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7196:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7207:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7192:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7192:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7184:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7260:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7273:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7284:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7269:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7269:17:25"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulIdentifier",
"src": "7220:39:25"
},
"nodeType": "YulFunctionCall",
"src": "7220:67:25"
},
"nodeType": "YulExpressionStatement",
"src": "7220:67:25"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7146:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7158:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7169:4:25",
"type": ""
}
],
"src": "7080:214:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7345:32:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7355:16:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "7366:5:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "7355:7:25"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7327:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "7337:7:25",
"type": ""
}
],
"src": "7300:77:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7448:53:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7465:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7488:5:25"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "7470:17:25"
},
"nodeType": "YulFunctionCall",
"src": "7470:24:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7458:6:25"
},
"nodeType": "YulFunctionCall",
"src": "7458:37:25"
},
"nodeType": "YulExpressionStatement",
"src": "7458:37:25"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7436:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7443:3:25",
"type": ""
}
],
"src": "7383:118:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7605:124:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7615:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7627:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7638:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7623:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7623:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7615:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7695:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7708:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7719:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7704:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7704:17:25"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "7651:43:25"
},
"nodeType": "YulFunctionCall",
"src": "7651:71:25"
},
"nodeType": "YulExpressionStatement",
"src": "7651:71:25"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7577:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7589:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7600:4:25",
"type": ""
}
],
"src": "7507:222:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7832:516:25",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7878:83:25",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "7880:77:25"
},
"nodeType": "YulFunctionCall",
"src": "7880:79:25"
},
"nodeType": "YulExpressionStatement",
"src": "7880:79:25"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7853:7:25"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7862:9:25"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7849:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7849:23:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7874:2:25",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "7845:3:25"
},
"nodeType": "YulFunctionCall",
"src": "7845:32:25"
},
"nodeType": "YulIf",
"src": "7842:119:25"
},
{
"nodeType": "YulBlock",
"src": "7971:116:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7986:15:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8000:1:25",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7990:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8015:62:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8049:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8060:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8045:3:25"
},
"nodeType": "YulFunctionCall",
"src": "8045:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8069:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint16",
"nodeType": "YulIdentifier",
"src": "8025:19:25"
},
"nodeType": "YulFunctionCall",
"src": "8025:52:25"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8015:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "8097:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8112:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8126:2:25",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8116:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8142:62:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8176:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8187:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8172:3:25"
},
"nodeType": "YulFunctionCall",
"src": "8172:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8196:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint16",
"nodeType": "YulIdentifier",
"src": "8152:19:25"
},
"nodeType": "YulFunctionCall",
"src": "8152:52:25"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8142:6:25"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "8224:117:25",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8239:16:25",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8253:2:25",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8243:6:25",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8269:62:25",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8303:9:25"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8314:6:25"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8299:3:25"
},
"nodeType": "YulFunctionCall",
"src": "8299:22:25"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8323:7:25"
}
],
"functionName": {
"name": "abi_decode_t_uint16",
"nodeType": "YulIdentifier",
"src": "8279:19:25"
},
"nodeType": "YulFunctionCall",
"src": "8279:52:25"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "8269:6:25"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint16t_uint16t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7786:9:25",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "7797:7:25",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7809:6:25",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7817:6:25",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "7825:6:25",
"type": ""
}
],
"src": "7735:613:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8386:28:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8396:12:25",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "8403:5:25"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8396:3:25"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8372:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "8382:3:25",
"type": ""
}
],
"src": "8354:60:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8480:82:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8490:66:25",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8548:5:25"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "8530:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8530:24:25"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "8521:8:25"
},
"nodeType": "YulFunctionCall",
"src": "8521:34:25"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "8503:17:25"
},
"nodeType": "YulFunctionCall",
"src": "8503:53:25"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "8490:9:25"
}
]
}
]
},
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8460:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "8470:9:25",
"type": ""
}
],
"src": "8420:142:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8628:66:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8638:50:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8682:5:25"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "8651:30:25"
},
"nodeType": "YulFunctionCall",
"src": "8651:37:25"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "8638:9:25"
}
]
}
]
},
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8608:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "8618:9:25",
"type": ""
}
],
"src": "8568:126:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8787:66:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8797:50:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8841:5:25"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "8810:30:25"
},
"nodeType": "YulFunctionCall",
"src": "8810:37:25"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "8797:9:25"
}
]
}
]
},
"name": "convert_t_contract$_IUniswapV2Router02_$3364_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8767:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "8777:9:25",
"type": ""
}
],
"src": "8700:153:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8951:93:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8968:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9031:5:25"
}
],
"functionName": {
"name": "convert_t_contract$_IUniswapV2Router02_$3364_to_t_address",
"nodeType": "YulIdentifier",
"src": "8973:57:25"
},
"nodeType": "YulFunctionCall",
"src": "8973:64:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8961:6:25"
},
"nodeType": "YulFunctionCall",
"src": "8961:77:25"
},
"nodeType": "YulExpressionStatement",
"src": "8961:77:25"
}
]
},
"name": "abi_encode_t_contract$_IUniswapV2Router02_$3364_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8939:5:25",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8946:3:25",
"type": ""
}
],
"src": "8859:185:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9175:151:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9185:26:25",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9197:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9208:2:25",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9193:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9193:18:25"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9185:4:25"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9292:6:25"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9305:9:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9316:1:25",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9301:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9301:17:25"
}
],
"functionName": {
"name": "abi_encode_t_contract$_IUniswapV2Router02_$3364_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "9221:70:25"
},
"nodeType": "YulFunctionCall",
"src": "9221:98:25"
},
"nodeType": "YulExpressionStatement",
"src": "9221:98:25"
}
]
},
"name": "abi_encode_tuple_t_contract$_IUniswapV2Router02_$3364__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9147:9:25",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9159:6:25",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9170:4:25",
"type": ""
}
],
"src": "9050:276:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9376:105:25",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9386:89:25",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9401:5:25"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9408:66:25",
"type": "",
"value": "0xff00000000000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9397:3:25"
},
"nodeType": "YulFunctionCall",
"src": "9397:78:25"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9386:7:25"
}
]
}
]
},
"name": "cleanup_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9358:5:25",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9368:7:25",
"type": ""
}
],
"src": "9332:149:25"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9550:52:25",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9567:3:25"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9589:5:25"
}
],
"functionName": {
"name": "cleanup_t_bytes1",
"nodeType": "YulIdentifier",
"src": "9572:16:25"
},
"nodeType": "YulFunctionCall",
"src": "9572:23:25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9560:6:25"
},
"nodeT
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment