diff --git a/template/benchmark-sample/build/contracts/BenchmarkSample.json b/template/benchmark-sample/build/contracts/Sample.json similarity index 64% rename from template/benchmark-sample/build/contracts/BenchmarkSample.json rename to template/benchmark-sample/build/contracts/Sample.json index cc97b8e7..0c2aeea2 100644 --- a/template/benchmark-sample/build/contracts/BenchmarkSample.json +++ b/template/benchmark-sample/build/contracts/Sample.json @@ -1,11 +1,17 @@ { - "contractName": "BenchmarkSample", + "contractName": "Sample", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, + { + "anonymous": false, + "inputs": [], + "name": "SampleEvent", + "type": "event" + }, { "inputs": [ { @@ -57,11 +63,75 @@ ], "stateMutability": "view", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "fibonacci", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "odd_product", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "triangle_number", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "emit_sample_event", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"get_some_num\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_some_str\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"new_num\",\"type\":\"int256\"}],\"name\":\"set_some_num\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"new_s\",\"type\":\"string\"}],\"name\":\"set_some_str\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/benchmark-sample.sol\":\"BenchmarkSample\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/benchmark-sample.sol\":{\"keccak256\":\"0x80ed061a85c04ae3ab6f40e963ff04c522a4580fc66cf58a2f61adfddeca9f18\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dadabb39f2d42b944ce269a508aaa5813eef9b8e928dd6ca2381f72060ae21b0\",\"dweb:/ipfs/QmTs76icQqwKyPuhfLHu9B4NvkVSfVk98F3TG1kKQRMjbE\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f44656661756c740000000000000000000000000000000000000000000000000081525060009081620000589190620002e1565b506000600181905550620003c8565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620000e957607f821691505b602082108103620000ff57620000fe620000a1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200012a565b6200017586836200012a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620001c2620001bc620001b6846200018d565b62000197565b6200018d565b9050919050565b6000819050919050565b620001de83620001a1565b620001f6620001ed82620001c9565b84845462000137565b825550505050565b600090565b6200020d620001fe565b6200021a818484620001d3565b505050565b5b8181101562000242576200023660008262000203565b60018101905062000220565b5050565b601f82111562000291576200025b8162000105565b62000266846200011a565b8101602085101562000276578190505b6200028e62000285856200011a565b8301826200021f565b50505b505050565b600082821c905092915050565b6000620002b66000198460080262000296565b1980831691505092915050565b6000620002d18383620002a3565b9150826002028217905092915050565b620002ec8262000067565b67ffffffffffffffff81111562000308576200030762000072565b5b620003148254620000d0565b6200032182828562000246565b600060209050601f83116001811462000359576000841562000344578287015190505b620003508582620002c3565b865550620003c0565b601f198416620003698662000105565b60005b8281101562000393578489015182556001820191506020850194506020810190506200036c565b86831015620003b35784890151620003af601f891682620002a3565b8355505b6001600288020188555050505b505050505050565b61076d80620003d86000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630583a02c146100515780635e9c155e1461006d5780639ac1762f1461008b578063b40a136b146100a7575b600080fd5b61006b600480360381019061006691906102d8565b6100c5565b005b6100756100d8565b60405161008291906103a0565b60405180910390f35b6100a560048036038101906100a091906103f8565b61016a565b005b6100af610174565b6040516100bc9190610434565b60405180910390f35b80600090816100d49190610665565b5050565b6060600080546100e79061047e565b80601f01602080910402602001604051908101604052809291908181526020018280546101139061047e565b80156101605780601f1061013557610100808354040283529160200191610160565b820191906000526020600020905b81548152906001019060200180831161014357829003601f168201915b5050505050905090565b8060018190555050565b6000600154905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6101e58261019c565b810181811067ffffffffffffffff82111715610204576102036101ad565b5b80604052505050565b600061021761017e565b905061022382826101dc565b919050565b600067ffffffffffffffff821115610243576102426101ad565b5b61024c8261019c565b9050602081019050919050565b82818337600083830152505050565b600061027b61027684610228565b61020d565b90508281526020810184848401111561029757610296610197565b5b6102a2848285610259565b509392505050565b600082601f8301126102bf576102be610192565b5b81356102cf848260208601610268565b91505092915050565b6000602082840312156102ee576102ed610188565b5b600082013567ffffffffffffffff81111561030c5761030b61018d565b5b610318848285016102aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561035b578082015181840152602081019050610340565b60008484015250505050565b600061037282610321565b61037c818561032c565b935061038c81856020860161033d565b6103958161019c565b840191505092915050565b600060208201905081810360008301526103ba8184610367565b905092915050565b6000819050919050565b6103d5816103c2565b81146103e057600080fd5b50565b6000813590506103f2816103cc565b92915050565b60006020828403121561040e5761040d610188565b5b600061041c848285016103e3565b91505092915050565b61042e816103c2565b82525050565b60006020820190506104496000830184610425565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049657607f821691505b6020821081036104a9576104a861044f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104d4565b61051b86836104d4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061056261055d61055884610533565b61053d565b610533565b9050919050565b6000819050919050565b61057c83610547565b61059061058882610569565b8484546104e1565b825550505050565b600090565b6105a5610598565b6105b0818484610573565b505050565b5b818110156105d4576105c960008261059d565b6001810190506105b6565b5050565b601f821115610619576105ea816104af565b6105f3846104c4565b81016020851015610602578190505b61061661060e856104c4565b8301826105b5565b50505b505050565b600082821c905092915050565b600061063c6000198460080261061e565b1980831691505092915050565b6000610655838361062b565b9150826002028217905092915050565b61066e82610321565b67ffffffffffffffff811115610687576106866101ad565b5b610691825461047e565b61069c8282856105d8565b600060209050601f8311600181146106cf57600084156106bd578287015190505b6106c78582610649565b86555061072f565b601f1984166106dd866104af565b60005b82811015610705578489015182556001820191506020850194506020810190506106e0565b86831015610722578489015161071e601f89168261062b565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220b3ece04e05a044a341061756511612dee475bc3886451dd355446efaf890d6c564736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630583a02c146100515780635e9c155e1461006d5780639ac1762f1461008b578063b40a136b146100a7575b600080fd5b61006b600480360381019061006691906102d8565b6100c5565b005b6100756100d8565b60405161008291906103a0565b60405180910390f35b6100a560048036038101906100a091906103f8565b61016a565b005b6100af610174565b6040516100bc9190610434565b60405180910390f35b80600090816100d49190610665565b5050565b6060600080546100e79061047e565b80601f01602080910402602001604051908101604052809291908181526020018280546101139061047e565b80156101605780601f1061013557610100808354040283529160200191610160565b820191906000526020600020905b81548152906001019060200180831161014357829003601f168201915b5050505050905090565b8060018190555050565b6000600154905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6101e58261019c565b810181811067ffffffffffffffff82111715610204576102036101ad565b5b80604052505050565b600061021761017e565b905061022382826101dc565b919050565b600067ffffffffffffffff821115610243576102426101ad565b5b61024c8261019c565b9050602081019050919050565b82818337600083830152505050565b600061027b61027684610228565b61020d565b90508281526020810184848401111561029757610296610197565b5b6102a2848285610259565b509392505050565b600082601f8301126102bf576102be610192565b5b81356102cf848260208601610268565b91505092915050565b6000602082840312156102ee576102ed610188565b5b600082013567ffffffffffffffff81111561030c5761030b61018d565b5b610318848285016102aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561035b578082015181840152602081019050610340565b60008484015250505050565b600061037282610321565b61037c818561032c565b935061038c81856020860161033d565b6103958161019c565b840191505092915050565b600060208201905081810360008301526103ba8184610367565b905092915050565b6000819050919050565b6103d5816103c2565b81146103e057600080fd5b50565b6000813590506103f2816103cc565b92915050565b60006020828403121561040e5761040d610188565b5b600061041c848285016103e3565b91505092915050565b61042e816103c2565b82525050565b60006020820190506104496000830184610425565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049657607f821691505b6020821081036104a9576104a861044f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104d4565b61051b86836104d4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061056261055d61055884610533565b61053d565b610533565b9050919050565b6000819050919050565b61057c83610547565b61059061058882610569565b8484546104e1565b825550505050565b600090565b6105a5610598565b6105b0818484610573565b505050565b5b818110156105d4576105c960008261059d565b6001810190506105b6565b5050565b601f821115610619576105ea816104af565b6105f3846104c4565b81016020851015610602578190505b61061661060e856104c4565b8301826105b5565b50505b505050565b600082821c905092915050565b600061063c6000198460080261061e565b1980831691505092915050565b6000610655838361062b565b9150826002028217905092915050565b61066e82610321565b67ffffffffffffffff811115610687576106866101ad565b5b610691825461047e565b61069c8282856105d8565b600060209050601f8311600181146106cf57600084156106bd578287015190505b6106c78582610649565b86555061072f565b601f1984166106dd866104af565b60005b82811015610705578489015182556001820191506020850194506020810190506106e0565b86831015610722578489015161071e601f89168261062b565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220b3ece04e05a044a341061756511612dee475bc3886451dd355446efaf890d6c564736f6c63430008120033", + "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SampleEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"emit_sample_event\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"fibonacci\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_some_num\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_some_str\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"odd_product\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"new_num\",\"type\":\"int256\"}],\"name\":\"set_some_num\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"new_s\",\"type\":\"string\"}],\"name\":\"set_some_str\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"triangle_number\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/benchmark-sample.sol\":\"Sample\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/benchmark-sample.sol\":{\"keccak256\":\"0x47fc35f4757df08c34995833fce86fb6ae8d96392095d908aac38c8194030181\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7cb688b666708de4ea49c604297de2f04830c513bb859ad672a1baf48b536ac9\",\"dweb:/ipfs/QmcZZJy7No4qF6MJQhTUmYuXSPEiLgs4HYbvWE5jjCksYB\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f44656661756c740000000000000000000000000000000000000000000000000081525060009081620000589190620002e1565b506000600181905550620003c8565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620000e957607f821691505b602082108103620000ff57620000fe620000a1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200012a565b6200017586836200012a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620001c2620001bc620001b6846200018d565b62000197565b6200018d565b9050919050565b6000819050919050565b620001de83620001a1565b620001f6620001ed82620001c9565b84845462000137565b825550505050565b600090565b6200020d620001fe565b6200021a818484620001d3565b505050565b5b8181101562000242576200023660008262000203565b60018101905062000220565b5050565b601f82111562000291576200025b8162000105565b62000266846200011a565b8101602085101562000276578190505b6200028e62000285856200011a565b8301826200021f565b50505b505050565b600082821c905092915050565b6000620002b66000198460080262000296565b1980831691505092915050565b6000620002d18383620002a3565b9150826002028217905092915050565b620002ec8262000067565b67ffffffffffffffff81111562000308576200030762000072565b5b620003148254620000d0565b6200032182828562000246565b600060209050601f83116001811462000359576000841562000344578287015190505b620003508582620002c3565b865550620003c0565b601f198416620003698662000105565b60005b8281101562000393578489015182556001820191506020850194506020810190506200036c565b86831015620003b35784890151620003af601f891682620002a3565b8355505b6001600288020188555050505b505050505050565b610b0e80620003d86000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638187c52b1161005b5780638187c52b1461012757806393063bb1146101575780639ac1762f14610161578063b40a136b1461017d57610088565b80630583a02c1461008d578063113d5646146100a95780635e9c155e146100d957806361047ff4146100f7575b600080fd5b6100a760048036038101906100a291906104d5565b61019b565b005b6100c360048036038101906100be9190610554565b6101ae565b6040516100d09190610590565b60405180910390f35b6100e1610206565b6040516100ee919061062a565b60405180910390f35b610111600480360381019061010c9190610554565b610298565b60405161011e9190610590565b60405180910390f35b610141600480360381019061013c9190610554565b6102aa565b60405161014e9190610590565b60405180910390f35b61015f6102ea565b005b61017b60048036038101906101769190610682565b610318565b005b610185610322565b60405161019291906106be565b60405180910390f35b80600090816101aa91906108e5565b5050565b600080600190506000600190505b8381116101fc5760018160026101d291906109e6565b6101dc9190610a28565b826101e791906109e6565b915080806101f490610a5c565b9150506101bc565b5080915050919050565b60606000805461021590610708565b80601f016020809104026020016040519081016040528092919081815260200182805461024190610708565b801561028e5780601f106102635761010080835404028352916020019161028e565b820191906000526020600020905b81548152906001019060200180831161027157829003601f168201915b5050505050905090565b60006102a38261032c565b9050919050565b600080600090506000600190505b8381116102e05780826102cb9190610aa4565b915080806102d890610a5c565b9150506102b8565b5080915050919050565b7fac2adf6ed332a5083db5e35ca021adf8261ec0e49754a50170391bd3da37c66160405160405180910390a1565b8060018190555050565b6000600154905090565b6000600282101561033f57819050610376565b61035460028361034f9190610a28565b61032c565b6103696001846103649190610a28565b61032c565b6103739190610aa4565b90505b919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103e282610399565b810181811067ffffffffffffffff82111715610401576104006103aa565b5b80604052505050565b600061041461037b565b905061042082826103d9565b919050565b600067ffffffffffffffff8211156104405761043f6103aa565b5b61044982610399565b9050602081019050919050565b82818337600083830152505050565b600061047861047384610425565b61040a565b90508281526020810184848401111561049457610493610394565b5b61049f848285610456565b509392505050565b600082601f8301126104bc576104bb61038f565b5b81356104cc848260208601610465565b91505092915050565b6000602082840312156104eb576104ea610385565b5b600082013567ffffffffffffffff8111156105095761050861038a565b5b610515848285016104a7565b91505092915050565b6000819050919050565b6105318161051e565b811461053c57600080fd5b50565b60008135905061054e81610528565b92915050565b60006020828403121561056a57610569610385565b5b60006105788482850161053f565b91505092915050565b61058a8161051e565b82525050565b60006020820190506105a56000830184610581565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156105e55780820151818401526020810190506105ca565b60008484015250505050565b60006105fc826105ab565b61060681856105b6565b93506106168185602086016105c7565b61061f81610399565b840191505092915050565b6000602082019050818103600083015261064481846105f1565b905092915050565b6000819050919050565b61065f8161064c565b811461066a57600080fd5b50565b60008135905061067c81610656565b92915050565b60006020828403121561069857610697610385565b5b60006106a68482850161066d565b91505092915050565b6106b88161064c565b82525050565b60006020820190506106d360008301846106af565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061072057607f821691505b602082108103610733576107326106d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261079b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261075e565b6107a5868361075e565b95508019841693508086168417925050509392505050565b6000819050919050565b60006107e26107dd6107d88461051e565b6107bd565b61051e565b9050919050565b6000819050919050565b6107fc836107c7565b610810610808826107e9565b84845461076b565b825550505050565b600090565b610825610818565b6108308184846107f3565b505050565b5b818110156108545761084960008261081d565b600181019050610836565b5050565b601f8211156108995761086a81610739565b6108738461074e565b81016020851015610882578190505b61089661088e8561074e565b830182610835565b50505b505050565b600082821c905092915050565b60006108bc6000198460080261089e565b1980831691505092915050565b60006108d583836108ab565b9150826002028217905092915050565b6108ee826105ab565b67ffffffffffffffff811115610907576109066103aa565b5b6109118254610708565b61091c828285610858565b600060209050601f83116001811461094f576000841561093d578287015190505b61094785826108c9565b8655506109af565b601f19841661095d86610739565b60005b8281101561098557848901518255600182019150602085019450602081019050610960565b868310156109a2578489015161099e601f8916826108ab565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109f18261051e565b91506109fc8361051e565b9250828202610a0a8161051e565b91508282048414831517610a2157610a206109b7565b5b5092915050565b6000610a338261051e565b9150610a3e8361051e565b9250828203905081811115610a5657610a556109b7565b5b92915050565b6000610a678261051e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a9957610a986109b7565b5b600182019050919050565b6000610aaf8261051e565b9150610aba8361051e565b9250828201905080821115610ad257610ad16109b7565b5b9291505056fea264697066735822122022b796c6407d382eb22d18ac4bf32f18cf2eabd0b0e8a13fdf8647a91ce55fac64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638187c52b1161005b5780638187c52b1461012757806393063bb1146101575780639ac1762f14610161578063b40a136b1461017d57610088565b80630583a02c1461008d578063113d5646146100a95780635e9c155e146100d957806361047ff4146100f7575b600080fd5b6100a760048036038101906100a291906104d5565b61019b565b005b6100c360048036038101906100be9190610554565b6101ae565b6040516100d09190610590565b60405180910390f35b6100e1610206565b6040516100ee919061062a565b60405180910390f35b610111600480360381019061010c9190610554565b610298565b60405161011e9190610590565b60405180910390f35b610141600480360381019061013c9190610554565b6102aa565b60405161014e9190610590565b60405180910390f35b61015f6102ea565b005b61017b60048036038101906101769190610682565b610318565b005b610185610322565b60405161019291906106be565b60405180910390f35b80600090816101aa91906108e5565b5050565b600080600190506000600190505b8381116101fc5760018160026101d291906109e6565b6101dc9190610a28565b826101e791906109e6565b915080806101f490610a5c565b9150506101bc565b5080915050919050565b60606000805461021590610708565b80601f016020809104026020016040519081016040528092919081815260200182805461024190610708565b801561028e5780601f106102635761010080835404028352916020019161028e565b820191906000526020600020905b81548152906001019060200180831161027157829003601f168201915b5050505050905090565b60006102a38261032c565b9050919050565b600080600090506000600190505b8381116102e05780826102cb9190610aa4565b915080806102d890610a5c565b9150506102b8565b5080915050919050565b7fac2adf6ed332a5083db5e35ca021adf8261ec0e49754a50170391bd3da37c66160405160405180910390a1565b8060018190555050565b6000600154905090565b6000600282101561033f57819050610376565b61035460028361034f9190610a28565b61032c565b6103696001846103649190610a28565b61032c565b6103739190610aa4565b90505b919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103e282610399565b810181811067ffffffffffffffff82111715610401576104006103aa565b5b80604052505050565b600061041461037b565b905061042082826103d9565b919050565b600067ffffffffffffffff8211156104405761043f6103aa565b5b61044982610399565b9050602081019050919050565b82818337600083830152505050565b600061047861047384610425565b61040a565b90508281526020810184848401111561049457610493610394565b5b61049f848285610456565b509392505050565b600082601f8301126104bc576104bb61038f565b5b81356104cc848260208601610465565b91505092915050565b6000602082840312156104eb576104ea610385565b5b600082013567ffffffffffffffff8111156105095761050861038a565b5b610515848285016104a7565b91505092915050565b6000819050919050565b6105318161051e565b811461053c57600080fd5b50565b60008135905061054e81610528565b92915050565b60006020828403121561056a57610569610385565b5b60006105788482850161053f565b91505092915050565b61058a8161051e565b82525050565b60006020820190506105a56000830184610581565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156105e55780820151818401526020810190506105ca565b60008484015250505050565b60006105fc826105ab565b61060681856105b6565b93506106168185602086016105c7565b61061f81610399565b840191505092915050565b6000602082019050818103600083015261064481846105f1565b905092915050565b6000819050919050565b61065f8161064c565b811461066a57600080fd5b50565b60008135905061067c81610656565b92915050565b60006020828403121561069857610697610385565b5b60006106a68482850161066d565b91505092915050565b6106b88161064c565b82525050565b60006020820190506106d360008301846106af565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061072057607f821691505b602082108103610733576107326106d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261079b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261075e565b6107a5868361075e565b95508019841693508086168417925050509392505050565b6000819050919050565b60006107e26107dd6107d88461051e565b6107bd565b61051e565b9050919050565b6000819050919050565b6107fc836107c7565b610810610808826107e9565b84845461076b565b825550505050565b600090565b610825610818565b6108308184846107f3565b505050565b5b818110156108545761084960008261081d565b600181019050610836565b5050565b601f8211156108995761086a81610739565b6108738461074e565b81016020851015610882578190505b61089661088e8561074e565b830182610835565b50505b505050565b600082821c905092915050565b60006108bc6000198460080261089e565b1980831691505092915050565b60006108d583836108ab565b9150826002028217905092915050565b6108ee826105ab565b67ffffffffffffffff811115610907576109066103aa565b5b6109118254610708565b61091c828285610858565b600060209050601f83116001811461094f576000841561093d578287015190505b61094785826108c9565b8655506109af565b601f19841661095d86610739565b60005b8281101561098557848901518255600182019150602085019450602081019050610960565b868310156109a2578489015161099e601f8916826108ab565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109f18261051e565b91506109fc8361051e565b9250828202610a0a8161051e565b91508282048414831517610a2157610a206109b7565b5b5092915050565b6000610a338261051e565b9150610a3e8361051e565b9250828203905081811115610a5657610a556109b7565b5b92915050565b6000610a678261051e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a9957610a986109b7565b5b600182019050919050565b6000610aaf8261051e565b9150610aba8361051e565b9250828201905080821115610ad257610ad16109b7565b5b9291505056fea264697066735822122022b796c6407d382eb22d18ac4bf32f18cf2eabd0b0e8a13fdf8647a91ce55fac64736f6c63430008120033", "immutableReferences": {}, "generatedSources": [ { @@ -3028,7 +3098,7 @@ { "ast": { "nodeType": "YulBlock", - "src": "0:10264:1", + "src": "0:12462:1", "statements": [ { "body": { @@ -4577,589 +4647,476 @@ { "body": { "nodeType": "YulBlock", - "src": "3127:40:1", + "src": "3113:32:1", "statements": [ { "nodeType": "YulAssignment", - "src": "3138:22:1", + "src": "3123:16:1", "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3154:5:1" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3148:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "3148:12:1" + "name": "value", + "nodeType": "YulIdentifier", + "src": "3134:5:1" }, "variableNames": [ { - "name": "length", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "3138:6:1" + "src": "3123:7:1" } ] } ] }, - "name": "array_length_t_string_memory_ptr", + "name": "cleanup_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "3110:5:1", + "src": "3095:5:1", "type": "" } ], "returnVariables": [ { - "name": "length", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "3120:6:1", + "src": "3105:7:1", "type": "" } ], - "src": "3068:99:1" + "src": "3068:77:1" }, { "body": { "nodeType": "YulBlock", - "src": "3269:73:1", + "src": "3194:79:1", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "3251:16:1", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3286:3:1" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3260:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3263:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3253:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3253:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3253:12:1" + } + ] + }, + "condition": { + "arguments": [ { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3291:6:1" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3217:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3242:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "3224:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "3224:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3214:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3214:35:1" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "3279:6:1" + "src": "3207:6:1" }, "nodeType": "YulFunctionCall", - "src": "3279:19:1" + "src": "3207:43:1" }, - "nodeType": "YulExpressionStatement", - "src": "3279:19:1" - }, + "nodeType": "YulIf", + "src": "3204:63:1" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3187:5:1", + "type": "" + } + ], + "src": "3151:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3331:87:1", + "statements": [ { "nodeType": "YulAssignment", - "src": "3307:29:1", + "src": "3341:29:1", "value": { "arguments": [ { - "name": "pos", + "name": "offset", "nodeType": "YulIdentifier", - "src": "3326:3:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3331:4:1", - "type": "", - "value": "0x20" + "src": "3363:6:1" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "3322:3:1" + "src": "3350:12:1" }, "nodeType": "YulFunctionCall", - "src": "3322:14:1" + "src": "3350:20:1" }, "variableNames": [ { - "name": "updated_pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "3307:11:1" + "src": "3341:5:1" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3406:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "3379:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "3379:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3379:33:1" } ] }, - "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "name": "abi_decode_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "offset", "nodeType": "YulTypedName", - "src": "3241:3:1", + "src": "3309:6:1", "type": "" }, { - "name": "length", + "name": "end", "nodeType": "YulTypedName", - "src": "3246:6:1", + "src": "3317:3:1", "type": "" } ], "returnVariables": [ { - "name": "updated_pos", + "name": "value", "nodeType": "YulTypedName", - "src": "3257:11:1", + "src": "3325:5:1", "type": "" } ], - "src": "3173:169:1" + "src": "3279:139:1" }, { "body": { "nodeType": "YulBlock", - "src": "3410:184:1", + "src": "3490:263:1", "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3420:10:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3429:1:1", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "3424:1:1", - "type": "" - } - ] - }, { "body": { "nodeType": "YulBlock", - "src": "3489:63:1", + "src": "3536:83:1", "statements": [ { "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "3514:3:1" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3519:1:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3510:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "3510:11:1" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "3533:3:1" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3538:1:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3529:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "3529:11:1" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3523:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "3523:18:1" - } - ], + "arguments": [], "functionName": { - "name": "mstore", + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "3503:6:1" + "src": "3538:77:1" }, "nodeType": "YulFunctionCall", - "src": "3503:39:1" + "src": "3538:79:1" }, "nodeType": "YulExpressionStatement", - "src": "3503:39:1" + "src": "3538:79:1" } ] }, "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3450:1:1" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3453:6:1" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3447:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "3447:13:1" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "3461:19:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3463:15:1", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3472:1:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3475:2:1", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3468:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "3468:10:1" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3463:1:1" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "3443:3:1", - "statements": [] - }, - "src": "3439:113:1" - }, - { - "expression": { "arguments": [ { "arguments": [ { - "name": "dst", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "3572:3:1" + "src": "3511:7:1" }, { - "name": "length", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "3577:6:1" + "src": "3520:9:1" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "3568:3:1" + "src": "3507:3:1" }, "nodeType": "YulFunctionCall", - "src": "3568:16:1" + "src": "3507:23:1" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3586:1:1", + "src": "3532:2:1", "type": "", - "value": "0" + "value": "32" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "3561:6:1" + "src": "3503:3:1" }, "nodeType": "YulFunctionCall", - "src": "3561:27:1" + "src": "3503:32:1" }, - "nodeType": "YulExpressionStatement", - "src": "3561:27:1" + "nodeType": "YulIf", + "src": "3500:119:1" + }, + { + "nodeType": "YulBlock", + "src": "3629:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3644:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3658:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3648:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3673:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3708:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3719:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3704:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3704:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3728:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "3683:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "3683:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3673:6:1" + } + ] + } + ] } ] }, - "name": "copy_memory_to_memory_with_cleanup", + "name": "abi_decode_tuple_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "src", + "name": "headStart", "nodeType": "YulTypedName", - "src": "3392:3:1", + "src": "3460:9:1", "type": "" }, { - "name": "dst", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "3397:3:1", + "src": "3471:7:1", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "length", + "name": "value0", "nodeType": "YulTypedName", - "src": "3402:6:1", + "src": "3483:6:1", "type": "" } ], - "src": "3348:246:1" + "src": "3424:329:1" }, { "body": { "nodeType": "YulBlock", - "src": "3692:285:1", + "src": "3824:53:1", "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "3702:53:1", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3749:5:1" - } - ], - "functionName": { - "name": "array_length_t_string_memory_ptr", - "nodeType": "YulIdentifier", - "src": "3716:32:1" - }, - "nodeType": "YulFunctionCall", - "src": "3716:39:1" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "3706:6:1", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3764:78:1", - "value": { + "expression": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "3830:3:1" + "src": "3841:3:1" }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3835:6:1" - } - ], - "functionName": { - "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "3771:58:1" - }, - "nodeType": "YulFunctionCall", - "src": "3771:71:1" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3764:3:1" - } - ] - }, - { - "expression": { - "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "3890:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3897:4:1", - "type": "", - "value": "0x20" + "src": "3864:5:1" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "3886:3:1" + "src": "3846:17:1" }, "nodeType": "YulFunctionCall", - "src": "3886:16:1" - }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3904:3:1" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3909:6:1" + "src": "3846:24:1" } ], "functionName": { - "name": "copy_memory_to_memory_with_cleanup", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "3851:34:1" + "src": "3834:6:1" }, "nodeType": "YulFunctionCall", - "src": "3851:65:1" + "src": "3834:37:1" }, "nodeType": "YulExpressionStatement", - "src": "3851:65:1" - }, - { - "nodeType": "YulAssignment", - "src": "3925:46:1", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3936:3:1" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3963:6:1" - } - ], - "functionName": { - "name": "round_up_to_mul_of_32", - "nodeType": "YulIdentifier", - "src": "3941:21:1" - }, - "nodeType": "YulFunctionCall", - "src": "3941:29:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3932:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "3932:39:1" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "3925:3:1" - } - ] + "src": "3834:37:1" } ] }, - "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "3673:5:1", + "src": "3812:5:1", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "3680:3:1", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "3688:3:1", + "src": "3819:3:1", "type": "" } ], - "src": "3600:377:1" + "src": "3759:118:1" }, { "body": { "nodeType": "YulBlock", - "src": "4101:195:1", + "src": "3981:124:1", "statements": [ { "nodeType": "YulAssignment", - "src": "4111:26:1", + "src": "3991:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4123:9:1" + "src": "4003:9:1" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4134:2:1", + "src": "4014:2:1", "type": "", "value": "32" } @@ -5167,33 +5124,38 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "4119:3:1" + "src": "3999:3:1" }, "nodeType": "YulFunctionCall", - "src": "4119:18:1" + "src": "3999:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "4111:4:1" + "src": "3991:4:1" } ] }, { "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4071:6:1" + }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4158:9:1" + "src": "4084:9:1" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4169:1:1", + "src": "4095:1:1", "type": "", "value": "0" } @@ -5201,91 +5163,38 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "4154:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "4154:17:1" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4177:4:1" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4183:9:1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4173:3:1" + "src": "4080:3:1" }, "nodeType": "YulFunctionCall", - "src": "4173:20:1" + "src": "4080:17:1" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "4147:6:1" + "src": "4027:43:1" }, "nodeType": "YulFunctionCall", - "src": "4147:47:1" + "src": "4027:71:1" }, "nodeType": "YulExpressionStatement", - "src": "4147:47:1" - }, - { - "nodeType": "YulAssignment", - "src": "4203:86:1", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4275:6:1" - }, - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4284:4:1" - } - ], - "functionName": { - "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "4211:63:1" - }, - "nodeType": "YulFunctionCall", - "src": "4211:78:1" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4203:4:1" - } - ] + "src": "4027:71:1" } ] }, - "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "4073:9:1", + "src": "3953:9:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "4085:6:1", + "src": "3965:6:1", "type": "" } ], @@ -5293,485 +5202,598 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "4096:4:1", + "src": "3976:4:1", "type": "" } ], - "src": "3983:313:1" + "src": "3883:222:1" }, { "body": { "nodeType": "YulBlock", - "src": "4346:32:1", + "src": "4170:40:1", "statements": [ { "nodeType": "YulAssignment", - "src": "4356:16:1", + "src": "4181:22:1", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "4367:5:1" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4197:5:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4191:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "4191:12:1" }, "variableNames": [ { - "name": "cleaned", + "name": "length", "nodeType": "YulIdentifier", - "src": "4356:7:1" + "src": "4181:6:1" } ] } ] }, - "name": "cleanup_t_int256", + "name": "array_length_t_string_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "4328:5:1", + "src": "4153:5:1", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "length", "nodeType": "YulTypedName", - "src": "4338:7:1", + "src": "4163:6:1", "type": "" } ], - "src": "4302:76:1" + "src": "4111:99:1" }, { "body": { "nodeType": "YulBlock", - "src": "4426:78:1", + "src": "4312:73:1", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "4482:16:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4491:1:1", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4494:1:1", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4484:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "4484:12:1" - }, - "nodeType": "YulExpressionStatement", - "src": "4484:12:1" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "4449:5:1" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "4473:5:1" - } - ], - "functionName": { - "name": "cleanup_t_int256", - "nodeType": "YulIdentifier", - "src": "4456:16:1" - }, - "nodeType": "YulFunctionCall", - "src": "4456:23:1" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "4446:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "4446:34:1" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4329:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4334:6:1" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "4439:6:1" + "src": "4322:6:1" }, "nodeType": "YulFunctionCall", - "src": "4439:42:1" + "src": "4322:19:1" }, - "nodeType": "YulIf", - "src": "4436:62:1" - } - ] - }, - "name": "validator_revert_t_int256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "4419:5:1", - "type": "" - } - ], - "src": "4384:120:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4561:86:1", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "4322:19:1" + }, { "nodeType": "YulAssignment", - "src": "4571:29:1", + "src": "4350:29:1", "value": { "arguments": [ { - "name": "offset", + "name": "pos", "nodeType": "YulIdentifier", - "src": "4593:6:1" + "src": "4369:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4374:4:1", + "type": "", + "value": "0x20" } ], "functionName": { - "name": "calldataload", + "name": "add", "nodeType": "YulIdentifier", - "src": "4580:12:1" + "src": "4365:3:1" }, "nodeType": "YulFunctionCall", - "src": "4580:20:1" + "src": "4365:14:1" }, "variableNames": [ { - "name": "value", + "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "4571:5:1" + "src": "4350:11:1" } ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "4635:5:1" - } - ], - "functionName": { - "name": "validator_revert_t_int256", - "nodeType": "YulIdentifier", - "src": "4609:25:1" - }, - "nodeType": "YulFunctionCall", - "src": "4609:32:1" - }, - "nodeType": "YulExpressionStatement", - "src": "4609:32:1" } ] }, - "name": "abi_decode_t_int256", + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "pos", "nodeType": "YulTypedName", - "src": "4539:6:1", + "src": "4284:3:1", "type": "" }, { - "name": "end", + "name": "length", "nodeType": "YulTypedName", - "src": "4547:3:1", + "src": "4289:6:1", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "updated_pos", "nodeType": "YulTypedName", - "src": "4555:5:1", + "src": "4300:11:1", "type": "" } ], - "src": "4510:137:1" + "src": "4216:169:1" }, { "body": { "nodeType": "YulBlock", - "src": "4718:262:1", + "src": "4453:184:1", "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4463:10:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4472:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "4467:1:1", + "type": "" + } + ] + }, { "body": { "nodeType": "YulBlock", - "src": "4764:83:1", + "src": "4532:63:1", "statements": [ { "expression": { - "arguments": [], + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4557:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "4562:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4553:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4553:11:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4576:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "4581:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4572:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4572:11:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4566:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "4566:18:1" + } + ], "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "4766:77:1" + "src": "4546:6:1" }, "nodeType": "YulFunctionCall", - "src": "4766:79:1" + "src": "4546:39:1" }, "nodeType": "YulExpressionStatement", - "src": "4766:79:1" + "src": "4546:39:1" } ] }, "condition": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4739:7:1" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4748:9:1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4735:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "4735:23:1" + "name": "i", + "nodeType": "YulIdentifier", + "src": "4493:1:1" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4760:2:1", - "type": "", - "value": "32" + "name": "length", + "nodeType": "YulIdentifier", + "src": "4496:6:1" } ], "functionName": { - "name": "slt", + "name": "lt", "nodeType": "YulIdentifier", - "src": "4731:3:1" + "src": "4490:2:1" }, "nodeType": "YulFunctionCall", - "src": "4731:32:1" + "src": "4490:13:1" }, - "nodeType": "YulIf", - "src": "4728:119:1" - }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4504:19:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4506:15:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "4515:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4518:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4511:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4511:10:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "4506:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4486:3:1", + "statements": [] + }, + "src": "4482:113:1" + }, { - "nodeType": "YulBlock", - "src": "4857:116:1", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4872:15:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4886:1:1", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "4876:6:1", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4901:62:1", - "value": { + "expression": { + "arguments": [ + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4935:9:1" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4946:6:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4931:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "4931:22:1" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4615:3:1" }, { - "name": "dataEnd", + "name": "length", "nodeType": "YulIdentifier", - "src": "4955:7:1" + "src": "4620:6:1" } ], "functionName": { - "name": "abi_decode_t_int256", + "name": "add", "nodeType": "YulIdentifier", - "src": "4911:19:1" + "src": "4611:3:1" }, "nodeType": "YulFunctionCall", - "src": "4911:52:1" + "src": "4611:16:1" }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4901:6:1" - } - ] - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4629:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4604:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4604:27:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4604:27:1" } ] }, - "name": "abi_decode_tuple_t_int256", + "name": "copy_memory_to_memory_with_cleanup", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "src", "nodeType": "YulTypedName", - "src": "4688:9:1", + "src": "4435:3:1", "type": "" }, { - "name": "dataEnd", + "name": "dst", "nodeType": "YulTypedName", - "src": "4699:7:1", + "src": "4440:3:1", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "value0", + "name": "length", "nodeType": "YulTypedName", - "src": "4711:6:1", + "src": "4445:6:1", "type": "" } ], - "src": "4653:327:1" + "src": "4391:246:1" }, { "body": { "nodeType": "YulBlock", - "src": "5049:52:1", + "src": "4735:285:1", "statements": [ { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "4745:53:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4792:5:1" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4759:32:1" + }, + "nodeType": "YulFunctionCall", + "src": "4759:39:1" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4749:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4807:78:1", + "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "5066:3:1" + "src": "4873:3:1" }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4878:6:1" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4814:58:1" + }, + "nodeType": "YulFunctionCall", + "src": "4814:71:1" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4807:3:1" + } + ] + }, + { + "expression": { + "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5088:5:1" + "src": "4933:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4940:4:1", + "type": "", + "value": "0x20" } ], "functionName": { - "name": "cleanup_t_int256", + "name": "add", "nodeType": "YulIdentifier", - "src": "5071:16:1" + "src": "4929:3:1" }, "nodeType": "YulFunctionCall", - "src": "5071:23:1" + "src": "4929:16:1" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4947:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4952:6:1" } ], "functionName": { - "name": "mstore", + "name": "copy_memory_to_memory_with_cleanup", "nodeType": "YulIdentifier", - "src": "5059:6:1" + "src": "4894:34:1" }, "nodeType": "YulFunctionCall", - "src": "5059:36:1" + "src": "4894:65:1" }, "nodeType": "YulExpressionStatement", - "src": "5059:36:1" + "src": "4894:65:1" + }, + { + "nodeType": "YulAssignment", + "src": "4968:46:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4979:3:1" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5006:6:1" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "4984:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "4984:29:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4975:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4975:39:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4968:3:1" + } + ] } ] }, - "name": "abi_encode_t_int256_to_t_int256_fromStack", + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "5037:5:1", + "src": "4716:5:1", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "5044:3:1", + "src": "4723:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4731:3:1", "type": "" } ], - "src": "4986:115:1" + "src": "4643:377:1" }, { "body": { "nodeType": "YulBlock", - "src": "5203:122:1", + "src": "5144:195:1", "statements": [ { "nodeType": "YulAssignment", - "src": "5213:26:1", + "src": "5154:26:1", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5225:9:1" + "src": "5166:9:1" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5236:2:1", + "src": "5177:2:1", "type": "", "value": "32" } @@ -5779,38 +5801,33 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5221:3:1" + "src": "5162:3:1" }, "nodeType": "YulFunctionCall", - "src": "5221:18:1" + "src": "5162:18:1" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "5213:4:1" + "src": "5154:4:1" } ] }, { "expression": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5291:6:1" - }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5304:9:1" + "src": "5201:9:1" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5315:1:1", + "src": "5212:1:1", "type": "", "value": "0" } @@ -5818,38 +5835,91 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5300:3:1" + "src": "5197:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5197:17:1" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5220:4:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5226:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5216:3:1" }, "nodeType": "YulFunctionCall", - "src": "5300:17:1" + "src": "5216:20:1" } ], "functionName": { - "name": "abi_encode_t_int256_to_t_int256_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "5249:41:1" + "src": "5190:6:1" }, "nodeType": "YulFunctionCall", - "src": "5249:69:1" + "src": "5190:47:1" }, "nodeType": "YulExpressionStatement", - "src": "5249:69:1" - } - ] - }, - "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ + "src": "5190:47:1" + }, + { + "nodeType": "YulAssignment", + "src": "5246:86:1", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5318:6:1" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5327:4:1" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5254:63:1" + }, + "nodeType": "YulFunctionCall", + "src": "5254:78:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5246: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": "5175:9:1", + "src": "5116:9:1", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "5187:6:1", + "src": "5128:6:1", "type": "" } ], @@ -5857,3414 +5927,6173 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "5198:4:1", + "src": "5139:4:1", "type": "" } ], - "src": "5107:218:1" + "src": "5026:313:1" }, { "body": { "nodeType": "YulBlock", - "src": "5359:152:1", + "src": "5389:32:1", "statements": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5376:1:1", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5379:77:1", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5369:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "5369:88:1" + "nodeType": "YulAssignment", + "src": "5399:16:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5410:5:1" }, - "nodeType": "YulExpressionStatement", - "src": "5369:88:1" - }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5399:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5371:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5381:7:1", + "type": "" + } + ], + "src": "5345:76:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5469:78:1", + "statements": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5473:1:1", - "type": "", - "value": "4" - }, + "body": { + "nodeType": "YulBlock", + "src": "5525:16:1", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5476:4:1", - "type": "", - "value": "0x22" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5534:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5537:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5527:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5527:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5527:12:1" } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5466:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "5466:15:1" + ] }, - "nodeType": "YulExpressionStatement", - "src": "5466:15:1" - }, - { - "expression": { + "condition": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5497:1:1", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5500:4:1", - "type": "", - "value": "0x24" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5492:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5516:5:1" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "5499:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "5499:23:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5489:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5489:34:1" } ], "functionName": { - "name": "revert", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "5490:6:1" + "src": "5482:6:1" }, "nodeType": "YulFunctionCall", - "src": "5490:15:1" + "src": "5482:42:1" }, - "nodeType": "YulExpressionStatement", - "src": "5490:15:1" + "nodeType": "YulIf", + "src": "5479:62:1" } ] }, - "name": "panic_error_0x22", + "name": "validator_revert_t_int256", "nodeType": "YulFunctionDefinition", - "src": "5331:180:1" + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5462:5:1", + "type": "" + } + ], + "src": "5427:120:1" }, { "body": { "nodeType": "YulBlock", - "src": "5568:269:1", + "src": "5604:86:1", "statements": [ { "nodeType": "YulAssignment", - "src": "5578:22:1", + "src": "5614:29:1", "value": { "arguments": [ { - "name": "data", + "name": "offset", "nodeType": "YulIdentifier", - "src": "5592:4:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5598:1:1", - "type": "", - "value": "2" + "src": "5636:6:1" } ], "functionName": { - "name": "div", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "5588:3:1" + "src": "5623:12:1" }, "nodeType": "YulFunctionCall", - "src": "5588:12:1" + "src": "5623:20:1" }, "variableNames": [ { - "name": "length", + "name": "value", "nodeType": "YulIdentifier", - "src": "5578:6:1" + "src": "5614:5:1" } ] }, { - "nodeType": "YulVariableDeclaration", - "src": "5609:38:1", - "value": { + "expression": { "arguments": [ { - "name": "data", + "name": "value", "nodeType": "YulIdentifier", - "src": "5639:4:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5645:1:1", - "type": "", - "value": "1" + "src": "5678:5:1" } ], "functionName": { - "name": "and", + "name": "validator_revert_t_int256", "nodeType": "YulIdentifier", - "src": "5635:3:1" + "src": "5652:25:1" }, "nodeType": "YulFunctionCall", - "src": "5635:12:1" + "src": "5652:32:1" }, - "variables": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "5613:18:1", - "type": "" - } - ] - }, + "nodeType": "YulExpressionStatement", + "src": "5652:32:1" + } + ] + }, + "name": "abi_decode_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5582:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5590:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5598:5:1", + "type": "" + } + ], + "src": "5553:137:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5761:262:1", + "statements": [ { "body": { "nodeType": "YulBlock", - "src": "5686:51:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5700:27:1", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5714:6:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5722:4:1", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5710:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "5710:17:1" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5700:6:1" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "5666:18:1" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "5659:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "5659:26:1" - }, - "nodeType": "YulIf", - "src": "5656:81:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5789:42:1", + "src": "5807:83:1", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "panic_error_0x22", + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "5803:16:1" + "src": "5809:77:1" }, "nodeType": "YulFunctionCall", - "src": "5803:18:1" + "src": "5809:79:1" }, "nodeType": "YulExpressionStatement", - "src": "5803:18:1" + "src": "5809:79:1" } ] }, "condition": { "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "5753:18:1" - }, { "arguments": [ { - "name": "length", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "5776:6:1" + "src": "5782:7:1" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5784:2:1", - "type": "", - "value": "32" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5791:9:1" } ], "functionName": { - "name": "lt", + "name": "sub", "nodeType": "YulIdentifier", - "src": "5773:2:1" + "src": "5778:3:1" }, "nodeType": "YulFunctionCall", - "src": "5773:14:1" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "5750:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "5750:38:1" - }, - "nodeType": "YulIf", - "src": "5747:84:1" - } - ] - }, - "name": "extract_byte_array_length", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "5552:4:1", - "type": "" - } - ], - "returnVariables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "5561:6:1", - "type": "" - } - ], - "src": "5517:320:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5897:87:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5907:11:1", - "value": { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "5915:3:1" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "5907:4:1" - } - ] - }, - { - "expression": { - "arguments": [ + "src": "5778:23:1" + }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5935:1:1", + "src": "5803:2:1", "type": "", - "value": "0" - }, - { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "5938:3:1" + "value": "32" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "5928:6:1" + "src": "5774:3:1" }, "nodeType": "YulFunctionCall", - "src": "5928:14:1" + "src": "5774:32:1" }, - "nodeType": "YulExpressionStatement", - "src": "5928:14:1" + "nodeType": "YulIf", + "src": "5771:119:1" }, { - "nodeType": "YulAssignment", - "src": "5951:26:1", - "value": { - "arguments": [ - { + "nodeType": "YulBlock", + "src": "5900:116:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5915:15:1", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "5969:1:1", + "src": "5929:1:1", "type": "", "value": "0" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5972:4:1", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "5959:9:1" + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5919:6:1", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "5959:18:1" - }, - "variableNames": [ { - "name": "data", - "nodeType": "YulIdentifier", - "src": "5951:4:1" + "nodeType": "YulAssignment", + "src": "5944:62:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5978:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5989:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5974:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5974:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5998:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_int256", + "nodeType": "YulIdentifier", + "src": "5954:19:1" + }, + "nodeType": "YulFunctionCall", + "src": "5954:52:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5944:6:1" + } + ] } ] } ] }, - "name": "array_dataslot_t_string_storage", + "name": "abi_decode_tuple_t_int256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "ptr", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5731:9:1", + "type": "" + }, + { + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "5884:3:1", + "src": "5742:7:1", "type": "" } ], "returnVariables": [ { - "name": "data", + "name": "value0", "nodeType": "YulTypedName", - "src": "5892:4:1", + "src": "5754:6:1", "type": "" } ], - "src": "5843:141:1" + "src": "5696:327:1" }, { "body": { "nodeType": "YulBlock", - "src": "6034:49:1", + "src": "6092:52:1", "statements": [ { - "nodeType": "YulAssignment", - "src": "6044:33:1", - "value": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6109:3:1" + }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "6062:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6069:2:1", - "type": "", - "value": "31" + "src": "6131:5:1" } ], "functionName": { - "name": "add", + "name": "cleanup_t_int256", "nodeType": "YulIdentifier", - "src": "6058:3:1" + "src": "6114:16:1" }, "nodeType": "YulFunctionCall", - "src": "6058:14:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6074:2:1", - "type": "", - "value": "32" + "src": "6114:23:1" } ], "functionName": { - "name": "div", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "6054:3:1" + "src": "6102:6:1" }, "nodeType": "YulFunctionCall", - "src": "6054:23:1" + "src": "6102:36:1" }, - "variableNames": [ - { - "name": "result", - "nodeType": "YulIdentifier", - "src": "6044:6:1" - } - ] + "nodeType": "YulExpressionStatement", + "src": "6102:36:1" } ] }, - "name": "divide_by_32_ceil", + "name": "abi_encode_t_int256_to_t_int256_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "6017:5:1", + "src": "6080:5:1", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "result", + "name": "pos", "nodeType": "YulTypedName", - "src": "6027:6:1", + "src": "6087:3:1", "type": "" } ], - "src": "5990:93:1" + "src": "6029:115:1" }, { "body": { "nodeType": "YulBlock", - "src": "6142:54:1", + "src": "6246:122:1", "statements": [ { "nodeType": "YulAssignment", - "src": "6152:37:1", + "src": "6256:26:1", "value": { "arguments": [ { - "name": "bits", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "6177:4:1" + "src": "6268:9:1" }, { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6183:5:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6279:2:1", + "type": "", + "value": "32" } ], "functionName": { - "name": "shl", + "name": "add", "nodeType": "YulIdentifier", - "src": "6173:3:1" + "src": "6264:3:1" }, "nodeType": "YulFunctionCall", - "src": "6173:16:1" + "src": "6264:18:1" }, "variableNames": [ { - "name": "newValue", + "name": "tail", "nodeType": "YulIdentifier", - "src": "6152:8:1" + "src": "6256:4:1" } ] - } - ] - }, - "name": "shift_left_dynamic", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "bits", - "nodeType": "YulTypedName", - "src": "6117:4:1", - "type": "" - }, + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6334:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6347:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6358:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6343:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6343:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulIdentifier", + "src": "6292:41:1" + }, + "nodeType": "YulFunctionCall", + "src": "6292:69:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6292:69:1" + } + ] + }, + "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6218:9:1", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "6123:5:1", + "src": "6230:6:1", "type": "" } ], "returnVariables": [ { - "name": "newValue", + "name": "tail", "nodeType": "YulTypedName", - "src": "6133:8:1", + "src": "6241:4:1", "type": "" } ], - "src": "6089:107:1" + "src": "6150:218:1" }, { "body": { "nodeType": "YulBlock", - "src": "6278:317:1", + "src": "6402:152:1", "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "6288:35:1", - "value": { + "expression": { "arguments": [ { - "name": "shiftBytes", - "nodeType": "YulIdentifier", - "src": "6309:10:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6419:1:1", + "type": "", + "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6321:1:1", + "src": "6422:77:1", "type": "", - "value": "8" + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } ], "functionName": { - "name": "mul", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "6305:3:1" + "src": "6412:6:1" }, "nodeType": "YulFunctionCall", - "src": "6305:18:1" + "src": "6412:88:1" }, - "variables": [ - { - "name": "shiftBits", - "nodeType": "YulTypedName", - "src": "6292:9:1", - "type": "" - } - ] + "nodeType": "YulExpressionStatement", + "src": "6412:88:1" }, { - "nodeType": "YulVariableDeclaration", - "src": "6332:109:1", - "value": { + "expression": { "arguments": [ { - "name": "shiftBits", - "nodeType": "YulIdentifier", - "src": "6363:9:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6516:1:1", + "type": "", + "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6374:66:1", + "src": "6519:4:1", "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + "value": "0x22" } ], "functionName": { - "name": "shift_left_dynamic", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "6344:18:1" + "src": "6509:6:1" }, "nodeType": "YulFunctionCall", - "src": "6344:97:1" + "src": "6509:15:1" }, - "variables": [ - { - "name": "mask", - "nodeType": "YulTypedName", - "src": "6336:4:1", - "type": "" - } - ] + "nodeType": "YulExpressionStatement", + "src": "6509:15:1" }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6540:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6543:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6533:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6533:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6533:15:1" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "6374:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6611:269:1", + "statements": [ { "nodeType": "YulAssignment", - "src": "6450:51:1", + "src": "6621:22:1", "value": { "arguments": [ { - "name": "shiftBits", + "name": "data", "nodeType": "YulIdentifier", - "src": "6481:9:1" + "src": "6635:4:1" }, { - "name": "toInsert", - "nodeType": "YulIdentifier", - "src": "6492:8:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6641:1:1", + "type": "", + "value": "2" } ], "functionName": { - "name": "shift_left_dynamic", + "name": "div", "nodeType": "YulIdentifier", - "src": "6462:18:1" + "src": "6631:3:1" }, "nodeType": "YulFunctionCall", - "src": "6462:39:1" + "src": "6631:12:1" }, "variableNames": [ { - "name": "toInsert", + "name": "length", "nodeType": "YulIdentifier", - "src": "6450:8:1" + "src": "6621:6:1" } ] }, { - "nodeType": "YulAssignment", - "src": "6510:30:1", + "nodeType": "YulVariableDeclaration", + "src": "6652:38:1", "value": { "arguments": [ { - "name": "value", + "name": "data", "nodeType": "YulIdentifier", - "src": "6523:5:1" + "src": "6682:4:1" }, { - "arguments": [ - { - "name": "mask", - "nodeType": "YulIdentifier", - "src": "6534:4:1" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "6530:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "6530:9:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6688:1:1", + "type": "", + "value": "1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "6519:3:1" + "src": "6678:3:1" }, "nodeType": "YulFunctionCall", - "src": "6519:21:1" + "src": "6678:12:1" }, - "variableNames": [ + "variables": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6510:5:1" + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "6656:18:1", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "6549:40:1", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "6729:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6743:27:1", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6757:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6765:4:1", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6753:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6753:17:1" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6743:6:1" + } + ] + } + ] + }, + "condition": { "arguments": [ { - "name": "value", + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "6709:18:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6702:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6702:26:1" + }, + "nodeType": "YulIf", + "src": "6699:81:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6832:42:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "6846:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "6846:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6846:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", - "src": "6562:5:1" + "src": "6796:18:1" }, { "arguments": [ { - "name": "toInsert", + "name": "length", "nodeType": "YulIdentifier", - "src": "6573:8:1" + "src": "6819:6:1" }, { - "name": "mask", - "nodeType": "YulIdentifier", - "src": "6583:4:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6827:2:1", + "type": "", + "value": "32" } ], "functionName": { - "name": "and", + "name": "lt", "nodeType": "YulIdentifier", - "src": "6569:3:1" + "src": "6816:2:1" }, "nodeType": "YulFunctionCall", - "src": "6569:19:1" + "src": "6816:14:1" } ], "functionName": { - "name": "or", + "name": "eq", "nodeType": "YulIdentifier", - "src": "6559:2:1" + "src": "6793:2:1" }, "nodeType": "YulFunctionCall", - "src": "6559:30:1" + "src": "6793:38:1" }, - "variableNames": [ - { - "name": "result", - "nodeType": "YulIdentifier", - "src": "6549:6:1" - } - ] + "nodeType": "YulIf", + "src": "6790:84:1" } ] }, - "name": "update_byte_slice_dynamic32", + "name": "extract_byte_array_length", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "data", "nodeType": "YulTypedName", - "src": "6239:5:1", - "type": "" - }, - { - "name": "shiftBytes", - "nodeType": "YulTypedName", - "src": "6246:10:1", - "type": "" - }, - { - "name": "toInsert", - "nodeType": "YulTypedName", - "src": "6258:8:1", + "src": "6595:4:1", "type": "" } ], "returnVariables": [ { - "name": "result", + "name": "length", "nodeType": "YulTypedName", - "src": "6271:6:1", + "src": "6604:6:1", "type": "" } ], - "src": "6202:393:1" + "src": "6560:320:1" }, { "body": { "nodeType": "YulBlock", - "src": "6646:32:1", + "src": "6940:87:1", "statements": [ { "nodeType": "YulAssignment", - "src": "6656:16:1", + "src": "6950:11:1", "value": { - "name": "value", + "name": "ptr", "nodeType": "YulIdentifier", - "src": "6667:5:1" + "src": "6958:3:1" }, "variableNames": [ { - "name": "cleaned", + "name": "data", "nodeType": "YulIdentifier", - "src": "6656:7:1" + "src": "6950:4:1" } ] - } - ] - }, - "name": "cleanup_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "6628:5:1", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "6638:7:1", - "type": "" - } - ], - "src": "6601:77:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6716:28:1", - "statements": [ + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6978:1:1", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "6981:3:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6971:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6971:14:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6971:14:1" + }, { "nodeType": "YulAssignment", - "src": "6726:12:1", + "src": "6994:26:1", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6733:5:1" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7012:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7015:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "7002:9:1" + }, + "nodeType": "YulFunctionCall", + "src": "7002:18:1" }, "variableNames": [ { - "name": "ret", + "name": "data", "nodeType": "YulIdentifier", - "src": "6726:3:1" + "src": "6994:4:1" } ] } ] }, - "name": "identity", + "name": "array_dataslot_t_string_storage", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "ptr", "nodeType": "YulTypedName", - "src": "6702:5:1", + "src": "6927:3:1", "type": "" } ], "returnVariables": [ { - "name": "ret", + "name": "data", "nodeType": "YulTypedName", - "src": "6712:3:1", + "src": "6935:4:1", "type": "" } ], - "src": "6684:60:1" + "src": "6886:141:1" }, { "body": { "nodeType": "YulBlock", - "src": "6810:82:1", + "src": "7077:49:1", "statements": [ { "nodeType": "YulAssignment", - "src": "6820:66:1", + "src": "7087:33:1", "value": { "arguments": [ { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6878:5:1" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "6860:17:1" - }, - "nodeType": "YulFunctionCall", - "src": "6860:24:1" + "name": "value", + "nodeType": "YulIdentifier", + "src": "7105:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7112:2:1", + "type": "", + "value": "31" } ], "functionName": { - "name": "identity", + "name": "add", "nodeType": "YulIdentifier", - "src": "6851:8:1" + "src": "7101:3:1" }, "nodeType": "YulFunctionCall", - "src": "6851:34:1" + "src": "7101:14:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7117:2:1", + "type": "", + "value": "32" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "div", "nodeType": "YulIdentifier", - "src": "6833:17:1" + "src": "7097:3:1" }, "nodeType": "YulFunctionCall", - "src": "6833:53:1" + "src": "7097:23:1" }, "variableNames": [ { - "name": "converted", + "name": "result", "nodeType": "YulIdentifier", - "src": "6820:9:1" + "src": "7087:6:1" } ] } ] }, - "name": "convert_t_uint256_to_t_uint256", + "name": "divide_by_32_ceil", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "6790:5:1", + "src": "7060:5:1", "type": "" } ], "returnVariables": [ { - "name": "converted", + "name": "result", "nodeType": "YulTypedName", - "src": "6800:9:1", + "src": "7070:6:1", "type": "" } ], - "src": "6750:142:1" + "src": "7033:93:1" }, { "body": { "nodeType": "YulBlock", - "src": "6945:28:1", + "src": "7185:54:1", "statements": [ { "nodeType": "YulAssignment", - "src": "6955:12:1", + "src": "7195:37:1", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6962:5:1" + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "7220:4:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7226:5:1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "7216:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7216:16:1" }, "variableNames": [ { - "name": "ret", + "name": "newValue", "nodeType": "YulIdentifier", - "src": "6955:3:1" + "src": "7195:8:1" } ] } ] }, - "name": "prepare_store_t_uint256", + "name": "shift_left_dynamic", "nodeType": "YulFunctionDefinition", "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "7160:4:1", + "type": "" + }, { "name": "value", "nodeType": "YulTypedName", - "src": "6931:5:1", + "src": "7166:5:1", "type": "" } ], "returnVariables": [ { - "name": "ret", + "name": "newValue", "nodeType": "YulTypedName", - "src": "6941:3:1", + "src": "7176:8:1", "type": "" } ], - "src": "6898:75:1" + "src": "7132:107:1" }, { "body": { "nodeType": "YulBlock", - "src": "7055:193:1", + "src": "7321:317:1", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7065:63:1", + "src": "7331:35:1", "value": { "arguments": [ { - "name": "value_0", + "name": "shiftBytes", "nodeType": "YulIdentifier", - "src": "7120:7:1" + "src": "7352:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7364:1:1", + "type": "", + "value": "8" } ], "functionName": { - "name": "convert_t_uint256_to_t_uint256", + "name": "mul", "nodeType": "YulIdentifier", - "src": "7089:30:1" + "src": "7348:3:1" }, "nodeType": "YulFunctionCall", - "src": "7089:39:1" + "src": "7348:18:1" }, "variables": [ { - "name": "convertedValue_0", + "name": "shiftBits", "nodeType": "YulTypedName", - "src": "7069:16:1", + "src": "7335:9:1", "type": "" } ] }, { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "7375:109:1", + "value": { "arguments": [ { - "name": "slot", + "name": "shiftBits", "nodeType": "YulIdentifier", - "src": "7144:4:1" + "src": "7406:9:1" }, { - "arguments": [ - { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "7184:4:1" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "7178:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "7178:11:1" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7191:6:1" - }, - { - "arguments": [ - { - "name": "convertedValue_0", - "nodeType": "YulIdentifier", - "src": "7223:16:1" - } - ], - "functionName": { - "name": "prepare_store_t_uint256", - "nodeType": "YulIdentifier", - "src": "7199:23:1" - }, - "nodeType": "YulFunctionCall", - "src": "7199:41:1" - } - ], - "functionName": { - "name": "update_byte_slice_dynamic32", - "nodeType": "YulIdentifier", - "src": "7150:27:1" - }, - "nodeType": "YulFunctionCall", - "src": "7150:91:1" + "kind": "number", + "nodeType": "YulLiteral", + "src": "7417:66:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" } ], "functionName": { - "name": "sstore", + "name": "shift_left_dynamic", "nodeType": "YulIdentifier", - "src": "7137:6:1" + "src": "7387:18:1" }, "nodeType": "YulFunctionCall", - "src": "7137:105:1" + "src": "7387:97:1" }, - "nodeType": "YulExpressionStatement", - "src": "7137:105:1" - } - ] - }, - "name": "update_storage_value_t_uint256_to_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "slot", - "nodeType": "YulTypedName", - "src": "7032:4:1", - "type": "" - }, - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7038:6:1", - "type": "" - }, - { - "name": "value_0", - "nodeType": "YulTypedName", - "src": "7046:7:1", - "type": "" - } - ], - "src": "6979:269:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7303:24:1", - "statements": [ + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "7379:4:1", + "type": "" + } + ] + }, { "nodeType": "YulAssignment", - "src": "7313:8:1", + "src": "7493:51:1", "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7320:1:1", - "type": "", - "value": "0" - }, + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "7524:9:1" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "7535:8:1" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "7505:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "7505:39:1" + }, "variableNames": [ { - "name": "ret", + "name": "toInsert", "nodeType": "YulIdentifier", - "src": "7313:3:1" + "src": "7493:8:1" } ] - } - ] - }, - "name": "zero_value_for_split_t_uint256", - "nodeType": "YulFunctionDefinition", - "returnVariables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "7299:3:1", - "type": "" - } - ], - "src": "7254:73:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7386:136:1", - "statements": [ + }, { - "nodeType": "YulVariableDeclaration", - "src": "7396:46:1", + "nodeType": "YulAssignment", + "src": "7553:30:1", "value": { - "arguments": [], + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7566:5:1" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7577:4:1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "7573:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7573:9:1" + } + ], "functionName": { - "name": "zero_value_for_split_t_uint256", + "name": "and", "nodeType": "YulIdentifier", - "src": "7410:30:1" + "src": "7562:3:1" }, "nodeType": "YulFunctionCall", - "src": "7410:32:1" + "src": "7562:21:1" }, - "variables": [ + "variableNames": [ { - "name": "zero_0", - "nodeType": "YulTypedName", - "src": "7400:6:1", - "type": "" + "name": "value", + "nodeType": "YulIdentifier", + "src": "7553:5:1" } ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "7592:40:1", + "value": { "arguments": [ { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "7495:4:1" - }, - { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "7501:6:1" + "src": "7605:5:1" }, { - "name": "zero_0", - "nodeType": "YulIdentifier", - "src": "7509:6:1" + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "7616:8:1" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "7626:4:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7612:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7612:19:1" } ], "functionName": { - "name": "update_storage_value_t_uint256_to_t_uint256", + "name": "or", "nodeType": "YulIdentifier", - "src": "7451:43:1" + "src": "7602:2:1" }, "nodeType": "YulFunctionCall", - "src": "7451:65:1" + "src": "7602:30:1" }, - "nodeType": "YulExpressionStatement", - "src": "7451:65:1" + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7592:6:1" + } + ] } ] }, - "name": "storage_set_to_zero_t_uint256", + "name": "update_byte_slice_dynamic32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "slot", + "name": "value", "nodeType": "YulTypedName", - "src": "7372:4:1", + "src": "7282:5:1", "type": "" }, { - "name": "offset", + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "7289:10:1", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "7301:8:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", "nodeType": "YulTypedName", - "src": "7378:6:1", + "src": "7314:6:1", "type": "" } ], - "src": "7333:189:1" + "src": "7245:393:1" }, { "body": { "nodeType": "YulBlock", - "src": "7578:136:1", + "src": "7676:28:1", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "7645:63:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7689:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7696:1:1", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "storage_set_to_zero_t_uint256", - "nodeType": "YulIdentifier", - "src": "7659:29:1" - }, - "nodeType": "YulFunctionCall", - "src": "7659:39:1" - }, - "nodeType": "YulExpressionStatement", - "src": "7659:39:1" - } - ] + "nodeType": "YulAssignment", + "src": "7686:12:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7693:5:1" }, - "condition": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7598:5:1" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7605:3:1" - } - ], - "functionName": { - "name": "lt", + "variableNames": [ + { + "name": "ret", "nodeType": "YulIdentifier", - "src": "7595:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "7595:14:1" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "7610:26:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7612:22:1", - "value": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7625:5:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7632:1:1", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7621:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7621:13:1" - }, - "variableNames": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7612:5:1" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "7592:2:1", - "statements": [] - }, - "src": "7588:120:1" + "src": "7686:3:1" + } + ] } ] }, - "name": "clear_storage_range_t_bytes1", + "name": "identity", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "start", + "name": "value", "nodeType": "YulTypedName", - "src": "7566:5:1", + "src": "7662:5:1", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "end", + "name": "ret", "nodeType": "YulTypedName", - "src": "7573:3:1", + "src": "7672:3:1", "type": "" } ], - "src": "7528:186:1" + "src": "7644:60:1" }, { "body": { "nodeType": "YulBlock", - "src": "7799:464:1", + "src": "7770:82:1", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "7825:431:1", - "statements": [ + "nodeType": "YulAssignment", + "src": "7780:66:1", + "value": { + "arguments": [ { - "nodeType": "YulVariableDeclaration", - "src": "7839:54:1", - "value": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "7887:5:1" - } - ], - "functionName": { - "name": "array_dataslot_t_string_storage", - "nodeType": "YulIdentifier", - "src": "7855:31:1" - }, - "nodeType": "YulFunctionCall", - "src": "7855:38:1" - }, - "variables": [ + "arguments": [ { - "name": "dataArea", - "nodeType": "YulTypedName", - "src": "7843:8:1", - "type": "" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7838:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "7820:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "7820:24:1" } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7906:63:1", - "value": { - "arguments": [ - { - "name": "dataArea", - "nodeType": "YulIdentifier", - "src": "7929:8:1" - }, - { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "7957:10:1" - } - ], - "functionName": { - "name": "divide_by_32_ceil", - "nodeType": "YulIdentifier", - "src": "7939:17:1" - }, - "nodeType": "YulFunctionCall", - "src": "7939:29:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7925:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "7925:44:1" - }, - "variables": [ - { - "name": "deleteStart", - "nodeType": "YulTypedName", - "src": "7910:11:1", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8126:27:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8128:23:1", - "value": { - "name": "dataArea", - "nodeType": "YulIdentifier", - "src": "8143:8:1" - }, - "variableNames": [ - { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "8128:11:1" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "8110:10:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8122:2:1", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "8107:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "8107:18:1" - }, - "nodeType": "YulIf", - "src": "8104:49:1" - }, - { - "expression": { - "arguments": [ - { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "8195:11:1" - }, - { - "arguments": [ - { - "name": "dataArea", - "nodeType": "YulIdentifier", - "src": "8212:8:1" - }, - { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "8240:3:1" - } - ], - "functionName": { - "name": "divide_by_32_ceil", - "nodeType": "YulIdentifier", - "src": "8222:17:1" - }, - "nodeType": "YulFunctionCall", - "src": "8222:22:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8208:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "8208:37:1" - } - ], - "functionName": { - "name": "clear_storage_range_t_bytes1", - "nodeType": "YulIdentifier", - "src": "8166:28:1" - }, - "nodeType": "YulFunctionCall", - "src": "8166:80:1" + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "7811:8:1" }, - "nodeType": "YulExpressionStatement", - "src": "8166:80:1" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "7816:3:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7821:2:1", - "type": "", - "value": "31" + "nodeType": "YulFunctionCall", + "src": "7811:34:1" } ], "functionName": { - "name": "gt", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "7813:2:1" + "src": "7793:17:1" }, "nodeType": "YulFunctionCall", - "src": "7813:11:1" + "src": "7793:53:1" }, - "nodeType": "YulIf", - "src": "7810:446:1" + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "7780:9:1" + } + ] } ] }, - "name": "clean_up_bytearray_end_slots_t_string_storage", + "name": "convert_t_uint256_to_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "array", - "nodeType": "YulTypedName", - "src": "7775:5:1", - "type": "" - }, - { - "name": "len", + "name": "value", "nodeType": "YulTypedName", - "src": "7782:3:1", + "src": "7750:5:1", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "startIndex", + "name": "converted", "nodeType": "YulTypedName", - "src": "7787:10:1", + "src": "7760:9:1", "type": "" } ], - "src": "7720:543:1" + "src": "7710:142:1" }, { "body": { "nodeType": "YulBlock", - "src": "8332:54:1", + "src": "7905:28:1", "statements": [ { "nodeType": "YulAssignment", - "src": "8342:37:1", + "src": "7915:12:1", "value": { - "arguments": [ - { - "name": "bits", - "nodeType": "YulIdentifier", - "src": "8367:4:1" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8373:5:1" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "8363:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "8363:16:1" + "name": "value", + "nodeType": "YulIdentifier", + "src": "7922:5:1" }, "variableNames": [ { - "name": "newValue", + "name": "ret", "nodeType": "YulIdentifier", - "src": "8342:8:1" + "src": "7915:3:1" } ] } ] }, - "name": "shift_right_unsigned_dynamic", + "name": "prepare_store_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ - { - "name": "bits", - "nodeType": "YulTypedName", - "src": "8307:4:1", - "type": "" - }, { "name": "value", "nodeType": "YulTypedName", - "src": "8313:5:1", + "src": "7891:5:1", "type": "" } ], "returnVariables": [ { - "name": "newValue", + "name": "ret", "nodeType": "YulTypedName", - "src": "8323:8:1", + "src": "7901:3:1", "type": "" } ], - "src": "8269:117:1" + "src": "7858:75:1" }, { "body": { "nodeType": "YulBlock", - "src": "8443:118:1", + "src": "8015:193:1", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "8453:68:1", + "src": "8025:63:1", "value": { "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "8080:7:1" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "8049:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "8049:39:1" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "8029:16:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "8104:4:1" + }, { "arguments": [ { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8502:1:1", - "type": "", - "value": "8" - }, - { - "name": "bytes", + "name": "slot", "nodeType": "YulIdentifier", - "src": "8505:5:1" + "src": "8144:4:1" } ], "functionName": { - "name": "mul", + "name": "sload", "nodeType": "YulIdentifier", - "src": "8498:3:1" + "src": "8138:5:1" }, "nodeType": "YulFunctionCall", - "src": "8498:13:1" + "src": "8138:11:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8151:6:1" }, { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8517:1:1", - "type": "", - "value": "0" + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "8183:16:1" } ], "functionName": { - "name": "not", + "name": "prepare_store_t_uint256", "nodeType": "YulIdentifier", - "src": "8513:3:1" + "src": "8159:23:1" }, "nodeType": "YulFunctionCall", - "src": "8513:6:1" + "src": "8159:41:1" } ], "functionName": { - "name": "shift_right_unsigned_dynamic", + "name": "update_byte_slice_dynamic32", "nodeType": "YulIdentifier", - "src": "8469:28:1" + "src": "8110:27:1" }, "nodeType": "YulFunctionCall", - "src": "8469:51:1" + "src": "8110:91:1" } ], "functionName": { - "name": "not", + "name": "sstore", "nodeType": "YulIdentifier", - "src": "8465:3:1" + "src": "8097:6:1" }, "nodeType": "YulFunctionCall", - "src": "8465:56:1" + "src": "8097:105:1" }, - "variables": [ - { - "name": "mask", - "nodeType": "YulTypedName", - "src": "8457:4:1", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8530:25:1", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "8544:4:1" - }, - { - "name": "mask", - "nodeType": "YulIdentifier", - "src": "8550:4:1" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "8540:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "8540:15:1" - }, - "variableNames": [ - { - "name": "result", - "nodeType": "YulIdentifier", - "src": "8530:6:1" - } - ] + "nodeType": "YulExpressionStatement", + "src": "8097:105:1" } ] }, - "name": "mask_bytes_dynamic", + "name": "update_storage_value_t_uint256_to_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "data", + "name": "slot", "nodeType": "YulTypedName", - "src": "8420:4:1", + "src": "7992:4:1", "type": "" }, { - "name": "bytes", + "name": "offset", "nodeType": "YulTypedName", - "src": "8426:5:1", + "src": "7998:6:1", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "8006:7:1", "type": "" } ], + "src": "7939:269:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8263:24:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8273:8:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8280:1:1", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "8273:3:1" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", "returnVariables": [ { - "name": "result", + "name": "ret", "nodeType": "YulTypedName", - "src": "8436:6:1", + "src": "8259:3:1", "type": "" } ], - "src": "8392:169:1" + "src": "8214:73:1" }, { "body": { "nodeType": "YulBlock", - "src": "8647:214:1", + "src": "8346:136:1", "statements": [ { - "nodeType": "YulAssignment", - "src": "8780:37:1", + "nodeType": "YulVariableDeclaration", + "src": "8356:46:1", "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "8807:4:1" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "8813:3:1" - } - ], + "arguments": [], "functionName": { - "name": "mask_bytes_dynamic", + "name": "zero_value_for_split_t_uint256", "nodeType": "YulIdentifier", - "src": "8788:18:1" + "src": "8370:30:1" }, "nodeType": "YulFunctionCall", - "src": "8788:29:1" + "src": "8370:32:1" }, - "variableNames": [ + "variables": [ { - "name": "data", - "nodeType": "YulIdentifier", - "src": "8780:4:1" + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "8360:6:1", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "8826:29:1", - "value": { + "expression": { "arguments": [ { - "name": "data", + "name": "slot", "nodeType": "YulIdentifier", - "src": "8837:4:1" + "src": "8455:4:1" }, { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8847:1:1", - "type": "", - "value": "2" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "8850:3:1" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "8843:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "8843:11:1" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8461:6:1" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "8469:6:1" } ], "functionName": { - "name": "or", + "name": "update_storage_value_t_uint256_to_t_uint256", "nodeType": "YulIdentifier", - "src": "8834:2:1" + "src": "8411:43:1" }, "nodeType": "YulFunctionCall", - "src": "8834:21:1" + "src": "8411:65:1" }, - "variableNames": [ - { - "name": "used", - "nodeType": "YulIdentifier", - "src": "8826:4:1" - } - ] + "nodeType": "YulExpressionStatement", + "src": "8411:65:1" } ] }, - "name": "extract_used_part_and_set_length_of_short_byte_array", + "name": "storage_set_to_zero_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "data", + "name": "slot", "nodeType": "YulTypedName", - "src": "8628:4:1", + "src": "8332:4:1", "type": "" }, { - "name": "len", - "nodeType": "YulTypedName", - "src": "8634:3:1", - "type": "" - } - ], - "returnVariables": [ - { - "name": "used", + "name": "offset", "nodeType": "YulTypedName", - "src": "8642:4:1", + "src": "8338:6:1", "type": "" } ], - "src": "8566:295:1" + "src": "8293:189:1" }, { "body": { "nodeType": "YulBlock", - "src": "8958:1303:1", + "src": "8538:136:1", "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "8969:51:1", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "9016:3:1" - } - ], - "functionName": { - "name": "array_length_t_string_memory_ptr", - "nodeType": "YulIdentifier", - "src": "8983:32:1" - }, - "nodeType": "YulFunctionCall", - "src": "8983:37:1" - }, - "variables": [ - { - "name": "newLen", - "nodeType": "YulTypedName", - "src": "8973:6:1", - "type": "" - } - ] - }, { "body": { "nodeType": "YulBlock", - "src": "9105:22:1", + "src": "8605:63:1", "statements": [ { "expression": { - "arguments": [], + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "8649:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8656:1:1", + "type": "", + "value": "0" + } + ], "functionName": { - "name": "panic_error_0x41", + "name": "storage_set_to_zero_t_uint256", "nodeType": "YulIdentifier", - "src": "9107:16:1" + "src": "8619:29:1" }, "nodeType": "YulFunctionCall", - "src": "9107:18:1" + "src": "8619:39:1" }, "nodeType": "YulExpressionStatement", - "src": "9107:18:1" + "src": "8619:39:1" } ] }, "condition": { "arguments": [ { - "name": "newLen", + "name": "start", "nodeType": "YulIdentifier", - "src": "9077:6:1" + "src": "8558:5:1" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9085:18:1", - "type": "", - "value": "0xffffffffffffffff" + "name": "end", + "nodeType": "YulIdentifier", + "src": "8565:3:1" } ], "functionName": { - "name": "gt", + "name": "lt", "nodeType": "YulIdentifier", - "src": "9074:2:1" + "src": "8555:2:1" }, "nodeType": "YulFunctionCall", - "src": "9074:30:1" + "src": "8555:14:1" }, - "nodeType": "YulIf", - "src": "9071:56:1" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9137:52:1", - "value": { - "arguments": [ + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "8570:26:1", + "statements": [ { - "arguments": [ + "nodeType": "YulAssignment", + "src": "8572:22:1", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "8585:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8592:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8581:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8581:13:1" + }, + "variableNames": [ { - "name": "slot", + "name": "start", "nodeType": "YulIdentifier", - "src": "9183:4:1" + "src": "8572:5:1" } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "9177:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "9177:11:1" + ] } - ], - "functionName": { - "name": "extract_byte_array_length", - "nodeType": "YulIdentifier", - "src": "9151:25:1" - }, - "nodeType": "YulFunctionCall", - "src": "9151:38:1" + ] }, - "variables": [ - { - "name": "oldLen", - "nodeType": "YulTypedName", - "src": "9141:6:1", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "9282:4:1" - }, - { - "name": "oldLen", - "nodeType": "YulIdentifier", - "src": "9288:6:1" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "9296:6:1" - } - ], - "functionName": { - "name": "clean_up_bytearray_end_slots_t_string_storage", - "nodeType": "YulIdentifier", - "src": "9236:45:1" - }, - "nodeType": "YulFunctionCall", - "src": "9236:67:1" + "pre": { + "nodeType": "YulBlock", + "src": "8552:2:1", + "statements": [] }, - "nodeType": "YulExpressionStatement", - "src": "9236:67:1" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9313:18:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9330:1:1", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "srcOffset", - "nodeType": "YulTypedName", - "src": "9317:9:1", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "9341:17:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9354:4:1", - "type": "", - "value": "0x20" - }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "9341:9:1" - } - ] - }, + "src": "8548:120:1" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "8526:5:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8533:3:1", + "type": "" + } + ], + "src": "8488:186:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8759:464:1", + "statements": [ { - "cases": [ - { - "body": { - "nodeType": "YulBlock", - "src": "9405:611:1", - "statements": [ + "body": { + "nodeType": "YulBlock", + "src": "8785:431:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8799:54:1", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "8847:5:1" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nodeType": "YulIdentifier", + "src": "8815:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "8815:38:1" + }, + "variables": [ { - "nodeType": "YulVariableDeclaration", - "src": "9419:37:1", - "value": { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "8803:8:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8866:63:1", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "8889:8:1" + }, + { "arguments": [ { - "name": "newLen", + "name": "startIndex", "nodeType": "YulIdentifier", - "src": "9438:6:1" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9450:4:1", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "9446:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9446:9:1" + "src": "8917:10:1" } ], "functionName": { - "name": "and", + "name": "divide_by_32_ceil", "nodeType": "YulIdentifier", - "src": "9434:3:1" + "src": "8899:17:1" }, "nodeType": "YulFunctionCall", - "src": "9434:22:1" - }, - "variables": [ - { - "name": "loopEnd", - "nodeType": "YulTypedName", - "src": "9423:7:1", - "type": "" - } - ] + "src": "8899:29:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8885:3:1" }, + "nodeType": "YulFunctionCall", + "src": "8885:44:1" + }, + "variables": [ { - "nodeType": "YulVariableDeclaration", - "src": "9470:51:1", - "value": { - "arguments": [ + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "8870:11:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9086:27:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9088:23:1", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "9103:8:1" + }, + "variableNames": [ { - "name": "slot", + "name": "deleteStart", "nodeType": "YulIdentifier", - "src": "9516:4:1" + "src": "9088:11:1" } - ], - "functionName": { - "name": "array_dataslot_t_string_storage", - "nodeType": "YulIdentifier", - "src": "9484:31:1" - }, - "nodeType": "YulFunctionCall", - "src": "9484:37:1" + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "9070:10:1" }, - "variables": [ - { - "name": "dstPtr", - "nodeType": "YulTypedName", - "src": "9474:6:1", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9534:10:1", - "value": { + { "kind": "number", "nodeType": "YulLiteral", - "src": "9543:1:1", + "src": "9082:2:1", "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "9538:1:1", - "type": "" - } - ] + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "9067:2:1" }, - { - "body": { - "nodeType": "YulBlock", - "src": "9602:163:1", - "statements": [ + "nodeType": "YulFunctionCall", + "src": "9067:18:1" + }, + "nodeType": "YulIf", + "src": "9064:49:1" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "9155:11:1" + }, + { + "arguments": [ { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "9627:6:1" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "9645:3:1" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "9650:9:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9641:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9641:19:1" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "9635:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "9635:26:1" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "9620:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "9620:42:1" - }, - "nodeType": "YulExpressionStatement", - "src": "9620:42:1" - }, - { - "nodeType": "YulAssignment", - "src": "9679:24:1", - "value": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "9693:6:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9701:1:1", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9689:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9689:14:1" - }, - "variableNames": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "9679:6:1" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "9720:31:1", - "value": { - "arguments": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "9737:9:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9748:2:1", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9733:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9733:18:1" - }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "9720:9:1" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "9568:1:1" - }, - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "9571:7:1" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "9565:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "9565:14:1" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "9580:21:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "9582:17:1", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "9591:1:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9594:4:1", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9587:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9587:12:1" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "9582:1:1" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "9561:3:1", - "statements": [] - }, - "src": "9557:208:1" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9801:156:1", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "9819:43:1", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "9846:3:1" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "9851:9:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9842:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9842:19:1" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "9836:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "9836:26:1" - }, - "variables": [ - { - "name": "lastValue", - "nodeType": "YulTypedName", - "src": "9823:9:1", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "9886:6:1" - }, - { - "arguments": [ - { - "name": "lastValue", - "nodeType": "YulIdentifier", - "src": "9913:9:1" - }, - { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "9928:6:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9936:4:1", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "9924:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9924:17:1" - } - ], - "functionName": { - "name": "mask_bytes_dynamic", - "nodeType": "YulIdentifier", - "src": "9894:18:1" - }, - "nodeType": "YulFunctionCall", - "src": "9894:48:1" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "9879:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "9879:64:1" - }, - "nodeType": "YulExpressionStatement", - "src": "9879:64:1" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "9784:7:1" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "9793:6:1" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "9781:2:1" - }, - "nodeType": "YulFunctionCall", - "src": "9781:19:1" - }, - "nodeType": "YulIf", - "src": "9778:179:1" - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "9977:4:1" + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "9172:8:1" }, { "arguments": [ { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "9991:6:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9999:1:1", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "9987:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "9987:14:1" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10003:1:1", - "type": "", - "value": "1" + "name": "len", + "nodeType": "YulIdentifier", + "src": "9200:3:1" } ], "functionName": { - "name": "add", + "name": "divide_by_32_ceil", "nodeType": "YulIdentifier", - "src": "9983:3:1" + "src": "9182:17:1" }, "nodeType": "YulFunctionCall", - "src": "9983:22:1" + "src": "9182:22:1" } ], "functionName": { - "name": "sstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "9970:6:1" + "src": "9168:3:1" }, "nodeType": "YulFunctionCall", - "src": "9970:36:1" + "src": "9168:37:1" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "9126:28:1" + }, + "nodeType": "YulFunctionCall", + "src": "9126:80:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9126:80:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "8776:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8781:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8773:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "8773:11:1" + }, + "nodeType": "YulIf", + "src": "8770:446:1" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "8735:5:1", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "8742:3:1", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "8747:10:1", + "type": "" + } + ], + "src": "8680:543:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9292:54:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9302:37:1", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "9327:4:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9333:5:1" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "9323:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9323:16:1" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "9302:8:1" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "9267:4:1", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9273:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "9283:8:1", + "type": "" + } + ], + "src": "9229:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9403:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9413:68:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9462:1:1", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "9465:5:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "9458:3:1" }, - "nodeType": "YulExpressionStatement", - "src": "9970:36:1" + "nodeType": "YulFunctionCall", + "src": "9458:13:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9477:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "9473:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9473:6:1" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "9429:28:1" + }, + "nodeType": "YulFunctionCall", + "src": "9429:51:1" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "9425:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9425:56:1" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "9417:4:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9490:25:1", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9504:4:1" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "9510:4:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9500:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9500:15:1" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "9490:6:1" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "9380:4:1", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "9386:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "9396:6:1", + "type": "" + } + ], + "src": "9352:169:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9607:214:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9740:37:1", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9767:4:1" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "9773:3:1" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "9748:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "9748:29:1" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9740:4:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9786:29:1", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9797:4:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9807:1:1", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "9810:3:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "9803:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9803:11:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "9794:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "9794:21:1" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "9786:4:1" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "9588:4:1", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "9594:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "9602:4:1", + "type": "" + } + ], + "src": "9526:295:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9918:1303:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9929:51:1", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9976:3:1" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9943:32:1" + }, + "nodeType": "YulFunctionCall", + "src": "9943:37:1" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "9933:6:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10065:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "10067:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "10067:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10067:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10037:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10045:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10034:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10034:30:1" + }, + "nodeType": "YulIf", + "src": "10031:56:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10097:52:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "10143:4:1" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "10137:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "10137:11:1" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "10111:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "10111:38:1" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "10101:6:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "10242:4:1" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "10248:6:1" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10256:6:1" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nodeType": "YulIdentifier", + "src": "10196:45:1" + }, + "nodeType": "YulFunctionCall", + "src": "10196:67:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10196:67:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10273:18:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10290:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "10277:9:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10301:17:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10314:4:1", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "10301:9:1" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10365:611:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10379:37:1", + "value": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10398:6:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10410:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "10406:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10406:9:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10394:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10394:22:1" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "10383:7:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10430:51:1", + "value": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "10476:4:1" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nodeType": "YulIdentifier", + "src": "10444:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "10444:37:1" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "10434:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10494:10:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10503:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "10498:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10562:163:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "10587:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "10605:3:1" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "10610:9:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10601:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10601:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10595:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "10595:26:1" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "10580:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10580:42:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10580:42:1" + }, + { + "nodeType": "YulAssignment", + "src": "10639:24:1", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "10653:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10661:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10649:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10649:14:1" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "10639:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10680:31:1", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "10697:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10708:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10693:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10693:18:1" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "10680:9:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10528:1:1" + }, + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "10531:7:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10525:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10525:14:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "10540:21:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10542:17:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10551:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10554:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10547:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10547:12:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "10542:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "10521:3:1", + "statements": [] + }, + "src": "10517:208:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10761:156:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10779:43:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "10806:3:1" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "10811:9:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10802:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10802:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10796:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "10796:26:1" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "10783:9:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "10846:6:1" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "10873:9:1" + }, + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10888:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10896:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10884:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10884:17:1" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "10854:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "10854:48:1" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "10839:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10839:64:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10839:64:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "10744:7:1" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10753:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "10741:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10741:19:1" + }, + "nodeType": "YulIf", + "src": "10738:179:1" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "10937:4:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10951:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10959:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "10947:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10947:14:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10963:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10943:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10943:22:1" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "10930:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10930:36:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10930:36:1" + } + ] + }, + "nodeType": "YulCase", + "src": "10358:618:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10363:1:1", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10993:222:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11007:14:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11020:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11011:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11044:67:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11062:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "11081:3:1" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "11086:9:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11077:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11077:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11071:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "11071:26:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11062:5:1" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "11037:6:1" + }, + "nodeType": "YulIf", + "src": "11034:77:1" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "11131:4:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11190:5:1" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "11197:6:1" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "11137:52:1" + }, + "nodeType": "YulFunctionCall", + "src": "11137:67:1" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "11124:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11124:81:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11124:81:1" + } + ] + }, + "nodeType": "YulCase", + "src": "10985:230:1", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "10338:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10346:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10335:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10335:14:1" + }, + "nodeType": "YulSwitch", + "src": "10328:887:1" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "9907:4:1", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9913:3:1", + "type": "" + } + ], + "src": "9826:1395:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11255:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11272:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11275:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11265:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11265:88:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11265:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11369:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11372:4:1", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11362:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11362:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11362:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11393:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11396:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11386:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11386:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11386:15:1" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "11227:180:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11461:362:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11471:25:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11494:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11476:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "11476:20:1" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11471:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11505:25:1", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11528:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11510:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "11510:20:1" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11505:1:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11539:28:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11562:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11565:1:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "11558:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11558:9:1" + }, + "variables": [ + { + "name": "product_raw", + "nodeType": "YulTypedName", + "src": "11543:11:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11576:41:1", + "value": { + "arguments": [ + { + "name": "product_raw", + "nodeType": "YulIdentifier", + "src": "11605:11:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11587:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "11587:30:1" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "11576:7:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11794:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11796:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "11796:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11796:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11727:1:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11720:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11720:9:1" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11750:1:1" + }, + { + "arguments": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "11757:7:1" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11766:1:1" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11753:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11753:15:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11747:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "11747:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "11700:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "11700:83:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11680:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11680:113:1" + }, + "nodeType": "YulIf", + "src": "11677:139:1" + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11444:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11447:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "11453:7:1", + "type": "" + } + ], + "src": "11413:410:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11874:149:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11884:25:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11907:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11889:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "11889:20:1" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11884:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11918:25:1", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11941:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11923:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "11923:20:1" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11918:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11952:17:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11964:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "11967:1:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11960:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11960:9:1" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "11952:4:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11994:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "11996:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "11996:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11996:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "11985:4:1" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11991:1:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11982:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "11982:11:1" + }, + "nodeType": "YulIf", + "src": "11979:37:1" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "11860:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "11863:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "11869:4:1", + "type": "" + } + ], + "src": "11829:194:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12072:190:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12082:33:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12109:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12091:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "12091:24:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12082:5:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12205:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12207:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "12207:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12207:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12130:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12137:66:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12127:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "12127:77:1" + }, + "nodeType": "YulIf", + "src": "12124:103:1" + }, + { + "nodeType": "YulAssignment", + "src": "12236:20:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12247:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12254:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12243:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12243:13:1" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "12236:3:1" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12058:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "12068:3:1", + "type": "" + } + ], + "src": "12029:233:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12312:147:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12322:25:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12345:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12327:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "12327:20:1" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12322:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12356:25:1", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12379:1:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12361:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "12361:20:1" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12356:1:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12390:16:1", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12401:1:1" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "12404:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12397:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12397:9:1" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "12390:3:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12430:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12432:16:1" + }, + "nodeType": "YulFunctionCall", + "src": "12432:18:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12432:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "12422:1:1" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "12425:3:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "12419:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "12419:10:1" + }, + "nodeType": "YulIf", + "src": "12416:36:1" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "12299:1:1", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "12302:1:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "12308:3:1", + "type": "" + } + ], + "src": "12268:191: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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(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 allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\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 size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(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_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(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_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\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_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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_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_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 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 copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(value)\n }\n\n function abi_decode_tuple_t_int256(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_int256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "61:1265:0:-:0;;;149:74;;;;;;;;;;174:20;;;;;;;;;;;;;;;;;:8;:20;;;;;;:::i;:::-;;215:1;204:8;:12;;;;61:1265;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;61:1265:0:-;;;;;;;", + "deployedSourceMap": "61:1265:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;404:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;831:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;495:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;740:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1048:199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1253:71;;;:::i;:::-;;229:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;314:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;404:85;477:5;466:8;:16;;;;;;:::i;:::-;;404:85;:::o;831:211::-;883:4;897:15;915:1;897:19;;928:6;937:1;928:10;;924:87;945:1;940;:6;924:87;;1000:1;995;991;:5;;;;:::i;:::-;990:11;;;;:::i;:::-;976:10;:26;;;;:::i;:::-;963:39;;948:3;;;;;:::i;:::-;;;;924:87;;;;1025:10;1018:17;;;831:211;;;:::o;495:94::-;542:13;574:8;567:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;495:94;:::o;740:85::-;790:4;811:7;816:1;811:4;:7::i;:::-;804:14;;740:85;;;:::o;1048:199::-;1104:4;1118:14;1135:1;1118:18;;1148:6;1157:1;1148:10;;1144:73;1165:1;1160;:6;1144:73;;1207:1;1195:9;:13;;;;:::i;:::-;1183:25;;1168:3;;;;;:::i;:::-;;;;1144:73;;;;1231:9;1224:16;;;1048:199;;;:::o;1253:71::-;1304:13;;;;;;;;;;1253:71::o;229:79::-;294:7;283:8;:18;;;;229:79;:::o;314:84::-;361:3;383:8;;376:15;;314:84;:::o;595:139::-;640:4;662:1;658;:5;654:38;;;682:1;675:8;;;;654:38;718:9;725:1;723;:3;;;;:::i;:::-;718:4;:9::i;:::-;706;713:1;711;:3;;;;:::i;:::-;706:4;:9::i;:::-;:21;;;;:::i;:::-;699:28;;595:139;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:146::-;1707:6;1702:3;1697;1684:30;1748:1;1739:6;1734:3;1730:16;1723:27;1610:146;;;:::o;1762:425::-;1840:5;1865:66;1881:49;1923:6;1881:49;:::i;:::-;1865:66;:::i;:::-;1856:75;;1954:6;1947:5;1940:21;1992:4;1985:5;1981:16;2030:3;2021:6;2016:3;2012:16;2009:25;2006:112;;;2037:79;;:::i;:::-;2006:112;2127:54;2174:6;2169:3;2164;2127:54;:::i;:::-;1846:341;1762:425;;;;;:::o;2207:340::-;2263:5;2312:3;2305:4;2297:6;2293:17;2289:27;2279:122;;2320:79;;:::i;:::-;2279:122;2437:6;2424:20;2462:79;2537:3;2529:6;2522:4;2514:6;2510:17;2462:79;:::i;:::-;2453:88;;2269:278;2207:340;;;;:::o;2553:509::-;2622:6;2671:2;2659:9;2650:7;2646:23;2642:32;2639:119;;;2677:79;;:::i;:::-;2639:119;2825:1;2814:9;2810:17;2797:31;2855:18;2847:6;2844:30;2841:117;;;2877:79;;:::i;:::-;2841:117;2982:63;3037:7;3028:6;3017:9;3013:22;2982:63;:::i;:::-;2972:73;;2768:287;2553:509;;;;:::o;3068:77::-;3105:7;3134:5;3123:16;;3068:77;;;:::o;3151:122::-;3224:24;3242:5;3224:24;:::i;:::-;3217:5;3214:35;3204:63;;3263:1;3260;3253:12;3204:63;3151:122;:::o;3279:139::-;3325:5;3363:6;3350:20;3341:29;;3379:33;3406:5;3379:33;:::i;:::-;3279:139;;;;:::o;3424:329::-;3483:6;3532:2;3520:9;3511:7;3507:23;3503:32;3500:119;;;3538:79;;:::i;:::-;3500:119;3658:1;3683:53;3728:7;3719:6;3708:9;3704:22;3683:53;:::i;:::-;3673:63;;3629:117;3424:329;;;;:::o;3759:118::-;3846:24;3864:5;3846:24;:::i;:::-;3841:3;3834:37;3759:118;;:::o;3883:222::-;3976:4;4014:2;4003:9;3999:18;3991:26;;4027:71;4095:1;4084:9;4080:17;4071:6;4027:71;:::i;:::-;3883:222;;;;:::o;4111:99::-;4163:6;4197:5;4191:12;4181:22;;4111:99;;;:::o;4216:169::-;4300:11;4334:6;4329:3;4322:19;4374:4;4369:3;4365:14;4350:29;;4216:169;;;;:::o;4391:246::-;4472:1;4482:113;4496:6;4493:1;4490:13;4482:113;;;4581:1;4576:3;4572:11;4566:18;4562:1;4557:3;4553:11;4546:39;4518:2;4515:1;4511:10;4506:15;;4482:113;;;4629:1;4620:6;4615:3;4611:16;4604:27;4453:184;4391:246;;;:::o;4643:377::-;4731:3;4759:39;4792:5;4759:39;:::i;:::-;4814:71;4878:6;4873:3;4814:71;:::i;:::-;4807:78;;4894:65;4952:6;4947:3;4940:4;4933:5;4929:16;4894:65;:::i;:::-;4984:29;5006:6;4984:29;:::i;:::-;4979:3;4975:39;4968:46;;4735:285;4643:377;;;;:::o;5026:313::-;5139:4;5177:2;5166:9;5162:18;5154:26;;5226:9;5220:4;5216:20;5212:1;5201:9;5197:17;5190:47;5254:78;5327:4;5318:6;5254:78;:::i;:::-;5246:86;;5026:313;;;;:::o;5345:76::-;5381:7;5410:5;5399:16;;5345:76;;;:::o;5427:120::-;5499:23;5516:5;5499:23;:::i;:::-;5492:5;5489:34;5479:62;;5537:1;5534;5527:12;5479:62;5427:120;:::o;5553:137::-;5598:5;5636:6;5623:20;5614:29;;5652:32;5678:5;5652:32;:::i;:::-;5553:137;;;;:::o;5696:327::-;5754:6;5803:2;5791:9;5782:7;5778:23;5774:32;5771:119;;;5809:79;;:::i;:::-;5771:119;5929:1;5954:52;5998:7;5989:6;5978:9;5974:22;5954:52;:::i;:::-;5944:62;;5900:116;5696:327;;;;:::o;6029:115::-;6114:23;6131:5;6114:23;:::i;:::-;6109:3;6102:36;6029:115;;:::o;6150:218::-;6241:4;6279:2;6268:9;6264:18;6256:26;;6292:69;6358:1;6347:9;6343:17;6334:6;6292:69;:::i;:::-;6150:218;;;;:::o;6374:180::-;6422:77;6419:1;6412:88;6519:4;6516:1;6509:15;6543:4;6540:1;6533:15;6560:320;6604:6;6641:1;6635:4;6631:12;6621:22;;6688:1;6682:4;6678:12;6709:18;6699:81;;6765:4;6757:6;6753:17;6743:27;;6699:81;6827:2;6819:6;6816:14;6796:18;6793:38;6790:84;;6846:18;;:::i;:::-;6790:84;6611:269;6560:320;;;:::o;6886:141::-;6935:4;6958:3;6950:11;;6981:3;6978:1;6971:14;7015:4;7012:1;7002:18;6994:26;;6886:141;;;:::o;7033:93::-;7070:6;7117:2;7112;7105:5;7101:14;7097:23;7087:33;;7033:93;;;:::o;7132:107::-;7176:8;7226:5;7220:4;7216:16;7195:37;;7132:107;;;;:::o;7245:393::-;7314:6;7364:1;7352:10;7348:18;7387:97;7417:66;7406:9;7387:97;:::i;:::-;7505:39;7535:8;7524:9;7505:39;:::i;:::-;7493:51;;7577:4;7573:9;7566:5;7562:21;7553:30;;7626:4;7616:8;7612:19;7605:5;7602:30;7592:40;;7321:317;;7245:393;;;;;:::o;7644:60::-;7672:3;7693:5;7686:12;;7644:60;;;:::o;7710:142::-;7760:9;7793:53;7811:34;7820:24;7838:5;7820:24;:::i;:::-;7811:34;:::i;:::-;7793:53;:::i;:::-;7780:66;;7710:142;;;:::o;7858:75::-;7901:3;7922:5;7915:12;;7858:75;;;:::o;7939:269::-;8049:39;8080:7;8049:39;:::i;:::-;8110:91;8159:41;8183:16;8159:41;:::i;:::-;8151:6;8144:4;8138:11;8110:91;:::i;:::-;8104:4;8097:105;8015:193;7939:269;;;:::o;8214:73::-;8259:3;8214:73;:::o;8293:189::-;8370:32;;:::i;:::-;8411:65;8469:6;8461;8455:4;8411:65;:::i;:::-;8346:136;8293:189;;:::o;8488:186::-;8548:120;8565:3;8558:5;8555:14;8548:120;;;8619:39;8656:1;8649:5;8619:39;:::i;:::-;8592:1;8585:5;8581:13;8572:22;;8548:120;;;8488:186;;:::o;8680:543::-;8781:2;8776:3;8773:11;8770:446;;;8815:38;8847:5;8815:38;:::i;:::-;8899:29;8917:10;8899:29;:::i;:::-;8889:8;8885:44;9082:2;9070:10;9067:18;9064:49;;;9103:8;9088:23;;9064:49;9126:80;9182:22;9200:3;9182:22;:::i;:::-;9172:8;9168:37;9155:11;9126:80;:::i;:::-;8785:431;;8770:446;8680:543;;;:::o;9229:117::-;9283:8;9333:5;9327:4;9323:16;9302:37;;9229:117;;;;:::o;9352:169::-;9396:6;9429:51;9477:1;9473:6;9465:5;9462:1;9458:13;9429:51;:::i;:::-;9425:56;9510:4;9504;9500:15;9490:25;;9403:118;9352:169;;;;:::o;9526:295::-;9602:4;9748:29;9773:3;9767:4;9748:29;:::i;:::-;9740:37;;9810:3;9807:1;9803:11;9797:4;9794:21;9786:29;;9526:295;;;;:::o;9826:1395::-;9943:37;9976:3;9943:37;:::i;:::-;10045:18;10037:6;10034:30;10031:56;;;10067:18;;:::i;:::-;10031:56;10111:38;10143:4;10137:11;10111:38;:::i;:::-;10196:67;10256:6;10248;10242:4;10196:67;:::i;:::-;10290:1;10314:4;10301:17;;10346:2;10338:6;10335:14;10363:1;10358:618;;;;11020:1;11037:6;11034:77;;;11086:9;11081:3;11077:19;11071:26;11062:35;;11034:77;11137:67;11197:6;11190:5;11137:67;:::i;:::-;11131:4;11124:81;10993:222;10328:887;;10358:618;10410:4;10406:9;10398:6;10394:22;10444:37;10476:4;10444:37;:::i;:::-;10503:1;10517:208;10531:7;10528:1;10525:14;10517:208;;;10610:9;10605:3;10601:19;10595:26;10587:6;10580:42;10661:1;10653:6;10649:14;10639:24;;10708:2;10697:9;10693:18;10680:31;;10554:4;10551:1;10547:12;10542:17;;10517:208;;;10753:6;10744:7;10741:19;10738:179;;;10811:9;10806:3;10802:19;10796:26;10854:48;10896:4;10888:6;10884:17;10873:9;10854:48;:::i;:::-;10846:6;10839:64;10761:156;10738:179;10963:1;10959;10951:6;10947:14;10943:22;10937:4;10930:36;10365:611;;;10328:887;;9918:1303;;;9826:1395;;:::o;11227:180::-;11275:77;11272:1;11265:88;11372:4;11369:1;11362:15;11396:4;11393:1;11386:15;11413:410;11453:7;11476:20;11494:1;11476:20;:::i;:::-;11471:25;;11510:20;11528:1;11510:20;:::i;:::-;11505:25;;11565:1;11562;11558:9;11587:30;11605:11;11587:30;:::i;:::-;11576:41;;11766:1;11757:7;11753:15;11750:1;11747:22;11727:1;11720:9;11700:83;11677:139;;11796:18;;:::i;:::-;11677:139;11461:362;11413:410;;;;:::o;11829:194::-;11869:4;11889:20;11907:1;11889:20;:::i;:::-;11884:25;;11923:20;11941:1;11923:20;:::i;:::-;11918:25;;11967:1;11964;11960:9;11952:17;;11991:1;11985:4;11982:11;11979:37;;;11996:18;;:::i;:::-;11979:37;11829:194;;;;:::o;12029:233::-;12068:3;12091:24;12109:5;12091:24;:::i;:::-;12082:33;;12137:66;12130:5;12127:77;12124:103;;12207:18;;:::i;:::-;12124:103;12254:1;12247:5;12243:13;12236:20;;12029:233;;;:::o;12268:191::-;12308:3;12327:20;12345:1;12327:20;:::i;:::-;12322:25;;12361:20;12379:1;12361:20;:::i;:::-;12356:25;;12404:1;12401;12397:9;12390:16;;12425:3;12422:1;12419:10;12416:36;;;12432:18;;:::i;:::-;12416:36;12268:191;;;;:::o", + "source": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\ncontract Sample {\n string some_str;\n int some_num;\n\n event SampleEvent();\n\n constructor () {\n some_str = \"Default\";\n some_num = 0;\n }\n\n function set_some_num(int new_num) external {\n some_num = new_num;\n }\n\n function get_some_num() external view returns (int) {\n return some_num;\n }\n\n function set_some_str(string memory new_s) external {\n some_str = new_s;\n }\n\n function get_some_str() external view returns (string memory) {\n return some_str;\n }\n\n function fibo(uint n) internal pure returns (uint) {\n if (n < 2) {\n return n;\n }\n return fibo(n-1) + fibo(n-2);\n }\n\n function fibonacci(uint n) external pure returns (uint) {\n return fibo(n);\n }\n\n function odd_product(uint n) external pure returns (uint) {\n uint odd_prod_n = 1;\n for(uint i = 1; i <= n; i++) {\n odd_prod_n = odd_prod_n * ((2 * i) - 1);\n }\n return odd_prod_n;\n }\n\n function triangle_number(uint n) external pure returns (uint) {\n uint tri_num_n = 0;\n for(uint i = 1; i <= n; i++) {\n tri_num_n = tri_num_n + i;\n }\n return tri_num_n;\n }\n\n function emit_sample_event() external {\n emit SampleEvent();\n }\n}\n", + "sourcePath": "/Users/nikhild/Documents/substrate-node-template/template/benchmark-sample/contracts/benchmark-sample.sol", + "ast": { + "absolutePath": "project:/contracts/benchmark-sample.sol", + "exportedSymbols": { + "Sample": [ + 172 + ] + }, + "id": 173, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "36:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Sample", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 172, + "linearizedBaseContracts": [ + 172 + ], + "name": "Sample", + "nameLocation": "70:6:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "some_str", + "nameLocation": "90:8:0", + "nodeType": "VariableDeclaration", + "scope": 172, + "src": "83:15:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "83:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "some_num", + "nameLocation": "108:8:0", + "nodeType": "VariableDeclaration", + "scope": 172, + "src": "104:12:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "104:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "anonymous": false, + "eventSelector": "ac2adf6ed332a5083db5e35ca021adf8261ec0e49754a50170391bd3da37c661", + "id": 7, + "name": "SampleEvent", + "nameLocation": "129:11:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "140:2:0" + }, + "src": "123:20:0" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "164:59:0", + "statements": [ + { + "expression": { + "id": 12, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10, + "name": "some_str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "174:8:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "44656661756c74", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "185:9:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2388ace4b6c74bf1d37ee3a2fa37b787d525b289aa879f2d9bedf3eddf0fbedd", + "typeString": "literal_string \"Default\"" + }, + "value": "Default" + }, + "src": "174:20:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 13, + "nodeType": "ExpressionStatement", + "src": "174:20:0" + }, + { + "expression": { + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 14, + "name": "some_num", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "204:8:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "215:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "204:12:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "204:12:0" + } + ] + }, + "id": 19, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "161:2:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "164:0:0" + }, + "scope": 172, + "src": "149:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 28, + "nodeType": "Block", + "src": "273:35:0", + "statements": [ + { + "expression": { + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 24, + "name": "some_num", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "283:8:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 25, + "name": "new_num", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "294:7:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "283:18:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 27, + "nodeType": "ExpressionStatement", + "src": "283:18:0" + } + ] + }, + "functionSelector": "9ac1762f", + "id": 29, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set_some_num", + "nameLocation": "238:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 21, + "mutability": "mutable", + "name": "new_num", + "nameLocation": "255:7:0", + "nodeType": "VariableDeclaration", + "scope": 29, + "src": "251:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 20, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "251:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "250:13:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:0:0" + }, + "scope": 172, + "src": "229:79:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 36, + "nodeType": "Block", + "src": "366:32:0", + "statements": [ + { + "expression": { + "id": 34, + "name": "some_num", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "383:8:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 33, + "id": 35, + "nodeType": "Return", + "src": "376:15:0" + } + ] + }, + "functionSelector": "b40a136b", + "id": 37, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get_some_num", + "nameLocation": "323:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [], + "src": "335:2:0" + }, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "361:3:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 31, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "361:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "360:5:0" + }, + "scope": 172, + "src": "314:84:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 46, + "nodeType": "Block", + "src": "456:33:0", + "statements": [ + { + "expression": { + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 42, + "name": "some_str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "466:8:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 43, + "name": "new_s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "477:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "466:16:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 45, + "nodeType": "ExpressionStatement", + "src": "466:16:0" + } + ] + }, + "functionSelector": "0583a02c", + "id": 47, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set_some_str", + "nameLocation": "413:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "mutability": "mutable", + "name": "new_s", + "nameLocation": "440:5:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "426:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 38, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "426:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "425:21:0" + }, + "returnParameters": { + "id": 41, + "nodeType": "ParameterList", + "parameters": [], + "src": "456:0:0" + }, + "scope": 172, + "src": "404:85:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 54, + "nodeType": "Block", + "src": "557:32:0", + "statements": [ + { + "expression": { + "id": 52, + "name": "some_str", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "574:8:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 51, + "id": 53, + "nodeType": "Return", + "src": "567:15:0" + } + ] + }, + "functionSelector": "5e9c155e", + "id": 55, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get_some_str", + "nameLocation": "504:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [], + "src": "516:2:0" + }, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 55, + "src": "542:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 49, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "542:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "541:15:0" + }, + "scope": 172, + "src": "495:94:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 81, + "nodeType": "Block", + "src": "646:88:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 62, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "658:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "32", + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "662:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "658:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 68, + "nodeType": "IfStatement", + "src": "654:38:0", + "trueBody": { + "id": 67, + "nodeType": "Block", + "src": "665:27:0", + "statements": [ + { + "expression": { + "id": 65, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "682:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - "nodeType": "YulCase", - "src": "9398:618:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9403:1:1", - "type": "", - "value": "1" + }, + "functionReturnParameters": 61, + "id": 66, + "nodeType": "Return", + "src": "675:8:0" } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "body": { - "nodeType": "YulBlock", - "src": "10033:222:1", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "10047:14:1", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10060:1:1", - "type": "", - "value": "0" + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 70, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "711:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "713:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "10051:5:1", - "type": "" - } - ] + "value": "1" }, + "src": "711:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ { - "body": { - "nodeType": "YulBlock", - "src": "10084:67:1", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "10102:35:1", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "10121:3:1" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "10126:9:1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10117:3:1" - }, - "nodeType": "YulFunctionCall", - "src": "10117:19:1" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "10111:5:1" - }, - "nodeType": "YulFunctionCall", - "src": "10111:26:1" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "10102:5:1" - } - ] - } - ] - }, - "condition": { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "10077:6:1" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 69, + "name": "fibo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "706:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "706:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 75, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "723:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "32", + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "725:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" }, - "nodeType": "YulIf", - "src": "10074:77:1" + "value": "2" }, + "src": "723:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "10171:4:1" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "10230:5:1" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "10237:6:1" - } - ], - "functionName": { - "name": "extract_used_part_and_set_length_of_short_byte_array", - "nodeType": "YulIdentifier", - "src": "10177:52:1" - }, - "nodeType": "YulFunctionCall", - "src": "10177:67:1" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "10164:6:1" - }, - "nodeType": "YulFunctionCall", - "src": "10164:81:1" - }, - "nodeType": "YulExpressionStatement", - "src": "10164:81:1" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - "nodeType": "YulCase", - "src": "10025:230:1", - "value": "default" - } - ], - "expression": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "9378:6:1" + ], + "id": 74, + "name": "fibo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 82, + "src": "718:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9386:2:1", - "type": "", - "value": "31" + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "718:9:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "9375:2:1" }, - "nodeType": "YulFunctionCall", - "src": "9375:14:1" + "src": "706:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "nodeType": "YulSwitch", - "src": "9368:887:1" - } - ] - }, - "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "slot", - "nodeType": "YulTypedName", - "src": "8947:4:1", - "type": "" - }, - { - "name": "src", - "nodeType": "YulTypedName", - "src": "8953:3:1", - "type": "" - } - ], - "src": "8866:1395: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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(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 allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\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 size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(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_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(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_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\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_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\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 copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(value)\n }\n\n function abi_decode_tuple_t_int256(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_int256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n", - "id": 1, - "language": "Yul", - "name": "#utility.yul" - } - ], - "sourceMap": "61:512:0:-:0;;;132:73;;;;;;;;;;156:20;;;;;;;;;;;;;;;;;:8;:20;;;;;;:::i;:::-;;197:1;186:8;:12;;;;61:512;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;61:512:0:-;;;;;;;", - "deployedSourceMap": "61:512:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;386:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;477:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;211:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;296:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;386:85;459:5;448:8;:16;;;;;;:::i;:::-;;386:85;:::o;477:94::-;524:13;556:8;549:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:94;:::o;211:79::-;276:7;265:8;:18;;;;211:79;:::o;296:84::-;343:3;365:8;;358:15;;296:84;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:146::-;1707:6;1702:3;1697;1684:30;1748:1;1739:6;1734:3;1730:16;1723:27;1610:146;;;:::o;1762:425::-;1840:5;1865:66;1881:49;1923:6;1881:49;:::i;:::-;1865:66;:::i;:::-;1856:75;;1954:6;1947:5;1940:21;1992:4;1985:5;1981:16;2030:3;2021:6;2016:3;2012:16;2009:25;2006:112;;;2037:79;;:::i;:::-;2006:112;2127:54;2174:6;2169:3;2164;2127:54;:::i;:::-;1846:341;1762:425;;;;;:::o;2207:340::-;2263:5;2312:3;2305:4;2297:6;2293:17;2289:27;2279:122;;2320:79;;:::i;:::-;2279:122;2437:6;2424:20;2462:79;2537:3;2529:6;2522:4;2514:6;2510:17;2462:79;:::i;:::-;2453:88;;2269:278;2207:340;;;;:::o;2553:509::-;2622:6;2671:2;2659:9;2650:7;2646:23;2642:32;2639:119;;;2677:79;;:::i;:::-;2639:119;2825:1;2814:9;2810:17;2797:31;2855:18;2847:6;2844:30;2841:117;;;2877:79;;:::i;:::-;2841:117;2982:63;3037:7;3028:6;3017:9;3013:22;2982:63;:::i;:::-;2972:73;;2768:287;2553:509;;;;:::o;3068:99::-;3120:6;3154:5;3148:12;3138:22;;3068:99;;;:::o;3173:169::-;3257:11;3291:6;3286:3;3279:19;3331:4;3326:3;3322:14;3307:29;;3173:169;;;;:::o;3348:246::-;3429:1;3439:113;3453:6;3450:1;3447:13;3439:113;;;3538:1;3533:3;3529:11;3523:18;3519:1;3514:3;3510:11;3503:39;3475:2;3472:1;3468:10;3463:15;;3439:113;;;3586:1;3577:6;3572:3;3568:16;3561:27;3410:184;3348:246;;;:::o;3600:377::-;3688:3;3716:39;3749:5;3716:39;:::i;:::-;3771:71;3835:6;3830:3;3771:71;:::i;:::-;3764:78;;3851:65;3909:6;3904:3;3897:4;3890:5;3886:16;3851:65;:::i;:::-;3941:29;3963:6;3941:29;:::i;:::-;3936:3;3932:39;3925:46;;3692:285;3600:377;;;;:::o;3983:313::-;4096:4;4134:2;4123:9;4119:18;4111:26;;4183:9;4177:4;4173:20;4169:1;4158:9;4154:17;4147:47;4211:78;4284:4;4275:6;4211:78;:::i;:::-;4203:86;;3983:313;;;;:::o;4302:76::-;4338:7;4367:5;4356:16;;4302:76;;;:::o;4384:120::-;4456:23;4473:5;4456:23;:::i;:::-;4449:5;4446:34;4436:62;;4494:1;4491;4484:12;4436:62;4384:120;:::o;4510:137::-;4555:5;4593:6;4580:20;4571:29;;4609:32;4635:5;4609:32;:::i;:::-;4510:137;;;;:::o;4653:327::-;4711:6;4760:2;4748:9;4739:7;4735:23;4731:32;4728:119;;;4766:79;;:::i;:::-;4728:119;4886:1;4911:52;4955:7;4946:6;4935:9;4931:22;4911:52;:::i;:::-;4901:62;;4857:116;4653:327;;;;:::o;4986:115::-;5071:23;5088:5;5071:23;:::i;:::-;5066:3;5059:36;4986:115;;:::o;5107:218::-;5198:4;5236:2;5225:9;5221:18;5213:26;;5249:69;5315:1;5304:9;5300:17;5291:6;5249:69;:::i;:::-;5107:218;;;;:::o;5331:180::-;5379:77;5376:1;5369:88;5476:4;5473:1;5466:15;5500:4;5497:1;5490:15;5517:320;5561:6;5598:1;5592:4;5588:12;5578:22;;5645:1;5639:4;5635:12;5666:18;5656:81;;5722:4;5714:6;5710:17;5700:27;;5656:81;5784:2;5776:6;5773:14;5753:18;5750:38;5747:84;;5803:18;;:::i;:::-;5747:84;5568:269;5517:320;;;:::o;5843:141::-;5892:4;5915:3;5907:11;;5938:3;5935:1;5928:14;5972:4;5969:1;5959:18;5951:26;;5843:141;;;:::o;5990:93::-;6027:6;6074:2;6069;6062:5;6058:14;6054:23;6044:33;;5990:93;;;:::o;6089:107::-;6133:8;6183:5;6177:4;6173:16;6152:37;;6089:107;;;;:::o;6202:393::-;6271:6;6321:1;6309:10;6305:18;6344:97;6374:66;6363:9;6344:97;:::i;:::-;6462:39;6492:8;6481:9;6462:39;:::i;:::-;6450:51;;6534:4;6530:9;6523:5;6519:21;6510:30;;6583:4;6573:8;6569:19;6562:5;6559:30;6549:40;;6278:317;;6202:393;;;;;:::o;6601:77::-;6638:7;6667:5;6656:16;;6601:77;;;:::o;6684:60::-;6712:3;6733:5;6726:12;;6684:60;;;:::o;6750:142::-;6800:9;6833:53;6851:34;6860:24;6878:5;6860:24;:::i;:::-;6851:34;:::i;:::-;6833:53;:::i;:::-;6820:66;;6750:142;;;:::o;6898:75::-;6941:3;6962:5;6955:12;;6898:75;;;:::o;6979:269::-;7089:39;7120:7;7089:39;:::i;:::-;7150:91;7199:41;7223:16;7199:41;:::i;:::-;7191:6;7184:4;7178:11;7150:91;:::i;:::-;7144:4;7137:105;7055:193;6979:269;;;:::o;7254:73::-;7299:3;7254:73;:::o;7333:189::-;7410:32;;:::i;:::-;7451:65;7509:6;7501;7495:4;7451:65;:::i;:::-;7386:136;7333:189;;:::o;7528:186::-;7588:120;7605:3;7598:5;7595:14;7588:120;;;7659:39;7696:1;7689:5;7659:39;:::i;:::-;7632:1;7625:5;7621:13;7612:22;;7588:120;;;7528:186;;:::o;7720:543::-;7821:2;7816:3;7813:11;7810:446;;;7855:38;7887:5;7855:38;:::i;:::-;7939:29;7957:10;7939:29;:::i;:::-;7929:8;7925:44;8122:2;8110:10;8107:18;8104:49;;;8143:8;8128:23;;8104:49;8166:80;8222:22;8240:3;8222:22;:::i;:::-;8212:8;8208:37;8195:11;8166:80;:::i;:::-;7825:431;;7810:446;7720:543;;;:::o;8269:117::-;8323:8;8373:5;8367:4;8363:16;8342:37;;8269:117;;;;:::o;8392:169::-;8436:6;8469:51;8517:1;8513:6;8505:5;8502:1;8498:13;8469:51;:::i;:::-;8465:56;8550:4;8544;8540:15;8530:25;;8443:118;8392:169;;;;:::o;8566:295::-;8642:4;8788:29;8813:3;8807:4;8788:29;:::i;:::-;8780:37;;8850:3;8847:1;8843:11;8837:4;8834:21;8826:29;;8566:295;;;;:::o;8866:1395::-;8983:37;9016:3;8983:37;:::i;:::-;9085:18;9077:6;9074:30;9071:56;;;9107:18;;:::i;:::-;9071:56;9151:38;9183:4;9177:11;9151:38;:::i;:::-;9236:67;9296:6;9288;9282:4;9236:67;:::i;:::-;9330:1;9354:4;9341:17;;9386:2;9378:6;9375:14;9403:1;9398:618;;;;10060:1;10077:6;10074:77;;;10126:9;10121:3;10117:19;10111:26;10102:35;;10074:77;10177:67;10237:6;10230:5;10177:67;:::i;:::-;10171:4;10164:81;10033:222;9368:887;;9398:618;9450:4;9446:9;9438:6;9434:22;9484:37;9516:4;9484:37;:::i;:::-;9543:1;9557:208;9571:7;9568:1;9565:14;9557:208;;;9650:9;9645:3;9641:19;9635:26;9627:6;9620:42;9701:1;9693:6;9689:14;9679:24;;9748:2;9737:9;9733:18;9720:31;;9594:4;9591:1;9587:12;9582:17;;9557:208;;;9793:6;9784:7;9781:19;9778:179;;;9851:9;9846:3;9842:19;9836:26;9894:48;9936:4;9928:6;9924:17;9913:9;9894:48;:::i;:::-;9886:6;9879:64;9801:156;9778:179;10003:1;9999;9991:6;9987:14;9983:22;9977:4;9970:36;9405:611;;;9368:887;;8958:1303;;;8866:1395;;:::o", - "source": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\ncontract BenchmarkSample {\n string some_str;\n int some_num;\n\n constructor() {\n some_str = \"Default\";\n some_num = 0;\n }\n\n function set_some_num(int new_num) external {\n some_num = new_num;\n }\n\n function get_some_num() external view returns (int) {\n return some_num;\n }\n\n function set_some_str(string memory new_s) external {\n some_str = new_s;\n }\n\n function get_some_str() external view returns (string memory) {\n return some_str;\n }\n}", - "sourcePath": "/Users/nikhild/Documents/rust-workplace/frontier/template/benchmark-sample/contracts/benchmark-sample.sol", - "ast": { - "absolutePath": "project:/contracts/benchmark-sample.sol", - "exportedSymbols": { - "BenchmarkSample": [ - 54 - ] - }, - "id": 55, - "license": "GPL-3.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "36:23:0" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "BenchmarkSample", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 54, - "linearizedBaseContracts": [ - 54 - ], - "name": "BenchmarkSample", - "nameLocation": "70:15:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 3, - "mutability": "mutable", - "name": "some_str", - "nameLocation": "99:8:0", - "nodeType": "VariableDeclaration", - "scope": 54, - "src": "92:15:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 2, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "92:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5, - "mutability": "mutable", - "name": "some_num", - "nameLocation": "117:8:0", - "nodeType": "VariableDeclaration", - "scope": 54, - "src": "113:12:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "functionReturnParameters": 61, + "id": 80, + "nodeType": "Return", + "src": "699:28:0" + } + ] }, - "typeName": { - "id": 4, - "name": "int", - "nodeType": "ElementaryTypeName", - "src": "113:3:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } + "id": 82, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "fibo", + "nameLocation": "604:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "n", + "nameLocation": "614:1:0", + "nodeType": "VariableDeclaration", + "scope": 82, + "src": "609:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 56, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "609:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "608:8:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 60, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 82, + "src": "640:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 59, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "640:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "639:6:0" }, + "scope": 172, + "src": "595:139:0", + "stateMutability": "pure", + "virtual": false, "visibility": "internal" }, { "body": { - "id": 16, + "id": 93, "nodeType": "Block", - "src": "146:59:0", + "src": "796:29:0", "statements": [ { "expression": { - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8, - "name": "some_str", + "arguments": [ + { + "id": 90, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "816:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 89, + "name": "fibo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "156:8:0", + "referencedDeclaration": 82, + "src": "811:4:0", "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "44656661756c74", - "id": 9, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "167:9:0", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2388ace4b6c74bf1d37ee3a2fa37b787d525b289aa879f2d9bedf3eddf0fbedd", - "typeString": "literal_string \"Default\"" - }, - "value": "Default" - }, - "src": "156:20:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 11, - "nodeType": "ExpressionStatement", - "src": "156:20:0" - }, - { - "expression": { - "id": 14, + "id": 91, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftHandSide": { - "id": 12, - "name": "some_num", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "186:8:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 13, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "197:1:0", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "186:12:0", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "811:7:0", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 15, - "nodeType": "ExpressionStatement", - "src": "186:12:0" + "functionReturnParameters": 88, + "id": 92, + "nodeType": "Return", + "src": "804:14:0" } ] }, - "id": 17, + "functionSelector": "61047ff4", + "id": 94, "implemented": true, - "kind": "constructor", + "kind": "function", "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", + "name": "fibonacci", + "nameLocation": "749:9:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 6, + "id": 85, "nodeType": "ParameterList", - "parameters": [], - "src": "143:2:0" + "parameters": [ + { + "constant": false, + "id": 84, + "mutability": "mutable", + "name": "n", + "nameLocation": "764:1:0", + "nodeType": "VariableDeclaration", + "scope": 94, + "src": "759:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 83, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "759:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "758:8:0" }, "returnParameters": { - "id": 7, + "id": 88, "nodeType": "ParameterList", - "parameters": [], - "src": "146:0:0" + "parameters": [ + { + "constant": false, + "id": 87, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 94, + "src": "790:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 86, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "790:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "789:6:0" }, - "scope": 54, - "src": "132:73:0", - "stateMutability": "nonpayable", + "scope": 172, + "src": "740:85:0", + "stateMutability": "pure", "virtual": false, - "visibility": "public" + "visibility": "external" }, { "body": { - "id": 26, + "id": 131, "nodeType": "Block", - "src": "255:35:0", + "src": "889:153:0", "statements": [ { - "expression": { - "id": 24, + "assignments": [ + 102 + ], + "declarations": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "odd_prod_n", + "nameLocation": "902:10:0", + "nodeType": "VariableDeclaration", + "scope": 131, + "src": "897:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 101, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "897:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 104, + "initialValue": { + "hexValue": "31", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "915:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "897:19:0" + }, + { + "body": { + "id": 127, + "nodeType": "Block", + "src": "953:58:0", + "statements": [ + { + "expression": { + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 115, + "name": "odd_prod_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "963:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 116, + "name": "odd_prod_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "976:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "991:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 118, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "995:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "991:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 120, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "990:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1000:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "990:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 123, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "989:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "976:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "963:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 126, + "nodeType": "ExpressionStatement", + "src": "963:39:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "id": 22, - "name": "some_num", + "leftExpression": { + "id": 109, + "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "265:8:0", + "referencedDeclaration": 106, + "src": "940:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 110, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "945:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "940:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 128, + "initializationExpression": { + "assignments": [ + 106 + ], + "declarations": [ + { + "constant": false, + "id": 106, + "mutability": "mutable", + "name": "i", + "nameLocation": "933:1:0", + "nodeType": "VariableDeclaration", + "scope": 128, + "src": "928:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 105, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 108, + "initialValue": { + "hexValue": "31", + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "937:1:0", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 23, - "name": "new_num", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 19, - "src": "276:7:0", + "nodeType": "VariableDeclarationStatement", + "src": "928:10:0" + }, + "loopExpression": { + "expression": { + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "948:3:0", + "subExpression": { + "id": 112, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "948:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "265:18:0", + "id": 114, + "nodeType": "ExpressionStatement", + "src": "948:3:0" + }, + "nodeType": "ForStatement", + "src": "924:87:0" + }, + { + "expression": { + "id": 129, + "name": "odd_prod_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "1025:10:0", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 25, - "nodeType": "ExpressionStatement", - "src": "265:18:0" + "functionReturnParameters": 100, + "id": 130, + "nodeType": "Return", + "src": "1018:17:0" } ] }, - "functionSelector": "9ac1762f", - "id": 27, + "functionSelector": "113d5646", + "id": 132, "implemented": true, "kind": "function", "modifiers": [], - "name": "set_some_num", - "nameLocation": "220:12:0", + "name": "odd_product", + "nameLocation": "840:11:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 20, + "id": 97, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 19, + "id": 96, "mutability": "mutable", - "name": "new_num", - "nameLocation": "237:7:0", + "name": "n", + "nameLocation": "857:1:0", "nodeType": "VariableDeclaration", - "scope": 27, - "src": "233:11:0", + "scope": 132, + "src": "852:6:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 18, - "name": "int", + "id": 95, + "name": "uint", "nodeType": "ElementaryTypeName", - "src": "233:3:0", + "src": "852:4:0", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "232:13:0" - }, - "returnParameters": { - "id": 21, - "nodeType": "ParameterList", - "parameters": [], - "src": "255:0:0" - }, - "scope": 54, - "src": "211:79:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 34, - "nodeType": "Block", - "src": "348:32:0", - "statements": [ - { - "expression": { - "id": 32, - "name": "some_num", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "365:8:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "functionReturnParameters": 31, - "id": 33, - "nodeType": "Return", - "src": "358:15:0" - } - ] - }, - "functionSelector": "b40a136b", - "id": 35, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "get_some_num", - "nameLocation": "305:12:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 28, - "nodeType": "ParameterList", - "parameters": [], - "src": "317:2:0" + "src": "851:8:0" }, "returnParameters": { - "id": 31, + "id": 100, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 30, + "id": 99, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 35, - "src": "343:3:0", + "scope": 132, + "src": "883:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 29, - "name": "int", + "id": 98, + "name": "uint", "nodeType": "ElementaryTypeName", - "src": "343:3:0", + "src": "883:4:0", "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "342:5:0" + "src": "882:6:0" }, - "scope": 54, - "src": "296:84:0", - "stateMutability": "view", + "scope": 172, + "src": "831:211:0", + "stateMutability": "pure", "virtual": false, "visibility": "external" }, { "body": { - "id": 44, + "id": 163, "nodeType": "Block", - "src": "438:33:0", + "src": "1110:137:0", "statements": [ { - "expression": { - "id": 42, + "assignments": [ + 140 + ], + "declarations": [ + { + "constant": false, + "id": 140, + "mutability": "mutable", + "name": "tri_num_n", + "nameLocation": "1123:9:0", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "1118:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 139, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1118:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 142, + "initialValue": { + "hexValue": "30", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1135:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1118:18:0" + }, + { + "body": { + "id": 159, + "nodeType": "Block", + "src": "1173:44:0", + "statements": [ + { + "expression": { + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 153, + "name": "tri_num_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "1183:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 154, + "name": "tri_num_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "1195:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 155, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1207:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1195:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1183:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 158, + "nodeType": "ExpressionStatement", + "src": "1183:25:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "id": 40, - "name": "some_str", + "leftExpression": { + "id": 147, + "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "448:8:0", + "referencedDeclaration": 144, + "src": "1160:1:0", "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 41, - "name": "new_s", + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 148, + "name": "n", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "459:5:0", + "referencedDeclaration": 134, + "src": "1165:1:0", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "448:16:0", + "src": "1160:6:0", "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 43, - "nodeType": "ExpressionStatement", - "src": "448:16:0" + "id": 160, + "initializationExpression": { + "assignments": [ + 144 + ], + "declarations": [ + { + "constant": false, + "id": 144, + "mutability": "mutable", + "name": "i", + "nameLocation": "1153:1:0", + "nodeType": "VariableDeclaration", + "scope": 160, + "src": "1148:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1148:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 146, + "initialValue": { + "hexValue": "31", + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1157:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1148:10:0" + }, + "loopExpression": { + "expression": { + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1168:3:0", + "subExpression": { + "id": 150, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1168:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 152, + "nodeType": "ExpressionStatement", + "src": "1168:3:0" + }, + "nodeType": "ForStatement", + "src": "1144:73:0" + }, + { + "expression": { + "id": 161, + "name": "tri_num_n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "1231:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 138, + "id": 162, + "nodeType": "Return", + "src": "1224:16:0" } ] }, - "functionSelector": "0583a02c", - "id": 45, + "functionSelector": "8187c52b", + "id": 164, "implemented": true, "kind": "function", "modifiers": [], - "name": "set_some_str", - "nameLocation": "395:12:0", + "name": "triangle_number", + "nameLocation": "1057:15:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 38, + "id": 135, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 37, + "id": 134, "mutability": "mutable", - "name": "new_s", - "nameLocation": "422:5:0", + "name": "n", + "nameLocation": "1078:1:0", "nodeType": "VariableDeclaration", - "scope": 45, - "src": "408:19:0", + "scope": 164, + "src": "1073:6:0", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 36, - "name": "string", + "id": 133, + "name": "uint", "nodeType": "ElementaryTypeName", - "src": "408:6:0", + "src": "1073:4:0", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "407:21:0" + "src": "1072:8:0" }, "returnParameters": { - "id": 39, + "id": 138, "nodeType": "ParameterList", - "parameters": [], - "src": "438:0:0" + "parameters": [ + { + "constant": false, + "id": 137, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 164, + "src": "1104:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 136, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1104:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1103:6:0" }, - "scope": 54, - "src": "386:85:0", - "stateMutability": "nonpayable", + "scope": 172, + "src": "1048:199:0", + "stateMutability": "pure", "virtual": false, "visibility": "external" }, { "body": { - "id": 52, + "id": 170, "nodeType": "Block", - "src": "539:32:0", + "src": "1291:33:0", "statements": [ { - "expression": { - "id": 50, - "name": "some_str", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "556:8:0", + "eventCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 167, + "name": "SampleEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1304:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1304:13:0", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 49, - "id": 51, - "nodeType": "Return", - "src": "549:15:0" + "id": 169, + "nodeType": "EmitStatement", + "src": "1299:18:0" } ] }, - "functionSelector": "5e9c155e", - "id": 53, + "functionSelector": "93063bb1", + "id": 171, "implemented": true, "kind": "function", "modifiers": [], - "name": "get_some_str", - "nameLocation": "486:12:0", + "name": "emit_sample_event", + "nameLocation": "1262:17:0", "nodeType": "FunctionDefinition", "parameters": { - "id": 46, + "id": 165, "nodeType": "ParameterList", "parameters": [], - "src": "498:2:0" + "src": "1279:2:0" }, "returnParameters": { - "id": 49, + "id": 166, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 48, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 53, - "src": "524:13:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 47, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "524:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "523:15:0" + "parameters": [], + "src": "1291:0:0" }, - "scope": 54, - "src": "477:94:0", - "stateMutability": "view", + "scope": 172, + "src": "1253:71:0", + "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], - "scope": 55, - "src": "61:512:0", + "scope": 173, + "src": "61:1265:0", "usedErrors": [] } ], - "src": "36:537:0" + "src": "36:1291:0" }, "compiler": { "name": "solc", @@ -9272,7 +12101,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2023-03-23T17:49:48.983Z", + "updatedAt": "2023-07-04T06:15:13.261Z", "devdoc": { "kind": "dev", "methods": {}, diff --git a/template/benchmark-sample/contracts/benchmark-sample.sol b/template/benchmark-sample/contracts/benchmark-sample.sol index ecc4eab6..bdc486ba 100644 --- a/template/benchmark-sample/contracts/benchmark-sample.sol +++ b/template/benchmark-sample/contracts/benchmark-sample.sol @@ -1,11 +1,13 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; -contract BenchmarkSample { +contract Sample { string some_str; int some_num; - constructor() { + event SampleEvent(); + + constructor () { some_str = "Default"; some_num = 0; } @@ -25,4 +27,35 @@ contract BenchmarkSample { function get_some_str() external view returns (string memory) { return some_str; } -} \ No newline at end of file + + function fibo(uint n) internal pure returns (uint) { + if (n < 2) { + return n; + } + return fibo(n-1) + fibo(n-2); + } + + function fibonacci(uint n) external pure returns (uint) { + return fibo(n); + } + + function odd_product(uint n) external pure returns (uint) { + uint odd_prod_n = 1; + for(uint i = 1; i <= n; i++) { + odd_prod_n = odd_prod_n * ((2 * i) - 1); + } + return odd_prod_n; + } + + function triangle_number(uint n) external pure returns (uint) { + uint tri_num_n = 0; + for(uint i = 1; i <= n; i++) { + tri_num_n = tri_num_n + i; + } + return tri_num_n; + } + + function emit_sample_event() external { + emit SampleEvent(); + } +} diff --git a/template/node/src/command.rs b/template/node/src/command.rs index 896541c0..297e072f 100644 --- a/template/node/src/command.rs +++ b/template/node/src/command.rs @@ -267,6 +267,38 @@ pub fn run() -> sc_cli::Result<()> { ("native_solidity_benchmark_sample").clone(), ("get_some_str").clone(), )), + Box::new(NativeSolidityGenericCallBuilder::new( + client.clone(), + read_source_address(), + read_contract_address(), + String::from("61047ff4000000000000000000000000000000000000000000000000000000000000000a"), + ("native_solidity_benchmark_sample").clone(), + ("fibonacci").clone(), + )), + Box::new(NativeSolidityGenericCallBuilder::new( + client.clone(), + read_source_address(), + read_contract_address(), + String::from("113d5646000000000000000000000000000000000000000000000000000000000000000a"), + ("native_solidity_benchmark_sample").clone(), + ("odd_product").clone(), + )), + Box::new(NativeSolidityGenericCallBuilder::new( + client.clone(), + read_source_address(), + read_contract_address(), + String::from("8187c52b000000000000000000000000000000000000000000000000000000000000000a"), + ("native_solidity_benchmark_sample").clone(), + ("triangle_number").clone(), + )), + Box::new(NativeSolidityGenericCallBuilder::new( + client.clone(), + read_source_address(), + read_contract_address(), + String::from("93063bb1"), + ("native_solidity_benchmark_sample").clone(), + ("emit_sample_event").clone(), + )), Box::new(NativeSolidityGenericCallBuilder::new( client.clone(), read_source_address(),