diff --git a/README.md b/README.md index 89f816c..5c1f927 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ go run main.go 现在,您可以访问以下API端点: - **设置键值对**: - - 方法: `POST /set?key=&value=` + - 方法: `GET /set?key=&value=` - 示例: `curl "http://localhost:8080/set?key=1&value=HelloWorld"` - **读取键对应的值**: diff --git a/artifacts/build-info/552918350d568d854c4204b36ba87832.json b/artifacts/build-info/552918350d568d854c4204b36ba87832.json deleted file mode 100644 index 27c3ce1..0000000 --- a/artifacts/build-info/552918350d568d854c4204b36ba87832.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"552918350d568d854c4204b36ba87832","_format":"hh-sol-build-info-1","solcVersion":"0.8.0","solcLongVersion":"0.8.0+commit.c7dfd78e","input":{"language":"Solidity","sources":{"contracts/SimpleStorage.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract SimpleStorage {\n // 存储键值对,现在键为 uint256 类型,值为字符串类型\n mapping(uint256 => string) private keyValue;\n\n // 设置字符串类型的值\n function set(uint256 key, string memory value) public {\n keyValue[key] = value;\n }\n\n // 获取字符串类型的值\n function get(uint256 key) public view returns (string memory) {\n return keyValue[key];\n }\n}"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/SimpleStorage.sol":{"ast":{"absolutePath":"contracts/SimpleStorage.sol","exportedSymbols":{"SimpleStorage":[32]},"id":33,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":32,"linearizedBaseContracts":[32],"name":"SimpleStorage","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5,"mutability":"mutable","name":"keyValue","nodeType":"VariableDeclaration","scope":32,"src":"163:43:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":4,"keyType":{"id":2,"name":"uint256","nodeType":"ElementaryTypeName","src":"171:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"163:26:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueType":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"182:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"body":{"id":18,"nodeType":"Block","src":"302:38:0","statements":[{"expression":{"id":16,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12,"name":"keyValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"312:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":14,"indexExpression":{"id":13,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"321:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"312:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"328:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"312:21:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":17,"nodeType":"ExpressionStatement","src":"312:21:0"}]},"functionSelector":"64371977","id":19,"implemented":true,"kind":"function","modifiers":[],"name":"set","nodeType":"FunctionDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":19,"src":"261:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint256","nodeType":"ElementaryTypeName","src":"261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":19,"src":"274:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8,"name":"string","nodeType":"ElementaryTypeName","src":"274:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"260:34:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[],"src":"302:0:0"},"scope":32,"src":"248:92:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":30,"nodeType":"Block","src":"443:37:0","statements":[{"expression":{"baseExpression":{"id":26,"name":"keyValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5,"src":"460:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":28,"indexExpression":{"id":27,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"469:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"460:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":25,"id":29,"nodeType":"Return","src":"453:20:0"}]},"functionSelector":"9507d39a","id":31,"implemented":true,"kind":"function","modifiers":[],"name":"get","nodeType":"FunctionDefinition","parameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":31,"src":"394:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"393:13:0"},"returnParameters":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":31,"src":"428:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":23,"name":"string","nodeType":"ElementaryTypeName","src":"428:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"427:15:0"},"scope":32,"src":"381:99:0","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":33,"src":"57:425:0"}],"src":"32:450:0"},"id":0}},"contracts":{"contracts/SimpleStorage.sol":{"SimpleStorage":{"abi":[{"inputs":[{"internalType":"uint256","name":"key","type":"uint256"}],"name":"get","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"key","type":"uint256"},{"internalType":"string","name":"value","type":"string"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x505 DUP1 PUSH2 0x20 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x64371977 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x9507D39A EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x29F JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x71 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C SWAP2 SWAP1 PUSH2 0x276 JUMP JUMPDEST PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7E SWAP2 SWAP1 PUSH2 0x32C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xAD SWAP3 SWAP2 SWAP1 PUSH2 0x156 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH2 0xD1 SWAP1 PUSH2 0x417 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFD SWAP1 PUSH2 0x417 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x162 SWAP1 PUSH2 0x417 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x184 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1CB JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x19D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1CB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1CB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1AF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1D8 SWAP2 SWAP1 PUSH2 0x1DC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1DD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20C PUSH2 0x207 DUP5 PUSH2 0x37F JUMP JUMPDEST PUSH2 0x34E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22F DUP5 DUP3 DUP6 PUSH2 0x3D5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x258 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x270 DUP2 PUSH2 0x4B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x296 DUP5 DUP3 DUP6 ADD PUSH2 0x261 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C0 DUP6 DUP3 DUP7 ADD PUSH2 0x261 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9 DUP6 DUP3 DUP7 ADD PUSH2 0x237 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE DUP3 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x308 DUP2 DUP6 PUSH2 0x3BA JUMP JUMPDEST SWAP4 POP PUSH2 0x318 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3E4 JUMP JUMPDEST PUSH2 0x321 DUP2 PUSH2 0x4A7 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346 DUP2 DUP5 PUSH2 0x2F3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x375 JUMPI PUSH2 0x374 PUSH2 0x478 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x39A JUMPI PUSH2 0x399 PUSH2 0x478 JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x402 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3E7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x42F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x443 JUMPI PUSH2 0x442 PUSH2 0x449 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4C1 DUP2 PUSH2 0x3CB JUMP JUMPDEST DUP2 EQ PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x7F7833D0A950B507D6B35EBCA1BA LOG1 0x26 0xB3 0xB5 0xEF PUSH23 0x4B1CC224CAC6E695550B1E64736F6C6343000800003300 ","sourceMap":"57:425:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4672:1","statements":[{"body":{"nodeType":"YulBlock","src":"91:260:1","statements":[{"nodeType":"YulAssignment","src":"101:74:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"167:6:1"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"125:41:1"},"nodeType":"YulFunctionCall","src":"125:49:1"}],"functionName":{"name":"allocateMemory","nodeType":"YulIdentifier","src":"110:14:1"},"nodeType":"YulFunctionCall","src":"110:65:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"101:5:1"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"191:5:1"},{"name":"length","nodeType":"YulIdentifier","src":"198:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"184:6:1"},"nodeType":"YulFunctionCall","src":"184:21:1"},"nodeType":"YulExpressionStatement","src":"184:21:1"},{"nodeType":"YulVariableDeclaration","src":"214:27:1","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"229:5:1"},{"kind":"number","nodeType":"YulLiteral","src":"236:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"225:3:1"},"nodeType":"YulFunctionCall","src":"225:16:1"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"218:3:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"279:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"288:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"291:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"281:6:1"},"nodeType":"YulFunctionCall","src":"281:12:1"},"nodeType":"YulExpressionStatement","src":"281:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"260:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"265:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"256:3:1"},"nodeType":"YulFunctionCall","src":"256:16:1"},{"name":"end","nodeType":"YulIdentifier","src":"274:3:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"253:2:1"},"nodeType":"YulFunctionCall","src":"253:25:1"},"nodeType":"YulIf","src":"250:2:1"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"328:3:1"},{"name":"dst","nodeType":"YulIdentifier","src":"333:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"338:6:1"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"304:23:1"},"nodeType":"YulFunctionCall","src":"304:41:1"},"nodeType":"YulExpressionStatement","src":"304:41:1"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"64:3:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"69:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"77:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"85:5:1","type":""}],"src":"7:344:1"},{"body":{"nodeType":"YulBlock","src":"433:211:1","statements":[{"body":{"nodeType":"YulBlock","src":"482:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"491:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"494:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"484:6:1"},"nodeType":"YulFunctionCall","src":"484:12:1"},"nodeType":"YulExpressionStatement","src":"484:12:1"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"461:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"469:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"457:3:1"},"nodeType":"YulFunctionCall","src":"457:17:1"},{"name":"end","nodeType":"YulIdentifier","src":"476:3:1"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"453:3:1"},"nodeType":"YulFunctionCall","src":"453:27:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"446:6:1"},"nodeType":"YulFunctionCall","src":"446:35:1"},"nodeType":"YulIf","src":"443:2:1"},{"nodeType":"YulVariableDeclaration","src":"507:34:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"534:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"521:12:1"},"nodeType":"YulFunctionCall","src":"521:20:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"511:6:1","type":""}]},{"nodeType":"YulAssignment","src":"550:88:1","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"611:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"619:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"607:3:1"},"nodeType":"YulFunctionCall","src":"607:17:1"},{"name":"length","nodeType":"YulIdentifier","src":"626:6:1"},{"name":"end","nodeType":"YulIdentifier","src":"634:3:1"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"559:47:1"},"nodeType":"YulFunctionCall","src":"559:79:1"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"550:5:1"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"411:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"419:3:1","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"427:5:1","type":""}],"src":"371:273:1"},{"body":{"nodeType":"YulBlock","src":"702:87:1","statements":[{"nodeType":"YulAssignment","src":"712:29:1","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"734:6:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"721:12:1"},"nodeType":"YulFunctionCall","src":"721:20:1"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"712:5:1"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"777:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"750:26:1"},"nodeType":"YulFunctionCall","src":"750:33:1"},"nodeType":"YulExpressionStatement","src":"750:33:1"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"680:6:1","type":""},{"name":"end","nodeType":"YulTypedName","src":"688:3:1","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"696:5:1","type":""}],"src":"650:139:1"},{"body":{"nodeType":"YulBlock","src":"861:196:1","statements":[{"body":{"nodeType":"YulBlock","src":"907:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"919:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"909:6:1"},"nodeType":"YulFunctionCall","src":"909:12:1"},"nodeType":"YulExpressionStatement","src":"909:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"882:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"891:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"878:3:1"},"nodeType":"YulFunctionCall","src":"878:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"903:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"874:3:1"},"nodeType":"YulFunctionCall","src":"874:32:1"},"nodeType":"YulIf","src":"871:2:1"},{"nodeType":"YulBlock","src":"933:117:1","statements":[{"nodeType":"YulVariableDeclaration","src":"948:15:1","value":{"kind":"number","nodeType":"YulLiteral","src":"962:1:1","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"952:6:1","type":""}]},{"nodeType":"YulAssignment","src":"977:63:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1012:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1023:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1008:3:1"},"nodeType":"YulFunctionCall","src":"1008:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1032:7:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"987:20:1"},"nodeType":"YulFunctionCall","src":"987:53:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"977:6:1"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"831:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"842:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"854:6:1","type":""}],"src":"795:262:1"},{"body":{"nodeType":"YulBlock","src":"1156:427:1","statements":[{"body":{"nodeType":"YulBlock","src":"1202:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1211:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1214:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1204:6:1"},"nodeType":"YulFunctionCall","src":"1204:12:1"},"nodeType":"YulExpressionStatement","src":"1204:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1177:7:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"1186:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1173:3:1"},"nodeType":"YulFunctionCall","src":"1173:23:1"},{"kind":"number","nodeType":"YulLiteral","src":"1198:2:1","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1169:3:1"},"nodeType":"YulFunctionCall","src":"1169:32:1"},"nodeType":"YulIf","src":"1166:2:1"},{"nodeType":"YulBlock","src":"1228:117:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1243:15:1","value":{"kind":"number","nodeType":"YulLiteral","src":"1257:1:1","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1247:6:1","type":""}]},{"nodeType":"YulAssignment","src":"1272:63:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1307:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1318:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1303:3:1"},"nodeType":"YulFunctionCall","src":"1303:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1327:7:1"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1282:20:1"},"nodeType":"YulFunctionCall","src":"1282:53:1"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1272:6:1"}]}]},{"nodeType":"YulBlock","src":"1355:221:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1370:46:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1401:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"1412:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1397:3:1"},"nodeType":"YulFunctionCall","src":"1397:18:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1384:12:1"},"nodeType":"YulFunctionCall","src":"1384:32:1"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1374:6:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"1463:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1472:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1475:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1465:6:1"},"nodeType":"YulFunctionCall","src":"1465:12:1"},"nodeType":"YulExpressionStatement","src":"1465:12:1"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1435:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"1443:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:1"},"nodeType":"YulFunctionCall","src":"1432:30:1"},"nodeType":"YulIf","src":"1429:2:1"},{"nodeType":"YulAssignment","src":"1493:73:1","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1538:9:1"},{"name":"offset","nodeType":"YulIdentifier","src":"1549:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1534:3:1"},"nodeType":"YulFunctionCall","src":"1534:22:1"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1558:7:1"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1503:30:1"},"nodeType":"YulFunctionCall","src":"1503:63:1"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1493:6:1"}]}]}]},"name":"abi_decode_tuple_t_uint256t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1118:9:1","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1129:7:1","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1141:6:1","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1149:6:1","type":""}],"src":"1063:520:1"},{"body":{"nodeType":"YulBlock","src":"1681:272:1","statements":[{"nodeType":"YulVariableDeclaration","src":"1691:53:1","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1738:5:1"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1705:32:1"},"nodeType":"YulFunctionCall","src":"1705:39:1"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1695:6:1","type":""}]},{"nodeType":"YulAssignment","src":"1753:78:1","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1819:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"1824:6:1"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1760:58:1"},"nodeType":"YulFunctionCall","src":"1760:71:1"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1866:5:1"},{"kind":"number","nodeType":"YulLiteral","src":"1873:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1862:3:1"},"nodeType":"YulFunctionCall","src":"1862:16:1"},{"name":"pos","nodeType":"YulIdentifier","src":"1880:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"1885:6:1"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1840:21:1"},"nodeType":"YulFunctionCall","src":"1840:52:1"},"nodeType":"YulExpressionStatement","src":"1840:52:1"},{"nodeType":"YulAssignment","src":"1901:46:1","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1912:3:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1939:6:1"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1917:21:1"},"nodeType":"YulFunctionCall","src":"1917:29:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1908:3:1"},"nodeType":"YulFunctionCall","src":"1908:39:1"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1901:3:1"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1662:5:1","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1669:3:1","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1677:3:1","type":""}],"src":"1589:364:1"},{"body":{"nodeType":"YulBlock","src":"2077:195:1","statements":[{"nodeType":"YulAssignment","src":"2087:26:1","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2099:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"2110:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2095:3:1"},"nodeType":"YulFunctionCall","src":"2095:18:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2087:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2134:9:1"},{"kind":"number","nodeType":"YulLiteral","src":"2145:1:1","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2130:3:1"},"nodeType":"YulFunctionCall","src":"2130:17:1"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2153:4:1"},{"name":"headStart","nodeType":"YulIdentifier","src":"2159:9:1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2149:3:1"},"nodeType":"YulFunctionCall","src":"2149:20:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2123:6:1"},"nodeType":"YulFunctionCall","src":"2123:47:1"},"nodeType":"YulExpressionStatement","src":"2123:47:1"},{"nodeType":"YulAssignment","src":"2179:86:1","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2251:6:1"},{"name":"tail","nodeType":"YulIdentifier","src":"2260:4:1"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2187:63:1"},"nodeType":"YulFunctionCall","src":"2187:78:1"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2179:4:1"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2049:9:1","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2061:6:1","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2072:4:1","type":""}],"src":"1959:313:1"},{"body":{"nodeType":"YulBlock","src":"2318:243:1","statements":[{"nodeType":"YulAssignment","src":"2328:19:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2344:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2338:5:1"},"nodeType":"YulFunctionCall","src":"2338:9:1"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2328:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"2356:35:1","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2378:6:1"},{"name":"size","nodeType":"YulIdentifier","src":"2386:4:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2374:3:1"},"nodeType":"YulFunctionCall","src":"2374:17:1"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2360:10:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"2502:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2504:16:1"},"nodeType":"YulFunctionCall","src":"2504:18:1"},"nodeType":"YulExpressionStatement","src":"2504:18:1"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2445:10:1"},{"kind":"number","nodeType":"YulLiteral","src":"2457:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2442:2:1"},"nodeType":"YulFunctionCall","src":"2442:34:1"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2481:10:1"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2493:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2478:2:1"},"nodeType":"YulFunctionCall","src":"2478:22:1"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2439:2:1"},"nodeType":"YulFunctionCall","src":"2439:62:1"},"nodeType":"YulIf","src":"2436:2:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2540:2:1","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2544:10:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2533:6:1"},"nodeType":"YulFunctionCall","src":"2533:22:1"},"nodeType":"YulExpressionStatement","src":"2533:22:1"}]},"name":"allocateMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"2302:4:1","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2311:6:1","type":""}],"src":"2278:283:1"},{"body":{"nodeType":"YulBlock","src":"2634:265:1","statements":[{"body":{"nodeType":"YulBlock","src":"2739:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2741:16:1"},"nodeType":"YulFunctionCall","src":"2741:18:1"},"nodeType":"YulExpressionStatement","src":"2741:18:1"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2711:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2719:18:1","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2708:2:1"},"nodeType":"YulFunctionCall","src":"2708:30:1"},"nodeType":"YulIf","src":"2705:2:1"},{"nodeType":"YulAssignment","src":"2791:41:1","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2807:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"2815:4:1","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2803:3:1"},"nodeType":"YulFunctionCall","src":"2803:17:1"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2826:4:1","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2822:3:1"},"nodeType":"YulFunctionCall","src":"2822:9:1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2799:3:1"},"nodeType":"YulFunctionCall","src":"2799:33:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2791:4:1"}]},{"nodeType":"YulAssignment","src":"2869:23:1","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2881:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"2887:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2877:3:1"},"nodeType":"YulFunctionCall","src":"2877:15:1"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2869:4:1"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2618:6:1","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2629:4:1","type":""}],"src":"2567:332:1"},{"body":{"nodeType":"YulBlock","src":"2964:40:1","statements":[{"nodeType":"YulAssignment","src":"2975:22:1","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2991:5:1"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2985:5:1"},"nodeType":"YulFunctionCall","src":"2985:12:1"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2975:6:1"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2947:5:1","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2957:6:1","type":""}],"src":"2905:99:1"},{"body":{"nodeType":"YulBlock","src":"3106:73:1","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3123:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"3128:6:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3116:6:1"},"nodeType":"YulFunctionCall","src":"3116:19:1"},"nodeType":"YulExpressionStatement","src":"3116:19:1"},{"nodeType":"YulAssignment","src":"3144:29:1","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3163:3:1"},{"kind":"number","nodeType":"YulLiteral","src":"3168:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3159:3:1"},"nodeType":"YulFunctionCall","src":"3159:14:1"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3144:11:1"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3078:3:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"3083:6:1","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"3094:11:1","type":""}],"src":"3010:169:1"},{"body":{"nodeType":"YulBlock","src":"3230:32:1","statements":[{"nodeType":"YulAssignment","src":"3240:16:1","value":{"name":"value","nodeType":"YulIdentifier","src":"3251:5:1"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3240:7:1"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3212:5:1","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3222:7:1","type":""}],"src":"3185:77:1"},{"body":{"nodeType":"YulBlock","src":"3319:103:1","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3342:3:1"},{"name":"src","nodeType":"YulIdentifier","src":"3347:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"3352:6:1"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3329:12:1"},"nodeType":"YulFunctionCall","src":"3329:30:1"},"nodeType":"YulExpressionStatement","src":"3329:30:1"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3400:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"3405:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3396:3:1"},"nodeType":"YulFunctionCall","src":"3396:16:1"},{"kind":"number","nodeType":"YulLiteral","src":"3414:1:1","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3389:6:1"},"nodeType":"YulFunctionCall","src":"3389:27:1"},"nodeType":"YulExpressionStatement","src":"3389:27:1"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3301:3:1","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3306:3:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"3311:6:1","type":""}],"src":"3268:154:1"},{"body":{"nodeType":"YulBlock","src":"3477:258:1","statements":[{"nodeType":"YulVariableDeclaration","src":"3487:10:1","value":{"kind":"number","nodeType":"YulLiteral","src":"3496:1:1","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3491:1:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"3556:63:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3581:3:1"},{"name":"i","nodeType":"YulIdentifier","src":"3586:1:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3577:3:1"},"nodeType":"YulFunctionCall","src":"3577:11:1"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3600:3:1"},{"name":"i","nodeType":"YulIdentifier","src":"3605:1:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:1"},"nodeType":"YulFunctionCall","src":"3596:11:1"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3590:5:1"},"nodeType":"YulFunctionCall","src":"3590:18:1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3570:6:1"},"nodeType":"YulFunctionCall","src":"3570:39:1"},"nodeType":"YulExpressionStatement","src":"3570:39:1"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3517:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"3520:6:1"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3514:2:1"},"nodeType":"YulFunctionCall","src":"3514:13:1"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3528:19:1","statements":[{"nodeType":"YulAssignment","src":"3530:15:1","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3539:1:1"},{"kind":"number","nodeType":"YulLiteral","src":"3542:2:1","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3535:3:1"},"nodeType":"YulFunctionCall","src":"3535:10:1"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3530:1:1"}]}]},"pre":{"nodeType":"YulBlock","src":"3510:3:1","statements":[]},"src":"3506:113:1"},{"body":{"nodeType":"YulBlock","src":"3653:76:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3703:3:1"},{"name":"length","nodeType":"YulIdentifier","src":"3708:6:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3699:3:1"},"nodeType":"YulFunctionCall","src":"3699:16:1"},{"kind":"number","nodeType":"YulLiteral","src":"3717:1:1","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3692:6:1"},"nodeType":"YulFunctionCall","src":"3692:27:1"},"nodeType":"YulExpressionStatement","src":"3692:27:1"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3634:1:1"},{"name":"length","nodeType":"YulIdentifier","src":"3637:6:1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3631:2:1"},"nodeType":"YulFunctionCall","src":"3631:13:1"},"nodeType":"YulIf","src":"3628:2:1"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3459:3:1","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3464:3:1","type":""},{"name":"length","nodeType":"YulTypedName","src":"3469:6:1","type":""}],"src":"3428:307:1"},{"body":{"nodeType":"YulBlock","src":"3792:269:1","statements":[{"nodeType":"YulAssignment","src":"3802:22:1","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3816:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"3822:1:1","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3812:3:1"},"nodeType":"YulFunctionCall","src":"3812:12:1"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3802:6:1"}]},{"nodeType":"YulVariableDeclaration","src":"3833:38:1","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3863:4:1"},{"kind":"number","nodeType":"YulLiteral","src":"3869:1:1","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3859:3:1"},"nodeType":"YulFunctionCall","src":"3859:12:1"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3837:18:1","type":""}]},{"body":{"nodeType":"YulBlock","src":"3910:51:1","statements":[{"nodeType":"YulAssignment","src":"3924:27:1","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3938:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"3946:4:1","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3934:3:1"},"nodeType":"YulFunctionCall","src":"3934:17:1"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3924:6:1"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3890:18:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3883:6:1"},"nodeType":"YulFunctionCall","src":"3883:26:1"},"nodeType":"YulIf","src":"3880:2:1"},{"body":{"nodeType":"YulBlock","src":"4013:42:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4027:16:1"},"nodeType":"YulFunctionCall","src":"4027:18:1"},"nodeType":"YulExpressionStatement","src":"4027:18:1"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3977:18:1"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4000:6:1"},{"kind":"number","nodeType":"YulLiteral","src":"4008:2:1","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3997:2:1"},"nodeType":"YulFunctionCall","src":"3997:14:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3974:2:1"},"nodeType":"YulFunctionCall","src":"3974:38:1"},"nodeType":"YulIf","src":"3971:2:1"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3776:4:1","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3785:6:1","type":""}],"src":"3741:320:1"},{"body":{"nodeType":"YulBlock","src":"4095:152:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4112:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4115:77:1","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4105:6:1"},"nodeType":"YulFunctionCall","src":"4105:88:1"},"nodeType":"YulExpressionStatement","src":"4105:88:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4209:1:1","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4212:4:1","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4202:6:1"},"nodeType":"YulFunctionCall","src":"4202:15:1"},"nodeType":"YulExpressionStatement","src":"4202:15:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4233:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4236:4:1","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4226:6:1"},"nodeType":"YulFunctionCall","src":"4226:15:1"},"nodeType":"YulExpressionStatement","src":"4226:15:1"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"4067:180:1"},{"body":{"nodeType":"YulBlock","src":"4281:152:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4301:77:1","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4291:6:1"},"nodeType":"YulFunctionCall","src":"4291:88:1"},"nodeType":"YulExpressionStatement","src":"4291:88:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4395:1:1","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4398:4:1","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4388:6:1"},"nodeType":"YulFunctionCall","src":"4388:15:1"},"nodeType":"YulExpressionStatement","src":"4388:15:1"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4419:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4422:4:1","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4412:6:1"},"nodeType":"YulFunctionCall","src":"4412:15:1"},"nodeType":"YulExpressionStatement","src":"4412:15:1"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4253:180:1"},{"body":{"nodeType":"YulBlock","src":"4487:54:1","statements":[{"nodeType":"YulAssignment","src":"4497:38:1","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4515:5:1"},{"kind":"number","nodeType":"YulLiteral","src":"4522:2:1","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4511:3:1"},"nodeType":"YulFunctionCall","src":"4511:14:1"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4531:2:1","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4527:3:1"},"nodeType":"YulFunctionCall","src":"4527:7:1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4507:3:1"},"nodeType":"YulFunctionCall","src":"4507:28:1"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4497:6:1"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4470:5:1","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"4480:6:1","type":""}],"src":"4439:102:1"},{"body":{"nodeType":"YulBlock","src":"4590:79:1","statements":[{"body":{"nodeType":"YulBlock","src":"4647:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4656:1:1","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4659:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4649:6:1"},"nodeType":"YulFunctionCall","src":"4649:12:1"},"nodeType":"YulExpressionStatement","src":"4649:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4613:5:1"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4638:5:1"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4620:17:1"},"nodeType":"YulFunctionCall","src":"4620:24:1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4610:2:1"},"nodeType":"YulFunctionCall","src":"4610:35:1"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4603:6:1"},"nodeType":"YulFunctionCall","src":"4603:43:1"},"nodeType":"YulIf","src":"4600:2:1"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4583:5:1","type":""}],"src":"4547:122:1"}]},"contents":"{\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocateMemory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\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_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\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_decode_tuple_t_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\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 := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocateMemory(size) -> memPtr {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n // round up\n size := and(add(length, 0x1f), not(0x1f))\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x64371977 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x9507D39A EQ PUSH2 0x57 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x29F JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x71 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C SWAP2 SWAP1 PUSH2 0x276 JUMP JUMPDEST PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7E SWAP2 SWAP1 PUSH2 0x32C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xAD SWAP3 SWAP2 SWAP1 PUSH2 0x156 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH2 0xD1 SWAP1 PUSH2 0x417 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xFD SWAP1 PUSH2 0x417 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x162 SWAP1 PUSH2 0x417 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x184 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1CB JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x19D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1CB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1CB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1AF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1D8 SWAP2 SWAP1 PUSH2 0x1DC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1DD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20C PUSH2 0x207 DUP5 PUSH2 0x37F JUMP JUMPDEST PUSH2 0x34E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22F DUP5 DUP3 DUP6 PUSH2 0x3D5 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x258 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x270 DUP2 PUSH2 0x4B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x296 DUP5 DUP3 DUP6 ADD PUSH2 0x261 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C0 DUP6 DUP3 DUP7 ADD PUSH2 0x261 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9 DUP6 DUP3 DUP7 ADD PUSH2 0x237 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE DUP3 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x308 DUP2 DUP6 PUSH2 0x3BA JUMP JUMPDEST SWAP4 POP PUSH2 0x318 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3E4 JUMP JUMPDEST PUSH2 0x321 DUP2 PUSH2 0x4A7 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346 DUP2 DUP5 PUSH2 0x2F3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x375 JUMPI PUSH2 0x374 PUSH2 0x478 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x39A JUMPI PUSH2 0x399 PUSH2 0x478 JUMP JUMPDEST JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x402 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3E7 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x42F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x443 JUMPI PUSH2 0x442 PUSH2 0x449 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4C1 DUP2 PUSH2 0x3CB JUMP JUMPDEST DUP2 EQ PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x7F7833D0A950B507D6B35EBCA1BA LOG1 0x26 0xB3 0xB5 0xEF PUSH23 0x4B1CC224CAC6E695550B1E64736F6C6343000800003300 ","sourceMap":"57:425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;248:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;381:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;248:92;328:5;312:8;:13;321:3;312:13;;;;;;;;;;;:21;;;;;;;;;;;;:::i;:::-;;248:92;;:::o;381:99::-;428:13;460:8;:13;469:3;460:13;;;;;;;;;;;453:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;381:99;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:344:1:-;;110:65;125:49;167:6;125:49;:::i;:::-;110:65;:::i;:::-;101:74;;198:6;191:5;184:21;236:4;229:5;225:16;274:3;265:6;260:3;256:16;253:25;250:2;;;291:1;288;281:12;250:2;304:41;338:6;333:3;328;304:41;:::i;:::-;91:260;;;;;;:::o;371:273::-;;476:3;469:4;461:6;457:17;453:27;443:2;;494:1;491;484:12;443:2;534:6;521:20;559:79;634:3;626:6;619:4;611:6;607:17;559:79;:::i;:::-;550:88;;433:211;;;;;:::o;650:139::-;;734:6;721:20;712:29;;750:33;777:5;750:33;:::i;:::-;702:87;;;;:::o;795:262::-;;903:2;891:9;882:7;878:23;874:32;871:2;;;919:1;916;909:12;871:2;962:1;987:53;1032:7;1023:6;1012:9;1008:22;987:53;:::i;:::-;977:63;;933:117;861:196;;;;:::o;1063:520::-;;;1198:2;1186:9;1177:7;1173:23;1169:32;1166:2;;;1214:1;1211;1204:12;1166:2;1257:1;1282:53;1327:7;1318:6;1307:9;1303:22;1282:53;:::i;:::-;1272:63;;1228:117;1412:2;1401:9;1397:18;1384:32;1443:18;1435:6;1432:30;1429:2;;;1475:1;1472;1465:12;1429:2;1503:63;1558:7;1549:6;1538:9;1534:22;1503:63;:::i;:::-;1493:73;;1355:221;1156:427;;;;;:::o;1589:364::-;;1705:39;1738:5;1705:39;:::i;:::-;1760:71;1824:6;1819:3;1760:71;:::i;:::-;1753:78;;1840:52;1885:6;1880:3;1873:4;1866:5;1862:16;1840:52;:::i;:::-;1917:29;1939:6;1917:29;:::i;:::-;1912:3;1908:39;1901:46;;1681:272;;;;;:::o;1959:313::-;;2110:2;2099:9;2095:18;2087:26;;2159:9;2153:4;2149:20;2145:1;2134:9;2130:17;2123:47;2187:78;2260:4;2251:6;2187:78;:::i;:::-;2179:86;;2077:195;;;;:::o;2278:283::-;;2344:2;2338:9;2328:19;;2386:4;2378:6;2374:17;2493:6;2481:10;2478:22;2457:18;2445:10;2442:34;2439:62;2436:2;;;2504:18;;:::i;:::-;2436:2;2544:10;2540:2;2533:22;2318:243;;;;:::o;2567:332::-;;2719:18;2711:6;2708:30;2705:2;;;2741:18;;:::i;:::-;2705:2;2826:4;2822:9;2815:4;2807:6;2803:17;2799:33;2791:41;;2887:4;2881;2877:15;2869:23;;2634:265;;;:::o;2905:99::-;;2991:5;2985:12;2975:22;;2964:40;;;:::o;3010:169::-;;3128:6;3123:3;3116:19;3168:4;3163:3;3159:14;3144:29;;3106:73;;;;:::o;3185:77::-;;3251:5;3240:16;;3230:32;;;:::o;3268:154::-;3352:6;3347:3;3342;3329:30;3414:1;3405:6;3400:3;3396:16;3389:27;3319:103;;;:::o;3428:307::-;3496:1;3506:113;3520:6;3517:1;3514:13;3506:113;;;3605:1;3600:3;3596:11;3590:18;3586:1;3581:3;3577:11;3570:39;3542:2;3539:1;3535:10;3530:15;;3506:113;;;3637:6;3634:1;3631:13;3628:2;;;3717:1;3708:6;3703:3;3699:16;3692:27;3628:2;3477:258;;;;:::o;3741:320::-;;3822:1;3816:4;3812:12;3802:22;;3869:1;3863:4;3859:12;3890:18;3880:2;;3946:4;3938:6;3934:17;3924:27;;3880:2;4008;4000:6;3997:14;3977:18;3974:38;3971:2;;;4027:18;;:::i;:::-;3971:2;3792:269;;;;:::o;4067:180::-;4115:77;4112:1;4105:88;4212:4;4209:1;4202:15;4236:4;4233:1;4226:15;4253:180;4301:77;4298:1;4291:88;4398:4;4395:1;4388:15;4422:4;4419:1;4412:15;4439:102;;4531:2;4527:7;4522:2;4515:5;4511:14;4507:28;4497:38;;4487:54;;;:::o;4547:122::-;4620:24;4638:5;4620:24;:::i;:::-;4613:5;4610:35;4600:2;;4659:1;4656;4649:12;4600:2;4590:79;:::o"},"methodIdentifiers":{"get(uint256)":"9507d39a","set(uint256,string)":"64371977"}},"metadata":"{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SimpleStorage.sol\":\"SimpleStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/SimpleStorage.sol\":{\"keccak256\":\"0x538c365e9d26da6fe136910a4b8762c88bc02d4a5a13bfe3a403026e62d9b077\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c007e427962836023d7d57877884507568f802233e0bee75028b88786c9486b1\",\"dweb:/ipfs/QmbJMNQQ1LFoes6N45dQz1hY8zFhhYnHp7cEWLwrpDPrrA\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/contracts/SimpleStorage.sol/SimpleStorage.dbg.json b/artifacts/contracts/SimpleStorage.sol/SimpleStorage.dbg.json index ca038d5..b8d3316 100644 --- a/artifacts/contracts/SimpleStorage.sol/SimpleStorage.dbg.json +++ b/artifacts/contracts/SimpleStorage.sol/SimpleStorage.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "..\\..\\build-info\\552918350d568d854c4204b36ba87832.json" + "buildInfo": "..\\..\\build-info\\91b748183a07fa13d3d4b0e76244d4ad.json" } diff --git a/artifacts/contracts/SimpleStorage.sol/SimpleStorage.json b/artifacts/contracts/SimpleStorage.sol/SimpleStorage.json index 52d1de1..73ea131 100644 --- a/artifacts/contracts/SimpleStorage.sol/SimpleStorage.json +++ b/artifacts/contracts/SimpleStorage.sol/SimpleStorage.json @@ -41,8 +41,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212206d7f7833d0a950b507d6b35ebca1baa126b3b5ef764b1cc224cac6e695550b1e64736f6c63430008000033", + "bytecode": "0x608060405234801561001057600080fd5b50610505806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212209a91262e849c6fd96aafc8ac34828e0be593bf3f8ec7cc5c80dcfe2ca63cb00e64736f6c63430008000033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063643719771461003b5780639507d39a14610057575b600080fd5b6100556004803603810190610050919061029f565b610087565b005b610071600480360381019061006c9190610276565b6100b2565b60405161007e919061032c565b60405180910390f35b8060008084815260200190815260200160002090805190602001906100ad929190610156565b505050565b606060008083815260200190815260200160002080546100d190610417565b80601f01602080910402602001604051908101604052809291908181526020018280546100fd90610417565b801561014a5780601f1061011f5761010080835404028352916020019161014a565b820191906000526020600020905b81548152906001019060200180831161012d57829003601f168201915b50505050509050919050565b82805461016290610417565b90600052602060002090601f01602090048101928261018457600085556101cb565b82601f1061019d57805160ff19168380011785556101cb565b828001600101855582156101cb579182015b828111156101ca5782518255916020019190600101906101af565b5b5090506101d891906101dc565b5090565b5b808211156101f55760008160009055506001016101dd565b5090565b600061020c6102078461037f565b61034e565b90508281526020810184848401111561022457600080fd5b61022f8482856103d5565b509392505050565b600082601f83011261024857600080fd5b81356102588482602086016101f9565b91505092915050565b600081359050610270816104b8565b92915050565b60006020828403121561028857600080fd5b600061029684828501610261565b91505092915050565b600080604083850312156102b257600080fd5b60006102c085828601610261565b925050602083013567ffffffffffffffff8111156102dd57600080fd5b6102e985828601610237565b9150509250929050565b60006102fe826103af565b61030881856103ba565b93506103188185602086016103e4565b610321816104a7565b840191505092915050565b6000602082019050818103600083015261034681846102f3565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561037557610374610478565b5b8060405250919050565b600067ffffffffffffffff82111561039a57610399610478565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b82818337600083830152505050565b60005b838110156104025780820151818401526020810190506103e7565b83811115610411576000848401525b50505050565b6000600282049050600182168061042f57607f821691505b6020821081141561044357610442610449565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6104c1816103cb565b81146104cc57600080fd5b5056fea26469706673582212209a91262e849c6fd96aafc8ac34828e0be593bf3f8ec7cc5c80dcfe2ca63cb00e64736f6c63430008000033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 4a9c2c3..235c22f 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -35,6 +35,41 @@ "artifacts": [ "SimpleStorage" ] + }, + "D:\\202505\\block\\contracts\\SimpleStorage.sol": { + "lastModificationDate": 1747806005792, + "contentHash": "a252f90e96ba8ded10bc56e5f9b7d50d", + "sourceName": "contracts/SimpleStorage.sol", + "solcConfig": { + "version": "0.8.0", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "SimpleStorage" + ] } } } diff --git a/main.go b/main.go index 1faff9b..25ce4bb 100644 --- a/main.go +++ b/main.go @@ -25,7 +25,9 @@ type SimpleStorage struct { contract *bind.BoundContract abi abi.ABI } - +type Config struct { + PrivateKey string `json:"privateKey"` +} type Response struct { Msg string `json:"msg"` Data interface{} `json:"data"` @@ -82,10 +84,6 @@ var ( privateKey string ) -type Config struct { - PrivateKey string `json:"privateKey"` -} - func loadConfig(configPath string) (*Config, error) { data, err := ioutil.ReadFile(configPath) if err != nil { @@ -101,10 +99,24 @@ func loadConfig(configPath string) (*Config, error) { func setHandler(client *ethclient.Client, storage *SimpleStorage, privateKeyECDSA *ecdsa.PrivateKey) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - keyStr := r.URL.Query().Get("key") - value := r.URL.Query().Get("value") + // 确保是 POST 请求 + if r.Method != http.MethodPost { + writeResponse(w, &Response{Msg: "error", Data: "只接受 POST 请求"}) + return + } - keyUint, err := strconv.ParseUint(keyStr, 10, 64) + // 解析 JSON 请求体 + var requestData struct { + Key string `json:"key"` + Value string `json:"value"` + } + + if err := json.NewDecoder(r.Body).Decode(&requestData); err != nil { + writeResponse(w, &Response{Msg: "error", Data: "无效的请求数据"}) + return + } + + keyUint, err := strconv.ParseUint(requestData.Key, 10, 64) if err != nil { writeResponse(w, &Response{Msg: "error", Data: "无效的键值类型,必须为整数"}) return @@ -125,16 +137,17 @@ func setHandler(client *ethclient.Client, storage *SimpleStorage, privateKeyECDS bigKey := big.NewInt(0).SetUint64(keyUint) - tx, err := storage.Transact(auth, "set", bigKey, value) + tx, err := storage.Transact(auth, "set", bigKey, requestData.Value) if err != nil { writeResponse(w, &Response{Msg: "error", Data: fmt.Sprintf("设置值失败: %v", err)}) return } + // 控制台日志打印 + log.Printf("成功发起交易,Hash: %s,键: %d,值: %s", tx.Hash().Hex(), keyUint, requestData.Value) writeResponse(w, &Response{Msg: "ok", Data: tx.Hash().Hex()}) } } - func getHandler(storage *SimpleStorage) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { keyStr := r.URL.Query().Get("key") @@ -142,7 +155,6 @@ func getHandler(storage *SimpleStorage) http.HandlerFunc { writeResponse(w, &Response{Msg: "error", Data: "缺少键值"}) return } - keyUint, err := strconv.ParseUint(keyStr, 10, 64) if err != nil { writeResponse(w, &Response{Msg: "error", Data: "无效的键值类型,必须为整数"}) diff --git a/package-lock.json b/package-lock.json index 8a1c7c1..10d2f01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2291,6 +2291,7 @@ "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", "dev": true, "hasInstallScript": true, + "optional": true, "dependencies": { "node-gyp-build": "4.3.0" }, @@ -2303,6 +2304,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", "dev": true, + "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js",