Skip to content

Instantly share code, notes, and snippets.

@vyorkin
Created March 7, 2022 20:58
Show Gist options
  • Save vyorkin/091a7a2728446bfd39cca50ff7f3cbe4 to your computer and use it in GitHub Desktop.
Save vyorkin/091a7a2728446bfd39cca50ff7f3cbe4 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.12+commit.f00d7308.js&optimize=false&runs=200&gist=
{
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_47": {
"entryPoint": null,
"id": 47,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 227,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 248,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 194,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 189,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 204,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1048:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:1"
},
"nodeType": "YulFunctionCall",
"src": "67:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:1",
"type": ""
}
],
"src": "7:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:1"
},
"nodeType": "YulFunctionCall",
"src": "187:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:1"
},
"nodeType": "YulFunctionCall",
"src": "310:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "400:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:1",
"type": ""
}
],
"src": "334:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "460:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "517:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "519:6:1"
},
"nodeType": "YulFunctionCall",
"src": "519:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "519:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "483:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "490:17:1"
},
"nodeType": "YulFunctionCall",
"src": "490:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "480:2:1"
},
"nodeType": "YulFunctionCall",
"src": "480:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "473:6:1"
},
"nodeType": "YulFunctionCall",
"src": "473:43:1"
},
"nodeType": "YulIf",
"src": "470:63:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "453:5:1",
"type": ""
}
],
"src": "417:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "608:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "618:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "633:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "627:5:1"
},
"nodeType": "YulFunctionCall",
"src": "627:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "618:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "676:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "649:26:1"
},
"nodeType": "YulFunctionCall",
"src": "649:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "649:33:1"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "586:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "594:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "602:5:1",
"type": ""
}
],
"src": "545:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "771:274:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "817:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "819:77:1"
},
"nodeType": "YulFunctionCall",
"src": "819:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "819:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "792:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "801:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "788:3:1"
},
"nodeType": "YulFunctionCall",
"src": "788:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "813:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "784:3:1"
},
"nodeType": "YulFunctionCall",
"src": "784:32:1"
},
"nodeType": "YulIf",
"src": "781:119:1"
},
{
"nodeType": "YulBlock",
"src": "910:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "925:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "939:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "929:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "954:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1000:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1011:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "996:3:1"
},
"nodeType": "YulFunctionCall",
"src": "996:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1020:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "964:31:1"
},
"nodeType": "YulFunctionCall",
"src": "964:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "954:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "741:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "752:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "764:6:1",
"type": ""
}
],
"src": "694:351:1"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "6080604052607b60005533600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060146101000a81548160ff021916908315150217905550601f600160156101000a81548161ffff021916908361ffff16021790555034801561008e57600080fd5b5060405161088d38038061088d83398181016040528101906100b091906100f8565b8060028190555050610125565b600080fd5b6000819050919050565b6100d5816100c2565b81146100e057600080fd5b50565b6000815190506100f2816100cc565b92915050565b60006020828403121561010e5761010d6100bd565b5b600061011c848285016100e3565b91505092915050565b610759806101346000396000f3fe608060405234801561001057600080fd5b50600436106100925760003560e01c8063881374d711610066578063881374d71461010f5780638da5cb5b1461013f5780638faf850d1461015d578063992ddc6f14610179578063f0ba8440146101a957610092565b806274530a1461009757806306661abd146100b55780630a6b4e06146100d357806359d168b6146100f1575b600080fd5b61009f6101d9565b6040516100ac919061037b565b60405180910390f35b6100bd6101ec565b6040516100ca91906103af565b60405180910390f35b6100db6101f2565b6040516100e891906103e7565b60405180910390f35b6100f9610206565b60405161010691906103af565b60405180910390f35b61012960048036038101906101249190610433565b61020b565b60405161013691906103af565b60405180910390f35b610147610241565b60405161015491906104b4565b60405180910390f35b61017760048036038101906101729190610505565b610267565b005b610193600480360381019061018e9190610532565b6102fa565b6040516101a091906103af565b60405180910390f35b6101c360048036038101906101be9190610585565b610345565b6040516101d091906105c1565b60405180910390f35b600160149054906101000a900460ff1681565b60005481565b600160159054906101000a900461ffff1681565b607b81565b600081836040516020016102209291906105fd565b6040516020818303038152906040528051906020012060001c905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040518060400160405280600680549050815260200183815250905060068190806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505080600760008360000151815260200190815260200160002060008201518160000155602082015181600101559050505050565b600081836103089190610658565b8460405160200161031991906106b2565b6040516020818303038152906040528051906020012060001c61033c91906106cd565b90509392505050565b6003816003811061035557600080fd5b016000915090505481565b60008115159050919050565b61037581610360565b82525050565b6000602082019050610390600083018461036c565b92915050565b6000819050919050565b6103a981610396565b82525050565b60006020820190506103c460008301846103a0565b92915050565b600061ffff82169050919050565b6103e1816103ca565b82525050565b60006020820190506103fc60008301846103d8565b92915050565b600080fd5b61041081610396565b811461041b57600080fd5b50565b60008135905061042d81610407565b92915050565b6000806040838503121561044a57610449610402565b5b60006104588582860161041e565b92505060206104698582860161041e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061049e82610473565b9050919050565b6104ae81610493565b82525050565b60006020820190506104c960008301846104a5565b92915050565b6000819050919050565b6104e2816104cf565b81146104ed57600080fd5b50565b6000813590506104ff816104d9565b92915050565b60006020828403121561051b5761051a610402565b5b6000610529848285016104f0565b91505092915050565b60008060006060848603121561054b5761054a610402565b5b60006105598682870161041e565b935050602061056a8682870161041e565b925050604061057b8682870161041e565b9150509250925092565b60006020828403121561059b5761059a610402565b5b60006105a98482850161041e565b91505092915050565b6105bb816104cf565b82525050565b60006020820190506105d660008301846105b2565b92915050565b6000819050919050565b6105f76105f282610396565b6105dc565b82525050565b600061060982856105e6565b60208201915061061982846105e6565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061066382610396565b915061066e83610396565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156106a7576106a6610629565b5b828202905092915050565b60006106be82846105e6565b60208201915081905092915050565b60006106d882610396565b91506106e383610396565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561071857610717610629565b5b82820190509291505056fea2646970667358221220638c25c5c56e1d4198c37be1164e66999efe07eeac90bad078fefc11488005b864736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x7B PUSH1 0x0 SSTORE CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1F PUSH1 0x1 PUSH1 0x15 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x88D CODESIZE SUB DUP1 PUSH2 0x88D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0xB0 SWAP2 SWAP1 PUSH2 0xF8 JUMP JUMPDEST DUP1 PUSH1 0x2 DUP2 SWAP1 SSTORE POP POP PUSH2 0x125 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD5 DUP2 PUSH2 0xC2 JUMP JUMPDEST DUP2 EQ PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xF2 DUP2 PUSH2 0xCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E JUMPI PUSH2 0x10D PUSH2 0xBD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x11C DUP5 DUP3 DUP6 ADD PUSH2 0xE3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x759 DUP1 PUSH2 0x134 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x881374D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x881374D7 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x8FAF850D EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x992DDC6F EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xF0BA8440 EQ PUSH2 0x1A9 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH3 0x74530A EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x6661ABD EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xA6B4E06 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x59D168B6 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x1D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x433 JUMP JUMPDEST PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x147 PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x154 SWAP2 SWAP1 PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x172 SWAP2 SWAP1 PUSH2 0x505 JUMP JUMPDEST PUSH2 0x267 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18E SWAP2 SWAP1 PUSH2 0x532 JUMP JUMPDEST PUSH2 0x2FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x585 JUMP JUMPDEST PUSH2 0x345 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x15 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7B DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 POP PUSH1 0x6 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x308 SWAP2 SWAP1 PUSH2 0x658 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x6B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR PUSH2 0x33C SWAP2 SWAP1 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x3 DUP2 LT PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x375 DUP2 PUSH2 0x360 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x390 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x36C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A9 DUP2 PUSH2 0x396 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3C4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3A0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E1 DUP2 PUSH2 0x3CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3FC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x410 DUP2 PUSH2 0x396 JUMP JUMPDEST DUP2 EQ PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x42D DUP2 PUSH2 0x407 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44A JUMPI PUSH2 0x449 PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP6 DUP3 DUP7 ADD PUSH2 0x41E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x469 DUP6 DUP3 DUP7 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49E DUP3 PUSH2 0x473 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4AE DUP2 PUSH2 0x493 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4C9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E2 DUP2 PUSH2 0x4CF JUMP JUMPDEST DUP2 EQ PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4FF DUP2 PUSH2 0x4D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51B JUMPI PUSH2 0x51A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x529 DUP5 DUP3 DUP6 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54B JUMPI PUSH2 0x54A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x559 DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x56A DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x57B DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59B JUMPI PUSH2 0x59A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x5A9 DUP5 DUP3 DUP6 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5BB DUP2 PUSH2 0x4CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5D6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x5B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5F7 PUSH2 0x5F2 DUP3 PUSH2 0x396 JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x609 DUP3 DUP6 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x619 DUP3 DUP5 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x663 DUP3 PUSH2 0x396 JUMP JUMPDEST SWAP2 POP PUSH2 0x66E DUP4 PUSH2 0x396 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x6A7 JUMPI PUSH2 0x6A6 PUSH2 0x629 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 DUP5 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D8 DUP3 PUSH2 0x396 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E3 DUP4 PUSH2 0x396 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x718 JUMPI PUSH2 0x717 PUSH2 0x629 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x8C25C5C5 PUSH15 0x1D4198C37BE1164E66999EFE07EEAC SWAP1 0xBA 0xD0 PUSH25 0xFEFC11488005B864736F6C634300080C003300000000000000 ",
"sourceMap": "540:1482:0:-:0;;;595:3;575:23;;641:10;618:33;;;;;;;;;;;;;;;;;;;;678:4;657:25;;;;;;;;;;;;;;;;;;;;708:2;688:22;;;;;;;;;;;;;;;;;;;;1398:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1450:9;1439:8;:20;;;;1398:68;540:1482;;88:117:1;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;540:1482:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@addUser_75": {
"entryPoint": 615,
"id": 75,
"parameterSlots": 1,
"returnSlots": 0
},
"@count_4": {
"entryPoint": 492,
"id": 4,
"parameterSlots": 0,
"returnSlots": 0
},
"@data_23": {
"entryPoint": 837,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@getArrayLocation_102": {
"entryPoint": 762,
"id": 102,
"parameterSlots": 3,
"returnSlots": 1
},
"@getMapLocation_123": {
"entryPoint": 523,
"id": 123,
"parameterSlots": 2,
"returnSlots": 1
},
"@isTrue_11": {
"entryPoint": 473,
"id": 11,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_8": {
"entryPoint": 577,
"id": 8,
"parameterSlots": 0,
"returnSlots": 0
},
"@someConst_19": {
"entryPoint": 518,
"id": 19,
"parameterSlots": 0,
"returnSlots": 0
},
"@u16_14": {
"entryPoint": 498,
"id": 14,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_bytes32": {
"entryPoint": 1264,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 1054,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 1285,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 1413,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 1075,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256t_uint256t_uint256": {
"entryPoint": 1330,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 1189,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 876,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 1458,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint16_to_t_uint16_fromStack": {
"entryPoint": 984,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 928,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 1510,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_uint256__to_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1714,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_uint256_t_uint256__to_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1533,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 1204,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 891,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 1473,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
"entryPoint": 999,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 943,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1741,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 1624,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1171,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 864,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 1231,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint16": {
"entryPoint": 970,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1139,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 918,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 1500,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1577,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1026,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 1241,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1031,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:6739:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "49:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "59:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "84:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "77:6:1"
},
"nodeType": "YulFunctionCall",
"src": "77:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "70:6:1"
},
"nodeType": "YulFunctionCall",
"src": "70:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "59:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "31:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "41:7:1",
"type": ""
}
],
"src": "7:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "162:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "179:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "199:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "184:14:1"
},
"nodeType": "YulFunctionCall",
"src": "184:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "172:6:1"
},
"nodeType": "YulFunctionCall",
"src": "172:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "172:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "150:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "157:3:1",
"type": ""
}
],
"src": "103:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "310:118:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "320:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "332:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "343:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "328:3:1"
},
"nodeType": "YulFunctionCall",
"src": "328:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "320:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "394:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "407:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "418:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "356:37:1"
},
"nodeType": "YulFunctionCall",
"src": "356:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "356:65:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "282:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "294:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "305:4:1",
"type": ""
}
],
"src": "218:210:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "479:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "489:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "500:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "489:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "461:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "471:7:1",
"type": ""
}
],
"src": "434:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "582:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "599:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "622:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "604:17:1"
},
"nodeType": "YulFunctionCall",
"src": "604:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "592:6:1"
},
"nodeType": "YulFunctionCall",
"src": "592:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "592:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "570:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "577:3:1",
"type": ""
}
],
"src": "517:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "739:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "749:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "761:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "772:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "757:3:1"
},
"nodeType": "YulFunctionCall",
"src": "757:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "749:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "829:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "842:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "853:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "838:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "785:43:1"
},
"nodeType": "YulFunctionCall",
"src": "785:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "785:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "711:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "723:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "734:4:1",
"type": ""
}
],
"src": "641:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "913:45:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "923:29:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "938:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "945:6:1",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "934:3:1"
},
"nodeType": "YulFunctionCall",
"src": "934:18:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "923:7:1"
}
]
}
]
},
"name": "cleanup_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "895:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "905:7:1",
"type": ""
}
],
"src": "869:89:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1027:52:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1044:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1066:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "1049:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1049:23:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1037:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1037:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "1037:36:1"
}
]
},
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1015:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1022:3:1",
"type": ""
}
],
"src": "964:115:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1181:122:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1191:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1203:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1214:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1199:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1199:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1191:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1269:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1282:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1293:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1278:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1278:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint16_to_t_uint16_fromStack",
"nodeType": "YulIdentifier",
"src": "1227:41:1"
},
"nodeType": "YulFunctionCall",
"src": "1227:69:1"
},
"nodeType": "YulExpressionStatement",
"src": "1227:69:1"
}
]
},
"name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1153:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1165:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1176:4:1",
"type": ""
}
],
"src": "1085:218:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1349:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1359:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1375:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1369:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1369:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1359:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1342:6:1",
"type": ""
}
],
"src": "1309:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1479:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1496:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1499:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1489:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1489:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1489:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1390:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1602:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1619:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1622:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1612:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1612:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1612:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1513:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1679:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1736:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1745:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1748:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1738:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1738:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1738:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1702:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1727:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1709:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1709:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1699:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1699:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1692:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1692:43:1"
},
"nodeType": "YulIf",
"src": "1689:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1672:5:1",
"type": ""
}
],
"src": "1636:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1816:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1826:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1848:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1835:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1835:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1826:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1891:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "1864:26:1"
},
"nodeType": "YulFunctionCall",
"src": "1864:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1864:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1794:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1802:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1810:5:1",
"type": ""
}
],
"src": "1764:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1992:391:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2038:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2040:77:1"
},
"nodeType": "YulFunctionCall",
"src": "2040:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "2040:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2013:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2022:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2009:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2009:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2034:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2005:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2005:32:1"
},
"nodeType": "YulIf",
"src": "2002:119:1"
},
{
"nodeType": "YulBlock",
"src": "2131:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2146:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2160:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2150:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2175:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2210:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2221:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2206:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2206:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2230:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2185:20:1"
},
"nodeType": "YulFunctionCall",
"src": "2185:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2175:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2258:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2273:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2287:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2277:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2303:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2338:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2349:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2334:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2334:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2358:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2313:20:1"
},
"nodeType": "YulFunctionCall",
"src": "2313:53:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2303:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1954:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1965:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1977:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1985:6:1",
"type": ""
}
],
"src": "1909:474:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2434:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2444:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2459:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2466:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2455:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2455:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2444:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2416:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2426:7:1",
"type": ""
}
],
"src": "2389:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2566:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2576:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2605:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2587:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2587:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2576:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2548:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2558:7:1",
"type": ""
}
],
"src": "2521:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2688:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2705:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2728:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2710:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2710:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2698:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2698:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "2698:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2676:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2683:3:1",
"type": ""
}
],
"src": "2623:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2845:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2855:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2867:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2878:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2863:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2863:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2855:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2935:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2948:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2959:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2944:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2944:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "2891:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2891:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2891:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2817:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2829:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2840:4:1",
"type": ""
}
],
"src": "2747:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3020:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3030:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3041:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3030:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3002:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3012:7:1",
"type": ""
}
],
"src": "2975:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3101:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3158:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3167:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3170:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3160:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3160:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3124:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3149:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3131:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3131:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3121:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3121:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3114:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3114:43:1"
},
"nodeType": "YulIf",
"src": "3111:63:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3094:5:1",
"type": ""
}
],
"src": "3058:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3238:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3248:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3270:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3257:12:1"
},
"nodeType": "YulFunctionCall",
"src": "3257:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3248:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3313:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3286:26:1"
},
"nodeType": "YulFunctionCall",
"src": "3286:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "3286:33:1"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3216:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3224:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3232:5:1",
"type": ""
}
],
"src": "3186:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3397:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3443:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3445:77:1"
},
"nodeType": "YulFunctionCall",
"src": "3445:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "3445:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3418:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3427:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3414:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3414:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3439:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3410:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3410:32:1"
},
"nodeType": "YulIf",
"src": "3407:119:1"
},
{
"nodeType": "YulBlock",
"src": "3536:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3551:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3565:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3555:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3580:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3615:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3626:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3611:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3611:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3635:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3590:20:1"
},
"nodeType": "YulFunctionCall",
"src": "3590:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3580:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3367:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3378:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3390:6:1",
"type": ""
}
],
"src": "3331:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3766:519:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3812:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3814:77:1"
},
"nodeType": "YulFunctionCall",
"src": "3814:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "3814:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3787:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3796:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3783:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3783:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3808:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3779:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3779:32:1"
},
"nodeType": "YulIf",
"src": "3776:119:1"
},
{
"nodeType": "YulBlock",
"src": "3905:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3920:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3934:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3924:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3949:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3984:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3995:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3980:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3980:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4004:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3959:20:1"
},
"nodeType": "YulFunctionCall",
"src": "3959:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3949:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4032:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4047:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4061:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4051:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4077:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4112:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4123:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4108:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4108:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4132:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4087:20:1"
},
"nodeType": "YulFunctionCall",
"src": "4087:53:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4077:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4160:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4175:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4189:2:1",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4179:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4205:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4240:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4251:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4236:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4236:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4260:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4215:20:1"
},
"nodeType": "YulFunctionCall",
"src": "4215:53:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4205:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3720:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3731:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3743:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3751:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3759:6:1",
"type": ""
}
],
"src": "3666:619:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4357:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4403:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4405:77:1"
},
"nodeType": "YulFunctionCall",
"src": "4405:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4405:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4378:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4387:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4374:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4374:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4399:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4370:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4370:32:1"
},
"nodeType": "YulIf",
"src": "4367:119:1"
},
{
"nodeType": "YulBlock",
"src": "4496:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4511:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4525:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4515:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4540:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4575:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4586:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4571:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4571:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4595:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4550:20:1"
},
"nodeType": "YulFunctionCall",
"src": "4550:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4540:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4327:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4338:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4350:6:1",
"type": ""
}
],
"src": "4291:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4691:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4708:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4731:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4713:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4713:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4701:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4701:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "4701:37:1"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4679:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4686:3:1",
"type": ""
}
],
"src": "4626:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4848:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4858:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4870:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4881:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4866:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4866:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4858:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4938:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4951:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4962:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4947:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4947:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4894:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4894:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4894:71:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4820:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4832:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4843:4:1",
"type": ""
}
],
"src": "4750:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5025:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5035:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "5046:5:1"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "5035:7:1"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5007:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "5017:7:1",
"type": ""
}
],
"src": "4978:79:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5146:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5163:3:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5206:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5188:17:1"
},
"nodeType": "YulFunctionCall",
"src": "5188:24:1"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "5168:19:1"
},
"nodeType": "YulFunctionCall",
"src": "5168:45:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5156:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5156:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "5156:58:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5134:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5141:3:1",
"type": ""
}
],
"src": "5063:157:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5370:253:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5443:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5452:3:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "5381:61:1"
},
"nodeType": "YulFunctionCall",
"src": "5381:75:1"
},
"nodeType": "YulExpressionStatement",
"src": "5381:75:1"
},
{
"nodeType": "YulAssignment",
"src": "5465:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5476:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5481:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5472:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5472:12:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5465:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5556:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5565:3:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "5494:61:1"
},
"nodeType": "YulFunctionCall",
"src": "5494:75:1"
},
"nodeType": "YulExpressionStatement",
"src": "5494:75:1"
},
{
"nodeType": "YulAssignment",
"src": "5578:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5589:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5594:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5585:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5585:12:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5578:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5607:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5614:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5607:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_uint256_t_uint256__to_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5341:3:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5347:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5355:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5366:3:1",
"type": ""
}
],
"src": "5226:397:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5657:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5674:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5677:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5667:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5667:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "5667:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5771:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5774:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5764:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5764:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "5764:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5795:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5798:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5788:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5788:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "5788:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "5629:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5863:300:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5873:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "5896:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5878:17:1"
},
"nodeType": "YulFunctionCall",
"src": "5878:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "5873:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5907:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "5930:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5912:17:1"
},
"nodeType": "YulFunctionCall",
"src": "5912:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "5907:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6105:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6107:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6107:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6107:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6017:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6010:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6010:9:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6003:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6003:17:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6025:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6032:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6100:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6028:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6028:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6022:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6022:81:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5999:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5999:105:1"
},
"nodeType": "YulIf",
"src": "5996:131:1"
},
{
"nodeType": "YulAssignment",
"src": "6137:20:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6152:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6155:1:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "6148:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6148:9:1"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "6137:7:1"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "5846:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "5849:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "5855:7:1",
"type": ""
}
],
"src": "5815:348:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6285:140:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6358:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6367:3:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "6296:61:1"
},
"nodeType": "YulFunctionCall",
"src": "6296:75:1"
},
"nodeType": "YulExpressionStatement",
"src": "6296:75:1"
},
{
"nodeType": "YulAssignment",
"src": "6380:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6391:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6396:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6387:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6387:12:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6380:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6409:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6416:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6409:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_uint256__to_t_uint256__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6264:3:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6270:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6281:3:1",
"type": ""
}
],
"src": "6169:256:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6475:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6485:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6508:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6490:17:1"
},
"nodeType": "YulFunctionCall",
"src": "6490:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6485:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6519:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6542:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6524:17:1"
},
"nodeType": "YulFunctionCall",
"src": "6524:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6519:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6682:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6684:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6684:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6684:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6603:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6610:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6678:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6606:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6606:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6600:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6600:81:1"
},
"nodeType": "YulIf",
"src": "6597:107:1"
},
{
"nodeType": "YulAssignment",
"src": "6714:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6725:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6728:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6721:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6721:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "6714:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6462:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "6465:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "6471:3:1",
"type": ""
}
],
"src": "6431:305:1"
}
]
},
"contents": "{\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 cleanup_t_uint256(value) -> cleaned {\n cleaned := 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 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 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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\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_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 cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\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_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function leftAlign_t_uint256(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint256(cleanup_t_uint256(value)))\n }\n\n function abi_encode_tuple_packed_t_uint256_t_uint256__to_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 32)\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 32)\n\n end := pos\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function abi_encode_tuple_packed_t_uint256__to_t_uint256__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 32)\n\n end := pos\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100925760003560e01c8063881374d711610066578063881374d71461010f5780638da5cb5b1461013f5780638faf850d1461015d578063992ddc6f14610179578063f0ba8440146101a957610092565b806274530a1461009757806306661abd146100b55780630a6b4e06146100d357806359d168b6146100f1575b600080fd5b61009f6101d9565b6040516100ac919061037b565b60405180910390f35b6100bd6101ec565b6040516100ca91906103af565b60405180910390f35b6100db6101f2565b6040516100e891906103e7565b60405180910390f35b6100f9610206565b60405161010691906103af565b60405180910390f35b61012960048036038101906101249190610433565b61020b565b60405161013691906103af565b60405180910390f35b610147610241565b60405161015491906104b4565b60405180910390f35b61017760048036038101906101729190610505565b610267565b005b610193600480360381019061018e9190610532565b6102fa565b6040516101a091906103af565b60405180910390f35b6101c360048036038101906101be9190610585565b610345565b6040516101d091906105c1565b60405180910390f35b600160149054906101000a900460ff1681565b60005481565b600160159054906101000a900461ffff1681565b607b81565b600081836040516020016102209291906105fd565b6040516020818303038152906040528051906020012060001c905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040518060400160405280600680549050815260200183815250905060068190806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505080600760008360000151815260200190815260200160002060008201518160000155602082015181600101559050505050565b600081836103089190610658565b8460405160200161031991906106b2565b6040516020818303038152906040528051906020012060001c61033c91906106cd565b90509392505050565b6003816003811061035557600080fd5b016000915090505481565b60008115159050919050565b61037581610360565b82525050565b6000602082019050610390600083018461036c565b92915050565b6000819050919050565b6103a981610396565b82525050565b60006020820190506103c460008301846103a0565b92915050565b600061ffff82169050919050565b6103e1816103ca565b82525050565b60006020820190506103fc60008301846103d8565b92915050565b600080fd5b61041081610396565b811461041b57600080fd5b50565b60008135905061042d81610407565b92915050565b6000806040838503121561044a57610449610402565b5b60006104588582860161041e565b92505060206104698582860161041e565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061049e82610473565b9050919050565b6104ae81610493565b82525050565b60006020820190506104c960008301846104a5565b92915050565b6000819050919050565b6104e2816104cf565b81146104ed57600080fd5b50565b6000813590506104ff816104d9565b92915050565b60006020828403121561051b5761051a610402565b5b6000610529848285016104f0565b91505092915050565b60008060006060848603121561054b5761054a610402565b5b60006105598682870161041e565b935050602061056a8682870161041e565b925050604061057b8682870161041e565b9150509250925092565b60006020828403121561059b5761059a610402565b5b60006105a98482850161041e565b91505092915050565b6105bb816104cf565b82525050565b60006020820190506105d660008301846105b2565b92915050565b6000819050919050565b6105f76105f282610396565b6105dc565b82525050565b600061060982856105e6565b60208201915061061982846105e6565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061066382610396565b915061066e83610396565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156106a7576106a6610629565b5b828202905092915050565b60006106be82846105e6565b60208201915081905092915050565b60006106d882610396565b91506106e383610396565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561071857610717610629565b5b82820190509291505056fea2646970667358221220638c25c5c56e1d4198c37be1164e66999efe07eeac90bad078fefc11488005b864736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x881374D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x881374D7 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x8FAF850D EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x992DDC6F EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xF0BA8440 EQ PUSH2 0x1A9 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH3 0x74530A EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x6661ABD EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xA6B4E06 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x59D168B6 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x1D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x433 JUMP JUMPDEST PUSH2 0x20B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x147 PUSH2 0x241 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x154 SWAP2 SWAP1 PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x172 SWAP2 SWAP1 PUSH2 0x505 JUMP JUMPDEST PUSH2 0x267 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18E SWAP2 SWAP1 PUSH2 0x532 JUMP JUMPDEST PUSH2 0x2FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x585 JUMP JUMPDEST PUSH2 0x345 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x15 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7B DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x220 SWAP3 SWAP2 SWAP1 PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 POP PUSH1 0x6 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x308 SWAP2 SWAP1 PUSH2 0x658 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x6B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR PUSH2 0x33C SWAP2 SWAP1 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x3 DUP2 LT PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x375 DUP2 PUSH2 0x360 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x390 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x36C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A9 DUP2 PUSH2 0x396 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3C4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3A0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E1 DUP2 PUSH2 0x3CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3FC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3D8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x410 DUP2 PUSH2 0x396 JUMP JUMPDEST DUP2 EQ PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x42D DUP2 PUSH2 0x407 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44A JUMPI PUSH2 0x449 PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x458 DUP6 DUP3 DUP7 ADD PUSH2 0x41E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x469 DUP6 DUP3 DUP7 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49E DUP3 PUSH2 0x473 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4AE DUP2 PUSH2 0x493 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4C9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E2 DUP2 PUSH2 0x4CF JUMP JUMPDEST DUP2 EQ PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4FF DUP2 PUSH2 0x4D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51B JUMPI PUSH2 0x51A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x529 DUP5 DUP3 DUP6 ADD PUSH2 0x4F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54B JUMPI PUSH2 0x54A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x559 DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x56A DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x57B DUP7 DUP3 DUP8 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59B JUMPI PUSH2 0x59A PUSH2 0x402 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x5A9 DUP5 DUP3 DUP6 ADD PUSH2 0x41E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5BB DUP2 PUSH2 0x4CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5D6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x5B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5F7 PUSH2 0x5F2 DUP3 PUSH2 0x396 JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x609 DUP3 DUP6 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x619 DUP3 DUP5 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x663 DUP3 PUSH2 0x396 JUMP JUMPDEST SWAP2 POP PUSH2 0x66E DUP4 PUSH2 0x396 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x6A7 JUMPI PUSH2 0x6A6 PUSH2 0x629 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6BE DUP3 DUP5 PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D8 DUP3 PUSH2 0x396 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E3 DUP4 PUSH2 0x396 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x718 JUMPI PUSH2 0x717 PUSH2 0x629 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x8C25C5C5 PUSH15 0x1D4198C37BE1164E66999EFE07EEAC SWAP1 0xBA 0xD0 PUSH25 0xFEFC11488005B864736F6C634300080C003300000000000000 ",
"sourceMap": "540:1482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;657:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;575:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;688:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;797:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1880:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;618:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1472:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1663:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;889:22;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;657:25;;;;;;;;;;;;;:::o;575:23::-;;;;:::o;688:22::-;;;;;;;;;;;;;:::o;797:36::-;830:3;797:36;:::o;1880:140::-;1946:4;2001:3;2006:4;1984:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1974:38;;;;;;1969:44;;1962:51;;1880:140;;;;:::o;618:33::-;;;;;;;;;;;;;:::o;1472:185::-;1525:16;1544:45;;;;;;;;1554:5;:12;;;;1544:45;;;;1578:9;1544:45;;;1525:64;;1600:5;1611:4;1600:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:4;1626:8;:17;1635:4;:7;;;1626:17;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;1515:142;1472:185;:::o;1663:211::-;1781:4;1855:11;1847:5;:19;;;;:::i;:::-;1836:4;1819:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;1809:33;;;;;;1804:39;;:63;;;;:::i;:::-;1797:70;;1663:211;;;;;:::o;889:22::-;;;;;;;;;;;;;;;;;;;;:::o;7:90:1:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o;434:77::-;471:7;500:5;489:16;;434:77;;;:::o;517:118::-;604:24;622:5;604:24;:::i;:::-;599:3;592:37;517:118;;:::o;641:222::-;734:4;772:2;761:9;757:18;749:26;;785:71;853:1;842:9;838:17;829:6;785:71;:::i;:::-;641:222;;;;:::o;869:89::-;905:7;945:6;938:5;934:18;923:29;;869:89;;;:::o;964:115::-;1049:23;1066:5;1049:23;:::i;:::-;1044:3;1037:36;964:115;;:::o;1085:218::-;1176:4;1214:2;1203:9;1199:18;1191:26;;1227:69;1293:1;1282:9;1278:17;1269:6;1227:69;:::i;:::-;1085:218;;;;:::o;1390:117::-;1499:1;1496;1489:12;1636:122;1709:24;1727:5;1709:24;:::i;:::-;1702:5;1699:35;1689:63;;1748:1;1745;1738:12;1689:63;1636:122;:::o;1764:139::-;1810:5;1848:6;1835:20;1826:29;;1864:33;1891:5;1864:33;:::i;:::-;1764:139;;;;:::o;1909:474::-;1977:6;1985;2034:2;2022:9;2013:7;2009:23;2005:32;2002:119;;;2040:79;;:::i;:::-;2002:119;2160:1;2185:53;2230:7;2221:6;2210:9;2206:22;2185:53;:::i;:::-;2175:63;;2131:117;2287:2;2313:53;2358:7;2349:6;2338:9;2334:22;2313:53;:::i;:::-;2303:63;;2258:118;1909:474;;;;;:::o;2389:126::-;2426:7;2466:42;2459:5;2455:54;2444:65;;2389:126;;;:::o;2521:96::-;2558:7;2587:24;2605:5;2587:24;:::i;:::-;2576:35;;2521:96;;;:::o;2623:118::-;2710:24;2728:5;2710:24;:::i;:::-;2705:3;2698:37;2623:118;;:::o;2747:222::-;2840:4;2878:2;2867:9;2863:18;2855:26;;2891:71;2959:1;2948:9;2944:17;2935:6;2891:71;:::i;:::-;2747:222;;;;:::o;2975:77::-;3012:7;3041:5;3030:16;;2975:77;;;:::o;3058:122::-;3131:24;3149:5;3131:24;:::i;:::-;3124:5;3121:35;3111:63;;3170:1;3167;3160:12;3111:63;3058:122;:::o;3186:139::-;3232:5;3270:6;3257:20;3248:29;;3286:33;3313:5;3286:33;:::i;:::-;3186:139;;;;:::o;3331:329::-;3390:6;3439:2;3427:9;3418:7;3414:23;3410:32;3407:119;;;3445:79;;:::i;:::-;3407:119;3565:1;3590:53;3635:7;3626:6;3615:9;3611:22;3590:53;:::i;:::-;3580:63;;3536:117;3331:329;;;;:::o;3666:619::-;3743:6;3751;3759;3808:2;3796:9;3787:7;3783:23;3779:32;3776:119;;;3814:79;;:::i;:::-;3776:119;3934:1;3959:53;4004:7;3995:6;3984:9;3980:22;3959:53;:::i;:::-;3949:63;;3905:117;4061:2;4087:53;4132:7;4123:6;4112:9;4108:22;4087:53;:::i;:::-;4077:63;;4032:118;4189:2;4215:53;4260:7;4251:6;4240:9;4236:22;4215:53;:::i;:::-;4205:63;;4160:118;3666:619;;;;;:::o;4291:329::-;4350:6;4399:2;4387:9;4378:7;4374:23;4370:32;4367:119;;;4405:79;;:::i;:::-;4367:119;4525:1;4550:53;4595:7;4586:6;4575:9;4571:22;4550:53;:::i;:::-;4540:63;;4496:117;4291:329;;;;:::o;4626:118::-;4713:24;4731:5;4713:24;:::i;:::-;4708:3;4701:37;4626:118;;:::o;4750:222::-;4843:4;4881:2;4870:9;4866:18;4858:26;;4894:71;4962:1;4951:9;4947:17;4938:6;4894:71;:::i;:::-;4750:222;;;;:::o;4978:79::-;5017:7;5046:5;5035:16;;4978:79;;;:::o;5063:157::-;5168:45;5188:24;5206:5;5188:24;:::i;:::-;5168:45;:::i;:::-;5163:3;5156:58;5063:157;;:::o;5226:397::-;5366:3;5381:75;5452:3;5443:6;5381:75;:::i;:::-;5481:2;5476:3;5472:12;5465:19;;5494:75;5565:3;5556:6;5494:75;:::i;:::-;5594:2;5589:3;5585:12;5578:19;;5614:3;5607:10;;5226:397;;;;;:::o;5629:180::-;5677:77;5674:1;5667:88;5774:4;5771:1;5764:15;5798:4;5795:1;5788:15;5815:348;5855:7;5878:20;5896:1;5878:20;:::i;:::-;5873:25;;5912:20;5930:1;5912:20;:::i;:::-;5907:25;;6100:1;6032:66;6028:74;6025:1;6022:81;6017:1;6010:9;6003:17;5999:105;5996:131;;;6107:18;;:::i;:::-;5996:131;6155:1;6152;6148:9;6137:20;;5815:348;;;;:::o;6169:256::-;6281:3;6296:75;6367:3;6358:6;6296:75;:::i;:::-;6396:2;6391:3;6387:12;6380:19;;6416:3;6409:10;;6169:256;;;;:::o;6431:305::-;6471:3;6490:20;6508:1;6490:20;:::i;:::-;6485:25;;6524:20;6542:1;6524:20;:::i;:::-;6519:25;;6678:1;6610:66;6606:74;6603:1;6600:81;6597:107;;;6684:18;;:::i;:::-;6597:107;6728:1;6725;6721:9;6714:16;;6431:305;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "376200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"addUser(bytes32)": "115549",
"count()": "2452",
"data(uint256)": "2819",
"getArrayLocation(uint256,uint256,uint256)": "infinite",
"getMapLocation(uint256,uint256)": "infinite",
"isTrue()": "2522",
"owner()": "2536",
"someConst()": "396",
"u16()": "2566"
}
},
"methodIdentifiers": {
"addUser(bytes32)": "8faf850d",
"count()": "06661abd",
"data(uint256)": "f0ba8440",
"getArrayLocation(uint256,uint256,uint256)": "992ddc6f",
"getMapLocation(uint256,uint256)": "881374d7",
"isTrue()": "0074530a",
"owner()": "8da5cb5b",
"someConst()": "59d168b6",
"u16()": "0a6b4e06"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"name": "addUser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "count",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "data",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "slot",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "elementSize",
"type": "uint256"
}
],
"name": "getArrayLocation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "slot",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "getMapLocation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "isTrue",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someConst",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "u16",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.12+commit.f00d7308"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_password",
"type": "bytes32"
}
],
"name": "addUser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "count",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "data",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "slot",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "elementSize",
"type": "uint256"
}
],
"name": "getArrayLocation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "slot",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "getMapLocation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "isTrue",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "someConst",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "u16",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Vault.sol": "Vault"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Vault.sol": {
"keccak256": "0x8c225f84c6f5a953c00889347baba779cde870717bc4bdee255b35782bf98f2f",
"license": "MIT",
"urls": [
"bzz-raw://4444e043d88862840bd8b5aa6c63d47930dd20f8b8bce0ec53e8c7ee0cfd2900",
"dweb:/ipfs/QmaxBJQFZXgKWf48vYfZwkFhQBKhTXnRZ1BbHy1gjcmE1W"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
/*
Note: cannot use web3 on JVM, so use the contract deployed on ropsten
Note: browser Web3 is old so use Web3 from truffle console
Contract deployed on Ropsten
0x3505a02BCDFbb225988161a95528bfDb279faD6b
*/
/*
# Storage
- 2 ** 256 slots
- 32 bytes for each slot
- data is stored sequentially in the order of declaration
- storage is optimized to save space. If neighboring variables fit in a single
32 bytes, then they are packed into the same slot, starting from the right
*/
contract Vault {
// slot 0
uint public count = 123;
// slot 1
address public owner = msg.sender;
bool public isTrue = true;
uint16 public u16 = 31;
// slot 2
bytes32 private password;
// constants do not use storage
uint public constant someConst = 123;
// slot 3, 4, 5 (one for each array element)
bytes32[3] public data;
struct User {
uint id;
bytes32 password;
}
// slot 6 - length of array
// starting from slot hash(6) - array elements
// slot where array element is stored = keccak256(slot)) + (index * elementSize)
// where slot = 6 and elementSize = 2 (1 (uint) + 1 (bytes32))
User[] private users;
// slot 7 - empty
// entries are stored at hash(key, slot)
// where slot = 7, key = map key
mapping(uint => User) private idToUser;
constructor(bytes32 _password) {
password = _password;
}
function addUser(bytes32 _password) public {
User memory user = User({id: users.length, password: _password});
users.push(user);
idToUser[user.id] = user;
}
function getArrayLocation(
uint slot,
uint index,
uint elementSize
) public pure returns (uint) {
return uint(keccak256(abi.encodePacked(slot))) + (index * elementSize);
}
function getMapLocation(uint slot, uint key) public pure returns (uint) {
return uint(keccak256(abi.encodePacked(key, slot)));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment