diff --git a/build/contracts/BEBadgeV2.json b/build/contracts/BEBadgeV2.json new file mode 100644 index 0000000..eb81993 --- /dev/null +++ b/build/contracts/BEBadgeV2.json @@ -0,0 +1,20819 @@ +{ + "contractName": "BEBadgeV2", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_supplyLimt", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "metaAddress", + "type": "address" + } + ], + "name": "MetaAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "support", + "type": "bool" + } + ], + "name": "MinterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "minters", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "supplyLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "baseTokenURI", + "type": "string" + } + ], + "name": "updateBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + }, + { + "internalType": "bool", + "name": "_support", + "type": "bool" + } + ], + "name": "updateMinters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supplyLimt\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"metaAddress\",\"type\":\"address\"}],\"name\":\"MetaAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"}],\"name\":\"MinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"minters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"safeMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"updateMinters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeMint(address)\":{\"details\":\"Safely mints a new token and assigns it to the specified address. Only the account with the minter permission can call this function. tokenId begin with 1. \",\"params\":{\"_to\":\"The address to which the newly minted token will be assigned.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"},\"updateMinters(address,bool)\":{\"details\":\"Updates the minters mapping to allow or disallow a specific address to mint tokens. Only the contract owner can call this function.\",\"params\":{\"_address\":\"The address to update the minting permission for.\",\"_support\":\"A boolean indicating whether the address should be allowed to mint tokens or not.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/BEBadgeV2.sol\":\"BEBadgeV2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005\",\"dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol\":{\"keccak256\":\"0x52da94e59d870f54ca0eb4f485c3d9602011f668ba34d72c88124a1496ebaab1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09656a37963a61e79df0b718ad0ec323cd29d409d6ead33dbb91d0770ff87fa4\",\"dweb:/ipfs/QmXLWCYoMpZ4SecK4kVaL53LZWXZNbQG8gUzACmZ6A64rE\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0xa8796bd16014cefb8c26449413981a49c510f92a98d6828494f5fd046223ced3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63a5e0bb5a7d182e0d0eef87033f78115eab791de3626a929bc98c157087880a\",\"dweb:/ipfs/QmetkXAu2CJKS4qrZtEQPU8okAPwUwa6HL4XYwk8vrYMk8\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"project:/contracts/tokens/erc721/BEBadgeV2.sol\":{\"keccak256\":\"0x5869c9115607c90e05f3bb1960c57f11e9267145f80d55d41a0baa4bdf1180be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07723a6eed4d42dcddde36bccc0bc4352de5881309723487491b24c49fb13a76\",\"dweb:/ipfs/QmYArcj48qQDnZ1T7sc2EwECz2vfFns9fz5DVZG4aBin83\"]}},\"version\":1}", + "bytecode": "0x60a060405260405180602001604052806000815250600b90805190602001906200002b929190620001d8565b503480156200003957600080fd5b5060405162003f9f38038062003f9f83398181016040528101906200005f919062000460565b828262000081620000756200010c60201b60201c565b6200011460201b60201c565b816001908051906020019062000099929190620001d8565b508060029080519060200190620000b2929190620001d8565b50505060008111620000fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000f29062000581565b60405180910390fd5b806080818152505050505062000608565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001e690620005d2565b90600052602060002090601f0160209004810192826200020a576000855562000256565b82601f106200022557805160ff191683800117855562000256565b8280016001018555821562000256579182015b828111156200025557825182559160200191906001019062000238565b5b50905062000265919062000269565b5090565b5b80821115620002845760008160009055506001016200026a565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002f182620002a6565b810181811067ffffffffffffffff82111715620003135762000312620002b7565b5b80604052505050565b60006200032862000288565b9050620003368282620002e6565b919050565b600067ffffffffffffffff821115620003595762000358620002b7565b5b6200036482620002a6565b9050602081019050919050565b60005b838110156200039157808201518184015260208101905062000374565b83811115620003a1576000848401525b50505050565b6000620003be620003b8846200033b565b6200031c565b905082815260208101848484011115620003dd57620003dc620002a1565b5b620003ea84828562000371565b509392505050565b600082601f8301126200040a57620004096200029c565b5b81516200041c848260208601620003a7565b91505092915050565b6000819050919050565b6200043a8162000425565b81146200044657600080fd5b50565b6000815190506200045a816200042f565b92915050565b6000806000606084860312156200047c576200047b62000292565b5b600084015167ffffffffffffffff8111156200049d576200049c62000297565b5b620004ab86828701620003f2565b935050602084015167ffffffffffffffff811115620004cf57620004ce62000297565b5b620004dd86828701620003f2565b9250506040620004f08682870162000449565b9150509250925092565b600082825260208201905092915050565b7f537570706c79206c696d6974206d75737420626520677265617465722074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b600062000569602383620004fa565b915062000576826200050b565b604082019050919050565b600060208201905081810360008301526200059c816200055a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005eb57607f821691505b60208210811415620006025762000601620005a3565b5b50919050565b6080516139746200062b6000396000818161070501526108c301526139746000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610448578063e985e9c514610478578063f2fde38b146104a8578063f46eccc4146104c457610173565b8063a22cb465146103f4578063a9570f1314610410578063b88d4fde1461042c57610173565b80636352211e1461033257806370a0823114610362578063715018a6146103925780638da5cb5b1461039c578063931688cb146103ba57806395d89b41146103d657610173565b806323b872dd1161013057806323b872dd1461024e5780632f745c591461026a57806340d097c31461029a57806342842e0e146102ca57806342966c68146102e65780634f6ccce71461030257610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f657806318160ddd1461021257806319d1997a14610230575b600080fd5b610192600480360381019061018d91906126fd565b6104f4565b60405161019f9190612745565b60405180910390f35b6101b0610506565b6040516101bd91906127f9565b60405180910390f35b6101e060048036038101906101db9190612851565b610598565b6040516101ed91906128bf565b60405180910390f35b610210600480360381019061020b9190612906565b6105de565b005b61021a6106f6565b6040516102279190612955565b60405180910390f35b610238610703565b6040516102459190612955565b60405180910390f35b61026860048036038101906102639190612970565b610727565b005b610284600480360381019061027f9190612906565b610787565b6040516102919190612955565b60405180910390f35b6102b460048036038101906102af91906129c3565b61082c565b6040516102c19190612955565b60405180910390f35b6102e460048036038101906102df9190612970565b610951565b005b61030060048036038101906102fb9190612851565b610971565b005b61031c60048036038101906103179190612851565b6109cd565b6040516103299190612955565b60405180910390f35b61034c60048036038101906103479190612851565b610a3e565b60405161035991906128bf565b60405180910390f35b61037c600480360381019061037791906129c3565b610ac5565b6040516103899190612955565b60405180910390f35b61039a610b7d565b005b6103a4610b91565b6040516103b191906128bf565b60405180910390f35b6103d460048036038101906103cf9190612a55565b610bba565b005b6103de610bd8565b6040516103eb91906127f9565b60405180910390f35b61040e60048036038101906104099190612ace565b610c6a565b005b61042a60048036038101906104259190612ace565b610c80565b005b61044660048036038101906104419190612c3e565b610d31565b005b610462600480360381019061045d9190612851565b610d93565b60405161046f91906127f9565b60405180910390f35b610492600480360381019061048d9190612cc1565b610dfb565b60405161049f9190612745565b60405180910390f35b6104c260048036038101906104bd91906129c3565b610e8f565b005b6104de60048036038101906104d991906129c3565b610f13565b6040516104eb9190612745565b60405180910390f35b60006104ff82610f33565b9050919050565b60606001805461051590612d30565b80601f016020809104026020016040519081016040528092919081815260200182805461054190612d30565b801561058e5780601f106105635761010080835404028352916020019161058e565b820191906000526020600020905b81548152906001019060200180831161057157829003601f168201915b5050505050905090565b60006105a382610fad565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105e982610a3e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561065a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065190612dd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610679610ff8565b73ffffffffffffffffffffffffffffffffffffffff1614806106a857506106a7816106a2610ff8565b610dfb565b5b6106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90612e66565b60405180910390fd5b6106f18383611000565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610738610732610ff8565b826110b9565b610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90612ef8565b60405180910390fd5b61078283838361114e565b505050565b600061079283610ac5565b82106107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90612f8a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600d600061083a610ff8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b89061301c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600c5410610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90613088565b60405180910390fd5b6000600c60008154610936906130d7565b91905081905590506109488382611448565b80915050919050565b61096c83838360405180602001604052806000815250610d31565b505050565b61098261097c610ff8565b826110b9565b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612ef8565b60405180910390fd5b6109ca81611466565b50565b60006109d76106f6565b8210610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90613192565b60405180910390fd5b60098281548110610a2c57610a2b6131b2565b5b90600052602060002001549050919050565b600080610a4a836115b4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061322d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d906132bf565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b856115f1565b610b8f600061166f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc26115f1565b8181600b9190610bd39291906125ee565b505050565b606060028054610be790612d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1390612d30565b8015610c605780601f10610c3557610100808354040283529160200191610c60565b820191906000526020600020905b815481529060010190602001808311610c4357829003601f168201915b5050505050905090565b610c7c610c75610ff8565b8383611733565b5050565b610c886115f1565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb21afb9ce9be0a676f8f317ff0ca072fb89a4f8ce2d1b6fe80f8755c14f1cb1982604051610d259190612745565b60405180910390a25050565b610d42610d3c610ff8565b836110b9565b610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7890612ef8565b60405180910390fd5b610d8d848484846118a0565b50505050565b6060610d9e82610fad565b6000610da86118fc565b90506000815111610dc85760405180602001604052806000815250610df3565b80610dd28461198e565b604051602001610de392919061331b565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e976115f1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe906133b1565b60405180910390fd5b610f108161166f565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fa65750610fa582611a66565b5b9050919050565b610fb681611b48565b610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec9061322d565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661107383610a3e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806110c583610a3e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061110757506111068185610dfb565b5b8061114557508373ffffffffffffffffffffffffffffffffffffffff1661112d84610598565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661116e82610a3e565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90613443565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906134d5565b60405180910390fd5b6112418383836001611b89565b8273ffffffffffffffffffffffffffffffffffffffff1661126182610a3e565b73ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90613443565b60405180910390fd5b6005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114438383836001611b9b565b505050565b611462828260405180602001604052806000815250611ba1565b5050565b600061147182610a3e565b9050611481816000846001611b89565b61148a82610a3e565b90506005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115b0816000846001611b9b565b5050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6115f9610ff8565b73ffffffffffffffffffffffffffffffffffffffff16611617610b91565b73ffffffffffffffffffffffffffffffffffffffff161461166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490613541565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611799906135ad565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118939190612745565b60405180910390a3505050565b6118ab84848461114e565b6118b784848484611bfc565b6118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed9061363f565b60405180910390fd5b50505050565b6060600b805461190b90612d30565b80601f016020809104026020016040519081016040528092919081815260200182805461193790612d30565b80156119845780601f1061195957610100808354040283529160200191611984565b820191906000526020600020905b81548152906001019060200180831161196757829003601f168201915b5050505050905090565b60606000600161199d84611d84565b01905060008167ffffffffffffffff8111156119bc576119bb612b13565b5b6040519080825280601f01601f1916602001820160405280156119ee5781602001600182028036833780820191505090505b509050600082602001820190505b600115611a5b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611a4557611a4461365f565b5b0494506000851415611a5657611a5b565b6119fc565b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b3157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611b415750611b4082611ed7565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611b6a836115b4565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611b9584848484611f41565b50505050565b50505050565b611bab83836120a1565b611bb86000848484611bfc565b611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9061363f565b60405180910390fd5b505050565b6000611c1d8473ffffffffffffffffffffffffffffffffffffffff166122bf565b15611d77578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c46610ff8565b8786866040518563ffffffff1660e01b8152600401611c6894939291906136e3565b6020604051808303816000875af1925050508015611ca457506040513d601f19601f82011682018060405250810190611ca19190613744565b60015b611d27573d8060008114611cd4576040519150601f19603f3d011682016040523d82523d6000602084013e611cd9565b606091505b50600081511415611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d169061363f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d7c565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611de2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611dd857611dd761365f565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e1f576d04ee2d6d415b85acef81000000008381611e1557611e1461365f565b5b0492506020810190505b662386f26fc100008310611e4e57662386f26fc100008381611e4457611e4361365f565b5b0492506010810190505b6305f5e1008310611e77576305f5e1008381611e6d57611e6c61365f565b5b0492506008810190505b6127108310611e9c576127108381611e9257611e9161365f565b5b0492506004810190505b60648310611ebf5760648381611eb557611eb461365f565b5b0492506002810190505b600a8310611ece576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f4d848484846122e2565b6001811115611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906137e3565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611fd957611fd4816122e8565b612018565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612017576120168582612331565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561205b576120568161249e565b61209a565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461209957612098848261256f565b5b5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121089061384f565b60405180910390fd5b61211a81611b48565b1561215a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612151906138bb565b60405180910390fd5b612168600083836001611b89565b61217181611b48565b156121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a8906138bb565b60405180910390fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122bb600083836001611b9b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161233e84610ac5565b61234891906138db565b905060006008600084815260200190815260200160002054905081811461242d576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506124b291906138db565b90506000600a60008481526020019081526020016000205490506000600983815481106124e2576124e16131b2565b5b906000526020600020015490508060098381548110612504576125036131b2565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a60008581526020019081526020016000206000905560098054806125535761255261390f565b5b6001900381819060005260206000200160009055905550505050565b600061257a83610ac5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546125fa90612d30565b90600052602060002090601f01602090048101928261261c5760008555612663565b82601f1061263557803560ff1916838001178555612663565b82800160010185558215612663579182015b82811115612662578235825591602001919060010190612647565b5b5090506126709190612674565b5090565b5b8082111561268d576000816000905550600101612675565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126da816126a5565b81146126e557600080fd5b50565b6000813590506126f7816126d1565b92915050565b6000602082840312156127135761271261269b565b5b6000612721848285016126e8565b91505092915050565b60008115159050919050565b61273f8161272a565b82525050565b600060208201905061275a6000830184612736565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279a57808201518184015260208101905061277f565b838111156127a9576000848401525b50505050565b6000601f19601f8301169050919050565b60006127cb82612760565b6127d5818561276b565b93506127e581856020860161277c565b6127ee816127af565b840191505092915050565b6000602082019050818103600083015261281381846127c0565b905092915050565b6000819050919050565b61282e8161281b565b811461283957600080fd5b50565b60008135905061284b81612825565b92915050565b6000602082840312156128675761286661269b565b5b60006128758482850161283c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b82525050565b60006020820190506128d460008301846128b0565b92915050565b6128e38161289e565b81146128ee57600080fd5b50565b600081359050612900816128da565b92915050565b6000806040838503121561291d5761291c61269b565b5b600061292b858286016128f1565b925050602061293c8582860161283c565b9150509250929050565b61294f8161281b565b82525050565b600060208201905061296a6000830184612946565b92915050565b6000806000606084860312156129895761298861269b565b5b6000612997868287016128f1565b93505060206129a8868287016128f1565b92505060406129b98682870161283c565b9150509250925092565b6000602082840312156129d9576129d861269b565b5b60006129e7848285016128f1565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a1557612a146129f0565b5b8235905067ffffffffffffffff811115612a3257612a316129f5565b5b602083019150836001820283011115612a4e57612a4d6129fa565b5b9250929050565b60008060208385031215612a6c57612a6b61269b565b5b600083013567ffffffffffffffff811115612a8a57612a896126a0565b5b612a96858286016129ff565b92509250509250929050565b612aab8161272a565b8114612ab657600080fd5b50565b600081359050612ac881612aa2565b92915050565b60008060408385031215612ae557612ae461269b565b5b6000612af3858286016128f1565b9250506020612b0485828601612ab9565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b4b826127af565b810181811067ffffffffffffffff82111715612b6a57612b69612b13565b5b80604052505050565b6000612b7d612691565b9050612b898282612b42565b919050565b600067ffffffffffffffff821115612ba957612ba8612b13565b5b612bb2826127af565b9050602081019050919050565b82818337600083830152505050565b6000612be1612bdc84612b8e565b612b73565b905082815260208101848484011115612bfd57612bfc612b0e565b5b612c08848285612bbf565b509392505050565b600082601f830112612c2557612c246129f0565b5b8135612c35848260208601612bce565b91505092915050565b60008060008060808587031215612c5857612c5761269b565b5b6000612c66878288016128f1565b9450506020612c77878288016128f1565b9350506040612c888782880161283c565b925050606085013567ffffffffffffffff811115612ca957612ca86126a0565b5b612cb587828801612c10565b91505092959194509250565b60008060408385031215612cd857612cd761269b565b5b6000612ce6858286016128f1565b9250506020612cf7858286016128f1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d4857607f821691505b60208210811415612d5c57612d5b612d01565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dbe60218361276b565b9150612dc982612d62565b604082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612e50603d8361276b565b9150612e5b82612df4565b604082019050919050565b60006020820190508181036000830152612e7f81612e43565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612ee2602d8361276b565b9150612eed82612e86565b604082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612f74602b8361276b565b9150612f7f82612f18565b604082019050919050565b60006020820190508181036000830152612fa381612f67565b9050919050565b7f4164647265737320646f6573206e6f74206861766520746865206d696e74657260008201527f207065726d697373696f6e000000000000000000000000000000000000000000602082015250565b6000613006602b8361276b565b915061301182612faa565b604082019050919050565b6000602082019050818103600083015261303581612ff9565b9050919050565b7f457863656564732074686520746f74616c20737570706c790000000000000000600082015250565b600061307260188361276b565b915061307d8261303c565b602082019050919050565b600060208201905081810360008301526130a181613065565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130e28261281b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613115576131146130a8565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061317c602c8361276b565b915061318782613120565b604082019050919050565b600060208201905081810360008301526131ab8161316f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061321760188361276b565b9150613222826131e1565b602082019050919050565b600060208201905081810360008301526132468161320a565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006132a960298361276b565b91506132b48261324d565b604082019050919050565b600060208201905081810360008301526132d88161329c565b9050919050565b600081905092915050565b60006132f582612760565b6132ff81856132df565b935061330f81856020860161277c565b80840191505092915050565b600061332782856132ea565b915061333382846132ea565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339b60268361276b565b91506133a68261333f565b604082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061342d60258361276b565b9150613438826133d1565b604082019050919050565b6000602082019050818103600083015261345c81613420565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134bf60248361276b565b91506134ca82613463565b604082019050919050565b600060208201905081810360008301526134ee816134b2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061352b60208361276b565b9150613536826134f5565b602082019050919050565b6000602082019050818103600083015261355a8161351e565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061359760198361276b565b91506135a282613561565b602082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061362960328361276b565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006136b58261368e565b6136bf8185613699565b93506136cf81856020860161277c565b6136d8816127af565b840191505092915050565b60006080820190506136f860008301876128b0565b61370560208301866128b0565b6137126040830185612946565b818103606083015261372481846136aa565b905095945050505050565b60008151905061373e816126d1565b92915050565b60006020828403121561375a5761375961269b565b5b60006137688482850161372f565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b60006137cd60358361276b565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061383960208361276b565b915061384482613803565b602082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006138a5601c8361276b565b91506138b08261386f565b602082019050919050565b600060208201905081810360008301526138d481613898565b9050919050565b60006138e68261281b565b91506138f18361281b565b925082821015613904576139036130a8565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220236b07de3abafa747cddcb9a78aa58a2c334c54592bed92bb111b5e437dd25eb64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610448578063e985e9c514610478578063f2fde38b146104a8578063f46eccc4146104c457610173565b8063a22cb465146103f4578063a9570f1314610410578063b88d4fde1461042c57610173565b80636352211e1461033257806370a0823114610362578063715018a6146103925780638da5cb5b1461039c578063931688cb146103ba57806395d89b41146103d657610173565b806323b872dd1161013057806323b872dd1461024e5780632f745c591461026a57806340d097c31461029a57806342842e0e146102ca57806342966c68146102e65780634f6ccce71461030257610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f657806318160ddd1461021257806319d1997a14610230575b600080fd5b610192600480360381019061018d91906126fd565b6104f4565b60405161019f9190612745565b60405180910390f35b6101b0610506565b6040516101bd91906127f9565b60405180910390f35b6101e060048036038101906101db9190612851565b610598565b6040516101ed91906128bf565b60405180910390f35b610210600480360381019061020b9190612906565b6105de565b005b61021a6106f6565b6040516102279190612955565b60405180910390f35b610238610703565b6040516102459190612955565b60405180910390f35b61026860048036038101906102639190612970565b610727565b005b610284600480360381019061027f9190612906565b610787565b6040516102919190612955565b60405180910390f35b6102b460048036038101906102af91906129c3565b61082c565b6040516102c19190612955565b60405180910390f35b6102e460048036038101906102df9190612970565b610951565b005b61030060048036038101906102fb9190612851565b610971565b005b61031c60048036038101906103179190612851565b6109cd565b6040516103299190612955565b60405180910390f35b61034c60048036038101906103479190612851565b610a3e565b60405161035991906128bf565b60405180910390f35b61037c600480360381019061037791906129c3565b610ac5565b6040516103899190612955565b60405180910390f35b61039a610b7d565b005b6103a4610b91565b6040516103b191906128bf565b60405180910390f35b6103d460048036038101906103cf9190612a55565b610bba565b005b6103de610bd8565b6040516103eb91906127f9565b60405180910390f35b61040e60048036038101906104099190612ace565b610c6a565b005b61042a60048036038101906104259190612ace565b610c80565b005b61044660048036038101906104419190612c3e565b610d31565b005b610462600480360381019061045d9190612851565b610d93565b60405161046f91906127f9565b60405180910390f35b610492600480360381019061048d9190612cc1565b610dfb565b60405161049f9190612745565b60405180910390f35b6104c260048036038101906104bd91906129c3565b610e8f565b005b6104de60048036038101906104d991906129c3565b610f13565b6040516104eb9190612745565b60405180910390f35b60006104ff82610f33565b9050919050565b60606001805461051590612d30565b80601f016020809104026020016040519081016040528092919081815260200182805461054190612d30565b801561058e5780601f106105635761010080835404028352916020019161058e565b820191906000526020600020905b81548152906001019060200180831161057157829003601f168201915b5050505050905090565b60006105a382610fad565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105e982610a3e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561065a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065190612dd4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610679610ff8565b73ffffffffffffffffffffffffffffffffffffffff1614806106a857506106a7816106a2610ff8565b610dfb565b5b6106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90612e66565b60405180910390fd5b6106f18383611000565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610738610732610ff8565b826110b9565b610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90612ef8565b60405180910390fd5b61078283838361114e565b505050565b600061079283610ac5565b82106107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90612f8a565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600d600061083a610ff8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b89061301c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600c5410610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90613088565b60405180910390fd5b6000600c60008154610936906130d7565b91905081905590506109488382611448565b80915050919050565b61096c83838360405180602001604052806000815250610d31565b505050565b61098261097c610ff8565b826110b9565b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612ef8565b60405180910390fd5b6109ca81611466565b50565b60006109d76106f6565b8210610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90613192565b60405180910390fd5b60098281548110610a2c57610a2b6131b2565b5b90600052602060002001549050919050565b600080610a4a836115b4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061322d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d906132bf565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b856115f1565b610b8f600061166f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc26115f1565b8181600b9190610bd39291906125ee565b505050565b606060028054610be790612d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1390612d30565b8015610c605780601f10610c3557610100808354040283529160200191610c60565b820191906000526020600020905b815481529060010190602001808311610c4357829003601f168201915b5050505050905090565b610c7c610c75610ff8565b8383611733565b5050565b610c886115f1565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb21afb9ce9be0a676f8f317ff0ca072fb89a4f8ce2d1b6fe80f8755c14f1cb1982604051610d259190612745565b60405180910390a25050565b610d42610d3c610ff8565b836110b9565b610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7890612ef8565b60405180910390fd5b610d8d848484846118a0565b50505050565b6060610d9e82610fad565b6000610da86118fc565b90506000815111610dc85760405180602001604052806000815250610df3565b80610dd28461198e565b604051602001610de392919061331b565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e976115f1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe906133b1565b60405180910390fd5b610f108161166f565b50565b600d6020528060005260406000206000915054906101000a900460ff1681565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fa65750610fa582611a66565b5b9050919050565b610fb681611b48565b610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec9061322d565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661107383610a3e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806110c583610a3e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061110757506111068185610dfb565b5b8061114557508373ffffffffffffffffffffffffffffffffffffffff1661112d84610598565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661116e82610a3e565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90613443565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906134d5565b60405180910390fd5b6112418383836001611b89565b8273ffffffffffffffffffffffffffffffffffffffff1661126182610a3e565b73ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90613443565b60405180910390fd5b6005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114438383836001611b9b565b505050565b611462828260405180602001604052806000815250611ba1565b5050565b600061147182610a3e565b9050611481816000846001611b89565b61148a82610a3e565b90506005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115b0816000846001611b9b565b5050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6115f9610ff8565b73ffffffffffffffffffffffffffffffffffffffff16611617610b91565b73ffffffffffffffffffffffffffffffffffffffff161461166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490613541565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611799906135ad565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118939190612745565b60405180910390a3505050565b6118ab84848461114e565b6118b784848484611bfc565b6118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed9061363f565b60405180910390fd5b50505050565b6060600b805461190b90612d30565b80601f016020809104026020016040519081016040528092919081815260200182805461193790612d30565b80156119845780601f1061195957610100808354040283529160200191611984565b820191906000526020600020905b81548152906001019060200180831161196757829003601f168201915b5050505050905090565b60606000600161199d84611d84565b01905060008167ffffffffffffffff8111156119bc576119bb612b13565b5b6040519080825280601f01601f1916602001820160405280156119ee5781602001600182028036833780820191505090505b509050600082602001820190505b600115611a5b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611a4557611a4461365f565b5b0494506000851415611a5657611a5b565b6119fc565b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b3157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611b415750611b4082611ed7565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611b6a836115b4565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611b9584848484611f41565b50505050565b50505050565b611bab83836120a1565b611bb86000848484611bfc565b611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9061363f565b60405180910390fd5b505050565b6000611c1d8473ffffffffffffffffffffffffffffffffffffffff166122bf565b15611d77578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611c46610ff8565b8786866040518563ffffffff1660e01b8152600401611c6894939291906136e3565b6020604051808303816000875af1925050508015611ca457506040513d601f19601f82011682018060405250810190611ca19190613744565b60015b611d27573d8060008114611cd4576040519150601f19603f3d011682016040523d82523d6000602084013e611cd9565b606091505b50600081511415611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d169061363f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d7c565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611de2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611dd857611dd761365f565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e1f576d04ee2d6d415b85acef81000000008381611e1557611e1461365f565b5b0492506020810190505b662386f26fc100008310611e4e57662386f26fc100008381611e4457611e4361365f565b5b0492506010810190505b6305f5e1008310611e77576305f5e1008381611e6d57611e6c61365f565b5b0492506008810190505b6127108310611e9c576127108381611e9257611e9161365f565b5b0492506004810190505b60648310611ebf5760648381611eb557611eb461365f565b5b0492506002810190505b600a8310611ece576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611f4d848484846122e2565b6001811115611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906137e3565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611fd957611fd4816122e8565b612018565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612017576120168582612331565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561205b576120568161249e565b61209a565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461209957612098848261256f565b5b5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121089061384f565b60405180910390fd5b61211a81611b48565b1561215a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612151906138bb565b60405180910390fd5b612168600083836001611b89565b61217181611b48565b156121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a8906138bb565b60405180910390fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122bb600083836001611b9b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161233e84610ac5565b61234891906138db565b905060006008600084815260200190815260200160002054905081811461242d576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506124b291906138db565b90506000600a60008481526020019081526020016000205490506000600983815481106124e2576124e16131b2565b5b906000526020600020015490508060098381548110612504576125036131b2565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a60008581526020019081526020016000206000905560098054806125535761255261390f565b5b6001900381819060005260206000200160009055905550505050565b600061257a83610ac5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546125fa90612d30565b90600052602060002090601f01602090048101928261261c5760008555612663565b82601f1061263557803560ff1916838001178555612663565b82800160010185558215612663579182015b82811115612662578235825591602001919060010190612647565b5b5090506126709190612674565b5090565b5b8082111561268d576000816000905550600101612675565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126da816126a5565b81146126e557600080fd5b50565b6000813590506126f7816126d1565b92915050565b6000602082840312156127135761271261269b565b5b6000612721848285016126e8565b91505092915050565b60008115159050919050565b61273f8161272a565b82525050565b600060208201905061275a6000830184612736565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279a57808201518184015260208101905061277f565b838111156127a9576000848401525b50505050565b6000601f19601f8301169050919050565b60006127cb82612760565b6127d5818561276b565b93506127e581856020860161277c565b6127ee816127af565b840191505092915050565b6000602082019050818103600083015261281381846127c0565b905092915050565b6000819050919050565b61282e8161281b565b811461283957600080fd5b50565b60008135905061284b81612825565b92915050565b6000602082840312156128675761286661269b565b5b60006128758482850161283c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b82525050565b60006020820190506128d460008301846128b0565b92915050565b6128e38161289e565b81146128ee57600080fd5b50565b600081359050612900816128da565b92915050565b6000806040838503121561291d5761291c61269b565b5b600061292b858286016128f1565b925050602061293c8582860161283c565b9150509250929050565b61294f8161281b565b82525050565b600060208201905061296a6000830184612946565b92915050565b6000806000606084860312156129895761298861269b565b5b6000612997868287016128f1565b93505060206129a8868287016128f1565b92505060406129b98682870161283c565b9150509250925092565b6000602082840312156129d9576129d861269b565b5b60006129e7848285016128f1565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a1557612a146129f0565b5b8235905067ffffffffffffffff811115612a3257612a316129f5565b5b602083019150836001820283011115612a4e57612a4d6129fa565b5b9250929050565b60008060208385031215612a6c57612a6b61269b565b5b600083013567ffffffffffffffff811115612a8a57612a896126a0565b5b612a96858286016129ff565b92509250509250929050565b612aab8161272a565b8114612ab657600080fd5b50565b600081359050612ac881612aa2565b92915050565b60008060408385031215612ae557612ae461269b565b5b6000612af3858286016128f1565b9250506020612b0485828601612ab9565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b4b826127af565b810181811067ffffffffffffffff82111715612b6a57612b69612b13565b5b80604052505050565b6000612b7d612691565b9050612b898282612b42565b919050565b600067ffffffffffffffff821115612ba957612ba8612b13565b5b612bb2826127af565b9050602081019050919050565b82818337600083830152505050565b6000612be1612bdc84612b8e565b612b73565b905082815260208101848484011115612bfd57612bfc612b0e565b5b612c08848285612bbf565b509392505050565b600082601f830112612c2557612c246129f0565b5b8135612c35848260208601612bce565b91505092915050565b60008060008060808587031215612c5857612c5761269b565b5b6000612c66878288016128f1565b9450506020612c77878288016128f1565b9350506040612c888782880161283c565b925050606085013567ffffffffffffffff811115612ca957612ca86126a0565b5b612cb587828801612c10565b91505092959194509250565b60008060408385031215612cd857612cd761269b565b5b6000612ce6858286016128f1565b9250506020612cf7858286016128f1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d4857607f821691505b60208210811415612d5c57612d5b612d01565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dbe60218361276b565b9150612dc982612d62565b604082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612e50603d8361276b565b9150612e5b82612df4565b604082019050919050565b60006020820190508181036000830152612e7f81612e43565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612ee2602d8361276b565b9150612eed82612e86565b604082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612f74602b8361276b565b9150612f7f82612f18565b604082019050919050565b60006020820190508181036000830152612fa381612f67565b9050919050565b7f4164647265737320646f6573206e6f74206861766520746865206d696e74657260008201527f207065726d697373696f6e000000000000000000000000000000000000000000602082015250565b6000613006602b8361276b565b915061301182612faa565b604082019050919050565b6000602082019050818103600083015261303581612ff9565b9050919050565b7f457863656564732074686520746f74616c20737570706c790000000000000000600082015250565b600061307260188361276b565b915061307d8261303c565b602082019050919050565b600060208201905081810360008301526130a181613065565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130e28261281b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613115576131146130a8565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061317c602c8361276b565b915061318782613120565b604082019050919050565b600060208201905081810360008301526131ab8161316f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061321760188361276b565b9150613222826131e1565b602082019050919050565b600060208201905081810360008301526132468161320a565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006132a960298361276b565b91506132b48261324d565b604082019050919050565b600060208201905081810360008301526132d88161329c565b9050919050565b600081905092915050565b60006132f582612760565b6132ff81856132df565b935061330f81856020860161277c565b80840191505092915050565b600061332782856132ea565b915061333382846132ea565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339b60268361276b565b91506133a68261333f565b604082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061342d60258361276b565b9150613438826133d1565b604082019050919050565b6000602082019050818103600083015261345c81613420565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134bf60248361276b565b91506134ca82613463565b604082019050919050565b600060208201905081810360008301526134ee816134b2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061352b60208361276b565b9150613536826134f5565b602082019050919050565b6000602082019050818103600083015261355a8161351e565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061359760198361276b565b91506135a282613561565b602082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061362960328361276b565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006136b58261368e565b6136bf8185613699565b93506136cf81856020860161277c565b6136d8816127af565b840191505092915050565b60006080820190506136f860008301876128b0565b61370560208301866128b0565b6137126040830185612946565b818103606083015261372481846136aa565b905095945050505050565b60008151905061373e816126d1565b92915050565b60006020828403121561375a5761375961269b565b5b60006137688482850161372f565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b60006137cd60358361276b565b91506137d882613771565b604082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061383960208361276b565b915061384482613803565b602082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006138a5601c8361276b565b91506138b08261386f565b602082019050919050565b600060208201905081810360008301526138d481613898565b9050919050565b60006138e68261281b565b91506138f18361281b565b925082821015613904576139036130a8565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220236b07de3abafa747cddcb9a78aa58a2c334c54592bed92bb111b5e437dd25eb64736f6c634300080a0033", + "immutableReferences": { + "23319": [ + { + "length": 32, + "start": 1797 + }, + { + "length": 32, + "start": 2243 + } + ] + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:5809:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:97", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:97" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:97" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:97", + "type": "" + } + ], + "src": "7:75:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:97" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:97" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "423:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "440:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "443:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "433:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "433:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "433:12:97" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "334:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "546:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "563:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "566:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "556:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "556:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "556:12:97" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "457:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "628:54:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "638:38:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "656:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "663:2:97", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "652:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "652:14:97" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "672:2:97", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "668:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "668:7:97" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "648:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "648:28:97" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "638:6:97" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "611:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "621:6:97", + "type": "" + } + ], + "src": "580:102:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "716:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "733:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "736:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "726:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "726:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "726:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "830:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "833:4:97", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "823:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "823:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "823:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "854:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "857:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "847:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "847:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "847:15:97" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "688:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "917:238:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "927:58:97", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "949:6:97" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "979:4:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "957:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "957:27:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "945:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "945:40:97" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "931:10:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1096:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1098:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "1098:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1098:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1039:10:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1051:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1036:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1036:34:97" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1075:10:97" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1087:6:97" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1072:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1072:22:97" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1033:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1033:62:97" + }, + "nodeType": "YulIf", + "src": "1030:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1134:2:97", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1138:10:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1127:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1127:22:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1127:22:97" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "903:6:97", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "911:4:97", + "type": "" + } + ], + "src": "874:281:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1202:88:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1212:30:97", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1222:18:97" + }, + "nodeType": "YulFunctionCall", + "src": "1222:20:97" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1212:6:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1271:6:97" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1279:4:97" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1251:19:97" + }, + "nodeType": "YulFunctionCall", + "src": "1251:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1251:33:97" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1186:4:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1195:6:97", + "type": "" + } + ], + "src": "1161:129:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1363:241:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1468:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1470:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "1470:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1470:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1440:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1448:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1437:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1437:30:97" + }, + "nodeType": "YulIf", + "src": "1434:56:97" + }, + { + "nodeType": "YulAssignment", + "src": "1500:37:97", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1530:6:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1508:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "1508:29:97" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1500:4:97" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1574:23:97", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1586:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1592:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1582:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1582:15:97" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1574:4:97" + } + ] + } + ] + }, + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1347:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1358:4:97", + "type": "" + } + ], + "src": "1296:308:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1659:258:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1669:10:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1678:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "1673:1:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1738:63:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "1763:3:97" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1768:1:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1759:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1759:11:97" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "1782:3:97" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1787:1:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1778:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1778:11:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1772:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "1772:18:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1752:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1752:39:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1752:39:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1699:1:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1702:6:97" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1696:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1696:13:97" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "1710:19:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1712:15:97", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1721:1:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1724:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1717:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1717:10:97" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1712:1:97" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "1692:3:97", + "statements": [] + }, + "src": "1688:113:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1835:76:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "1885:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1890:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1881:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1881:16:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1899:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1874:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1874:27:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1874:27:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1816:1:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1819:6:97" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1813:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1813:13:97" + }, + "nodeType": "YulIf", + "src": "1810:101:97" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "1641:3:97", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "1646:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1651:6:97", + "type": "" + } + ], + "src": "1610:307:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2018:326:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2028:75:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2095:6:97" + } + ], + "functionName": { + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2053:41:97" + }, + "nodeType": "YulFunctionCall", + "src": "2053:49:97" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2037:15:97" + }, + "nodeType": "YulFunctionCall", + "src": "2037:66:97" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2028:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2119:5:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2126:6:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2112:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2112:21:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2112:21:97" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2142:27:97", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2157:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2164:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2153:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2153:16:97" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2146:3:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2207:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "2209:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "2209:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2209:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2188:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2193:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2184:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2184:16:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2202:3:97" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2181:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "2181:25:97" + }, + "nodeType": "YulIf", + "src": "2178:112:97" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2321:3:97" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2326:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2331:6:97" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "2299:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "2299:39:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2299:39:97" + } + ] + }, + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "1991:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1996:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2004:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2012:5:97", + "type": "" + } + ], + "src": "1923:421:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2437:282:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2486:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "2488:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "2488:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2488:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2465:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2473:4:97", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2461:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2461:17:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2480:3:97" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2457:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2457:27:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2450:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2450:35:97" + }, + "nodeType": "YulIf", + "src": "2447:122:97" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2578:27:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2598:6:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2592:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "2592:13:97" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2582:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2614:99:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2686:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2694:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2682:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2682:17:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2701:6:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2709:3:97" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "2623:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "2623:90:97" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2614:5:97" + } + ] + } + ] + }, + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2415:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2423:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2431:5:97", + "type": "" + } + ], + "src": "2364:355:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2770:32:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2780:16:97", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2791:5:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2780:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2752:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2762:7:97", + "type": "" + } + ], + "src": "2725:77:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2851:79:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2908:16:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2917:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2920:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2910:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2910:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2910:12:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2874:5:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2899:5:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "2881:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "2881:24:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2871:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "2871:35:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2864:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2864:43:97" + }, + "nodeType": "YulIf", + "src": "2861:63:97" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2844:5:97", + "type": "" + } + ], + "src": "2808:122:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2999:80:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3009:22:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3024:6:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3018:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "3018:13:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3009:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3067:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "3040:26:97" + }, + "nodeType": "YulFunctionCall", + "src": "3040:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3040:33:97" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2977:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2985:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2993:5:97", + "type": "" + } + ], + "src": "2936:143:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3216:878:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3262:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3264:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "3264:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3264:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3237:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3246:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3233:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3233:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3258:2:97", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3229:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3229:32:97" + }, + "nodeType": "YulIf", + "src": "3226:119:97" + }, + { + "nodeType": "YulBlock", + "src": "3355:291:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3370:38:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3394:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3405:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3390:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3390:17:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3384:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "3384:24:97" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3374:6:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3455:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "3457:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "3457:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3457:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3427:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3435:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3424:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "3424:30:97" + }, + "nodeType": "YulIf", + "src": "3421:117:97" + }, + { + "nodeType": "YulAssignment", + "src": "3552:84:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3608:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3619:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3604:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3604:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3628:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3562:41:97" + }, + "nodeType": "YulFunctionCall", + "src": "3562:74:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3552:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3656:292:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3671:39:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3695:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3706:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3691:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3691:18:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3685:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "3685:25:97" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3675:6:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3757:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "3759:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "3759:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3759:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3729:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3737:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3726:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "3726:30:97" + }, + "nodeType": "YulIf", + "src": "3723:117:97" + }, + { + "nodeType": "YulAssignment", + "src": "3854:84:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3910:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3921:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3906:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3906:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3930:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3864:41:97" + }, + "nodeType": "YulFunctionCall", + "src": "3864:74:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3854:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3958:129:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3973:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3987:2:97", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3977:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4003:74:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4049:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4060:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4045:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4045:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4069:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "4013:31:97" + }, + "nodeType": "YulFunctionCall", + "src": "4013:64:97" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4003:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3170:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3181:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3193:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3201:6:97", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3209:6:97", + "type": "" + } + ], + "src": "3085:1009:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4196:73:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4213:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4218:6:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4206:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "4206:19:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4206:19:97" + }, + { + "nodeType": "YulAssignment", + "src": "4234:29:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4253:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4258:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4249:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4249:14:97" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "4234:11:97" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4168:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4173:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "4184:11:97", + "type": "" + } + ], + "src": "4100:169:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4381:116:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4403:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4411:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4399:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4399:14:97" + }, + { + "hexValue": "537570706c79206c696d6974206d757374206265206772656174657220746861", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4415:34:97", + "type": "", + "value": "Supply limit must be greater tha" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4392:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "4392:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4392:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4471:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4479:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4467:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4467:15:97" + }, + { + "hexValue": "6e2030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4484:5:97", + "type": "", + "value": "n 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4460:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "4460:30:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4460:30:97" + } + ] + }, + "name": "store_literal_in_memory_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "4373:6:97", + "type": "" + } + ], + "src": "4275:222:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4649:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4659:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4725:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4730:2:97", + "type": "", + "value": "35" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "4666:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "4666:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4659:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4831:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e", + "nodeType": "YulIdentifier", + "src": "4742:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "4742:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4742:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "4844:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4855:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4860:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4851:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4851:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4844:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4637:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4645:3:97", + "type": "" + } + ], + "src": "4503:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5046:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5056:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5068:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5079:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5064:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5064:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5056:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5103:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5114:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5099:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5099:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5122:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5128:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5118:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5118:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5092:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5092:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5092:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "5148:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5282:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5156:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "5156:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5148:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5026:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5041:4:97", + "type": "" + } + ], + "src": "4875:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5328:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5345:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5348:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5338:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5338:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5338:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5442:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5445:4:97", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5435:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5435:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5435:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5466:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5469:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5459:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5459:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5459:15:97" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "5300:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5537:269:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5547:22:97", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "5561:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5567:1:97", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "5557:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5557:12:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5547:6:97" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5578:38:97", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "5608:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5614:1:97", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5604:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5604:12:97" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "5582:18:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5655:51:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5669:27:97", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5683:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5691:4:97", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5679:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5679:17:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5669:6:97" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "5635:18:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5628:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5628:26:97" + }, + "nodeType": "YulIf", + "src": "5625:81:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5758:42:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "5772:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "5772:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5772:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "5722:18:97" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5745:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5753:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5742:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "5742:14:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5719:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "5719:38:97" + }, + "nodeType": "YulIf", + "src": "5716:84:97" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "5521:4:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5530:6:97", + "type": "" + } + ], + "src": "5486:320:97" + } + ] + }, + "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_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(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_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\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_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e(memPtr) {\n\n mstore(add(memPtr, 0), \"Supply limit must be greater tha\")\n\n mstore(add(memPtr, 32), \"n 0\")\n\n }\n\n function abi_encode_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e_to_t_string_memory_ptr_fromStack( tail)\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}\n", + "id": 97, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:34614:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:97", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:97" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:97" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:97", + "type": "" + } + ], + "src": "7:75:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:97" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:97" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "378:105:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "388:89:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "403:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "410:66:97", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "399:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "399:78:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "388:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "360:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "370:7:97", + "type": "" + } + ], + "src": "334:149:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:78:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "587:16:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "596:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "599:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "589:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "589:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "589:12:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "554:5:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "578:5:97" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "561:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "561:23:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "551:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "551:34:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "544:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "544:42:97" + }, + "nodeType": "YulIf", + "src": "541:62:97" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "524:5:97", + "type": "" + } + ], + "src": "489:120:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "666:86:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "676:29:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "698:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "685:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "685:20:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "740:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "714:25:97" + }, + "nodeType": "YulFunctionCall", + "src": "714:32:97" + }, + "nodeType": "YulExpressionStatement", + "src": "714:32:97" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "644:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "652:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "660:5:97", + "type": "" + } + ], + "src": "615:137:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "823:262:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "871:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "871:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "871:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "844:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "853:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "840:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "865:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "836:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "836:32:97" + }, + "nodeType": "YulIf", + "src": "833:119:97" + }, + { + "nodeType": "YulBlock", + "src": "962:116:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "977:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "991:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "981:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1006:62:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1040:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1051:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1036:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1036:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1060:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "1016:19:97" + }, + "nodeType": "YulFunctionCall", + "src": "1016:52:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "793:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "804:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "816:6:97", + "type": "" + } + ], + "src": "758:327:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1133:48:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1143:32:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1168:5:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1161:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1161:13:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1154:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1154:21:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1143:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1115:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1125:7:97", + "type": "" + } + ], + "src": "1091:90:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1246:50:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1263:3:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1283:5:97" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1268:14:97" + }, + "nodeType": "YulFunctionCall", + "src": "1268:21:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1256:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1256:34:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:34:97" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1241:3:97", + "type": "" + } + ], + "src": "1187:109:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1394:118:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1404:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1416:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1427:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1412:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1412:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1404:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1478:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1502:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1487:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1487:17:97" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "1440:37:97" + }, + "nodeType": "YulFunctionCall", + "src": "1440:65:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1440:65:97" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1366:9:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1378:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1389:4:97", + "type": "" + } + ], + "src": "1302:210:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1577:40:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1588:22:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1604:5:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1598:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "1598:12:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1588:6:97" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1560:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1570:6:97", + "type": "" + } + ], + "src": "1518:99:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1719:73:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1736:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1741:6:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1729:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1729:19:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1729:19:97" + }, + { + "nodeType": "YulAssignment", + "src": "1757:29:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1776:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1781:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1772:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1772:14:97" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "1757:11:97" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1691:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1696:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "1707:11:97", + "type": "" + } + ], + "src": "1623:169:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1847:258:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1857:10:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1866:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "1861:1:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1926:63:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "1951:3:97" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1956:1:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1947:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1947:11:97" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "1970:3:97" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1975:1:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1966:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1966:11:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1960:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "1960:18:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1940:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "1940:39:97" + }, + "nodeType": "YulExpressionStatement", + "src": "1940:39:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1887:1:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1890:6:97" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1884:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "1884:13:97" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "1898:19:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1900:15:97", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1909:1:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1912:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1905:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "1905:10:97" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "1900:1:97" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "1880:3:97", + "statements": [] + }, + "src": "1876:113:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2023:76:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2073:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2078:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2069:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2069:16:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2087:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2062:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2062:27:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2062:27:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2004:1:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2007:6:97" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2001:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "2001:13:97" + }, + "nodeType": "YulIf", + "src": "1998:101:97" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "1829:3:97", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "1834:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1839:6:97", + "type": "" + } + ], + "src": "1798:307:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2159:54:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2169:38:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2187:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2194:2:97", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2183:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2183:14:97" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2203:2:97", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "2199:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2199:7:97" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2179:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2179:28:97" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "2169:6:97" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2142:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "2152:6:97", + "type": "" + } + ], + "src": "2111:102:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2311:272:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2321:53:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2368:5:97" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2335:32:97" + }, + "nodeType": "YulFunctionCall", + "src": "2335:39:97" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2325:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2383:78:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2449:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2454:6:97" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2390:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "2390:71:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2383:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2496:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2503:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2492:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2492:16:97" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2510:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2515:6:97" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "2470:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "2470:52:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2470:52:97" + }, + { + "nodeType": "YulAssignment", + "src": "2531:46:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2542:3:97" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2569:6:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2547:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "2547:29:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2538:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2538:39:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2531:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2292:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2299:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2307:3:97", + "type": "" + } + ], + "src": "2219:364:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2707:195:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2717:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2729:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2740:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2725:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2725:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2717:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2764:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2775:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2760:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2760:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2783:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2789:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2779:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "2779:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2753:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "2753:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "2753:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "2809:86:97", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2881:6:97" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2890:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2817:63:97" + }, + "nodeType": "YulFunctionCall", + "src": "2817:78:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2809:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2679:9:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2691:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2702:4:97", + "type": "" + } + ], + "src": "2589:313:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2953:32:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2963:16:97", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2974:5:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2963:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2935:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2945:7:97", + "type": "" + } + ], + "src": "2908:77:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3034:79:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3091:16:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3100:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3103:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3093:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "3093:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3093:12:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3057:5:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3082:5:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "3064:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "3064:24:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3054:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "3054:35:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3047:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "3047:43:97" + }, + "nodeType": "YulIf", + "src": "3044:63:97" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3027:5:97", + "type": "" + } + ], + "src": "2991:122:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3171:87:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3181:29:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3203:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3190:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "3190:20:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3181:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3246:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "3219:26:97" + }, + "nodeType": "YulFunctionCall", + "src": "3219:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3219:33:97" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3149:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3157:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3165:5:97", + "type": "" + } + ], + "src": "3119:139:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3330:263:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3376:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3378:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "3378:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3378:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3351:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3360:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3347:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3347:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3372:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3343:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3343:32:97" + }, + "nodeType": "YulIf", + "src": "3340:119:97" + }, + { + "nodeType": "YulBlock", + "src": "3469:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3484:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3498:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3488:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3513:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3548:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3559:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3544:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3544:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3568:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "3523:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "3523:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3513:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3300:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3311:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3323:6:97", + "type": "" + } + ], + "src": "3264:329:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3644:81:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3654:65:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3669:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3676:42:97", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3665:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "3665:54:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "3654:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3626:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "3636:7:97", + "type": "" + } + ], + "src": "3599:126:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3776:51:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3786:35:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3815:5:97" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "3797:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "3797:24:97" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "3786:7:97" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3758:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "3768:7:97", + "type": "" + } + ], + "src": "3731:96:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3898:53:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3915:3:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3938:5:97" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "3920:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "3920:24:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3908:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "3908:37:97" + }, + "nodeType": "YulExpressionStatement", + "src": "3908:37:97" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3886:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3893:3:97", + "type": "" + } + ], + "src": "3833:118:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4055:124:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4065:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4077:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4088:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4073:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4073:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4065:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4145:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4158:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4169:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4154:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4154:17:97" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "4101:43:97" + }, + "nodeType": "YulFunctionCall", + "src": "4101:71:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4101:71:97" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4027:9:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4039:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4050:4:97", + "type": "" + } + ], + "src": "3957:222:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4228:79:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4285:16:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4294:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4297:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4287:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "4287:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4287:12:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4251:5:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4276:5:97" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "4258:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "4258:24:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "4248:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "4248:35:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4241:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "4241:43:97" + }, + "nodeType": "YulIf", + "src": "4238:63:97" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4221:5:97", + "type": "" + } + ], + "src": "4185:122:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4365:87:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4375:29:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4397:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4384:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "4384:20:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4375:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4440:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "4413:26:97" + }, + "nodeType": "YulFunctionCall", + "src": "4413:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4413:33:97" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4343:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4351:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4359:5:97", + "type": "" + } + ], + "src": "4313:139:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4541:391:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4587:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4589:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "4589:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "4589:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4562:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4571:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4558:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4558:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4583:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4554:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4554:32:97" + }, + "nodeType": "YulIf", + "src": "4551:119:97" + }, + { + "nodeType": "YulBlock", + "src": "4680:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4695:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4709:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4699:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4724:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4759:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4770:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4755:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4755:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4779:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4734:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "4734:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4724:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4807:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4822:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4836:2:97", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4826:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4852:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4887:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4898:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4883:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "4883:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4907:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "4862:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "4862:53:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4852:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4503:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4514:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4526:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4534:6:97", + "type": "" + } + ], + "src": "4458:474:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5003:53:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5020:3:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5043:5:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "5025:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "5025:24:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5013:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "5013:37:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5013:37:97" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4991:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4998:3:97", + "type": "" + } + ], + "src": "4938:118:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5160:124:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5170:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5182:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5193:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5178:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5178:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5170:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5250:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5263:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5274:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5259:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5259:17:97" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5206:43:97" + }, + "nodeType": "YulFunctionCall", + "src": "5206:71:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5206:71:97" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5132:9:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5144:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5155:4:97", + "type": "" + } + ], + "src": "5062:222:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5390:519:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5436:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5438:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "5438:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "5438:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5411:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5420:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5407:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5407:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5432:2:97", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5403:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5403:32:97" + }, + "nodeType": "YulIf", + "src": "5400:119:97" + }, + { + "nodeType": "YulBlock", + "src": "5529:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5544:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5558:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5548:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5573:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5608:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5619:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5604:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5604:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5628:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "5583:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "5583:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5573:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5656:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5671:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5685:2:97", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5675:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5701:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5736:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5747:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5732:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5732:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5756:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "5711:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "5711:53:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5701:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5784:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5799:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5813:2:97", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5803:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5829:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5864:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5875:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5860:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5860:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5884:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "5839:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "5839:53:97" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5829:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5344:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5355:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5367:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5375:6:97", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5383:6:97", + "type": "" + } + ], + "src": "5290:619:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5981:263:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6027:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6029:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "6029:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6029:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6002:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6011:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5998:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5998:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6023:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5994:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "5994:32:97" + }, + "nodeType": "YulIf", + "src": "5991:119:97" + }, + { + "nodeType": "YulBlock", + "src": "6120:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6135:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6149:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6139:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6164:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6199:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6210:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6195:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "6195:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6219:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "6174:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "6174:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6164:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5951:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5962:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5974:6:97", + "type": "" + } + ], + "src": "5915:329:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6339:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6356:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6359:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6349:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "6349:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6349:12:97" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "6250:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6462:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6479:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6482:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6472:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "6472:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6472:12:97" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "6373:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6585:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6602:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6605:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6595:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "6595:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6595:12:97" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "6496:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6708:478:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6757:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "6759:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "6759:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6759:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6736:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6744:4:97", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6732:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "6732:17:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6751:3:97" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6728:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "6728:27:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6721:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "6721:35:97" + }, + "nodeType": "YulIf", + "src": "6718:122:97" + }, + { + "nodeType": "YulAssignment", + "src": "6849:30:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6872:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6859:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "6859:20:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6849:6:97" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6922:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "6924:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "6924:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "6924:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6894:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6902:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6891:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "6891:30:97" + }, + "nodeType": "YulIf", + "src": "6888:117:97" + }, + { + "nodeType": "YulAssignment", + "src": "7014:29:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7030:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7038:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7026:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7026:17:97" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "7014:8:97" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7097:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "7099:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "7099:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "7099:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "7062:8:97" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7076:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7084:4:97", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7072:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7072:17:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7058:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7058:32:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7092:3:97" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7055:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "7055:41:97" + }, + "nodeType": "YulIf", + "src": "7052:128:97" + } + ] + }, + "name": "abi_decode_t_string_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6675:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6683:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "6691:8:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6701:6:97", + "type": "" + } + ], + "src": "6633:553:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7278:443:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7324:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "7326:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "7326:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "7326:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7299:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7308:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7295:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7295:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7320:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7291:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7291:32:97" + }, + "nodeType": "YulIf", + "src": "7288:119:97" + }, + { + "nodeType": "YulBlock", + "src": "7417:297:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7432:45:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7463:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7474:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7459:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7459:17:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7446:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "7446:31:97" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7436:6:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7524:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "7526:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "7526:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "7526:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7496:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7504:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7493:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "7493:30:97" + }, + "nodeType": "YulIf", + "src": "7490:117:97" + }, + { + "nodeType": "YulAssignment", + "src": "7621:83:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7676:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7687:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7672:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "7672:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7696:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_string_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "7639:32:97" + }, + "nodeType": "YulFunctionCall", + "src": "7639:65:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7621:6:97" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7629:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7240:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7251:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7263:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7271:6:97", + "type": "" + } + ], + "src": "7192:529:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7767:76:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7821:16:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7830:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7833:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7823:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "7823:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "7823:12:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7790:5:97" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7812:5:97" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "7797:14:97" + }, + "nodeType": "YulFunctionCall", + "src": "7797:21:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "7787:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "7787:32:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7780:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "7780:40:97" + }, + "nodeType": "YulIf", + "src": "7777:60:97" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7760:5:97", + "type": "" + } + ], + "src": "7727:116:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7898:84:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7908:29:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7930:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7917:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "7917:20:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7908:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7970:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "7946:23:97" + }, + "nodeType": "YulFunctionCall", + "src": "7946:30:97" + }, + "nodeType": "YulExpressionStatement", + "src": "7946:30:97" + } + ] + }, + "name": "abi_decode_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7876:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7884:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7892:5:97", + "type": "" + } + ], + "src": "7849:133:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8068:388:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8114:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8116:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "8116:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8116:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8089:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8098:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8085:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "8085:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8110:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8081:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "8081:32:97" + }, + "nodeType": "YulIf", + "src": "8078:119:97" + }, + { + "nodeType": "YulBlock", + "src": "8207:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8222:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8236:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8226:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8251:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8286:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8297:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8282:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "8282:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8306:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "8261:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "8261:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8251:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8334:115:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8349:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8363:2:97", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8353:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8379:60:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8411:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8422:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8407:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "8407:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8431:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_bool", + "nodeType": "YulIdentifier", + "src": "8389:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "8389:50:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8379:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8030:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8041:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8053:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8061:6:97", + "type": "" + } + ], + "src": "7988:468:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8551:28:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8568:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8571:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8561:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "8561:12:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8561:12:97" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "8462:117:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8613:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8630:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8633:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8623:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "8623:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8623:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8727:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8730:4:97", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8720:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "8720:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8720:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8751:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8754:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8744:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "8744:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8744:15:97" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "8585:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8814:238:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8824:58:97", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8846:6:97" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "8876:4:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "8854:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "8854:27:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8842:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "8842:40:97" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "8828:10:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8993:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "8995:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "8995:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "8995:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "8936:10:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8948:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8933:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "8933:34:97" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "8972:10:97" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8984:6:97" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "8969:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "8969:22:97" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "8930:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "8930:62:97" + }, + "nodeType": "YulIf", + "src": "8927:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9031:2:97", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "9035:10:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9024:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "9024:22:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9024:22:97" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8800:6:97", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "8808:4:97", + "type": "" + } + ], + "src": "8771:281:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9099:88:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9109:30:97", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "9119:18:97" + }, + "nodeType": "YulFunctionCall", + "src": "9119:20:97" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9109:6:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9168:6:97" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "9176:4:97" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "9148:19:97" + }, + "nodeType": "YulFunctionCall", + "src": "9148:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9148:33:97" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "9083:4:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9092:6:97", + "type": "" + } + ], + "src": "9058:129:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9259:241:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9364:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "9366:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "9366:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9366:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9336:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9344:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9333:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "9333:30:97" + }, + "nodeType": "YulIf", + "src": "9330:56:97" + }, + { + "nodeType": "YulAssignment", + "src": "9396:37:97", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9426:6:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "9404:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "9404:29:97" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "9396:4:97" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9470:23:97", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "9482:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9488:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9478:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "9478:15:97" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "9470:4:97" + } + ] + } + ] + }, + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9243:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "9254:4:97", + "type": "" + } + ], + "src": "9193:307:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9557:103:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9580:3:97" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9585:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9590:6:97" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "9567:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "9567:30:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9567:30:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9638:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9643:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9634:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "9634:16:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9652:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9627:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "9627:27:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9627:27:97" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9539:3:97", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "9544:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9549:6:97", + "type": "" + } + ], + "src": "9506:154:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9749:327:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9759:74:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9825:6:97" + } + ], + "functionName": { + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9784:40:97" + }, + "nodeType": "YulFunctionCall", + "src": "9784:48:97" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "9768:15:97" + }, + "nodeType": "YulFunctionCall", + "src": "9768:65:97" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "9759:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "9849:5:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9856:6:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9842:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "9842:21:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9842:21:97" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9872:27:97", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "9887:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9894:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9883:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "9883:16:97" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "9876:3:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9937:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "9939:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "9939:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "9939:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9918:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9923:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9914:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "9914:16:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9932:3:97" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9911:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "9911:25:97" + }, + "nodeType": "YulIf", + "src": "9908:112:97" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "10053:3:97" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "10058:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10063:6:97" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "10029:23:97" + }, + "nodeType": "YulFunctionCall", + "src": "10029:41:97" + }, + "nodeType": "YulExpressionStatement", + "src": "10029:41:97" + } + ] + }, + "name": "abi_decode_available_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9722:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9727:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9735:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "9743:5:97", + "type": "" + } + ], + "src": "9666:410:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10156:277:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10205:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "10207:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "10207:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "10207:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10184:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10192:4:97", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10180:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10180:17:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10199:3:97" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10176:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10176:27:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10169:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "10169:35:97" + }, + "nodeType": "YulIf", + "src": "10166:122:97" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10297:34:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10324:6:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10311:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "10311:20:97" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10301:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10340:87:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10400:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10408:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10396:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10396:17:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10415:6:97" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10423:3:97" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10349:46:97" + }, + "nodeType": "YulFunctionCall", + "src": "10349:78:97" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "10340:5:97" + } + ] + } + ] + }, + "name": "abi_decode_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10134:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10142:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "10150:5:97", + "type": "" + } + ], + "src": "10095:338:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10565:817:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10612:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "10614:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "10614:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "10614:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10586:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10595:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10582:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10582:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10607:3:97", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10578:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10578:33:97" + }, + "nodeType": "YulIf", + "src": "10575:120:97" + }, + { + "nodeType": "YulBlock", + "src": "10705:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10720:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10734:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10724:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10749:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10784:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10795:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10780:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10780:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10804:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "10759:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "10759:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10749:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10832:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10847:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10861:2:97", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10851:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10877:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10912:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10923:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10908:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "10908:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10932:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "10887:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "10887:53:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10877:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10960:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10975:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10989:2:97", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10979:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11005:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11040:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11051:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11036:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11036:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11060:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "11015:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "11015:53:97" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11005:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11088:287:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11103:46:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11134:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11145:2:97", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11130:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11130:18:97" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11117:12:97" + }, + "nodeType": "YulFunctionCall", + "src": "11117:32:97" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11107:6:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11196:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "11198:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "11198:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "11198:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11168:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11176:18:97", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11165:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "11165:30:97" + }, + "nodeType": "YulIf", + "src": "11162:117:97" + }, + { + "nodeType": "YulAssignment", + "src": "11293:72:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11337:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11348:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11333:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11333:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11357:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "11303:29:97" + }, + "nodeType": "YulFunctionCall", + "src": "11303:62:97" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11293:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10511:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10522:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10534:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10542:6:97", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10550:6:97", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10558:6:97", + "type": "" + } + ], + "src": "10439:943:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11471:391:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11517:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11519:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "11519:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "11519:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11492:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11501:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11488:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11488:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11513:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11484:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11484:32:97" + }, + "nodeType": "YulIf", + "src": "11481:119:97" + }, + { + "nodeType": "YulBlock", + "src": "11610:117:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11625:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11639:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11629:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11654:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11689:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11700:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11685:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11685:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11709:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "11664:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "11664:53:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11654:6:97" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11737:118:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11752:16:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11766:2:97", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11756:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11782:63:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11817:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11828:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11813:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "11813:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11837:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "11792:20:97" + }, + "nodeType": "YulFunctionCall", + "src": "11792:53:97" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11782:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11433:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11444:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11456:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11464:6:97", + "type": "" + } + ], + "src": "11388:474:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11896:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11913:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11916:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11906:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "11906:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "11906:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12010:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12013:4:97", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12003:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "12003:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12003:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12034:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12037:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12027:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "12027:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12027:15:97" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "11868:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12105:269:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12115:22:97", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12129:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12135:1:97", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "12125:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12125:12:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12115:6:97" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12146:38:97", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12176:4:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12182:1:97", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12172:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12172:12:97" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "12150:18:97", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12223:51:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12237:27:97", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12251:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12259:4:97", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12247:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12247:17:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12237:6:97" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "12203:18:97" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "12196:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "12196:26:97" + }, + "nodeType": "YulIf", + "src": "12193:81:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12326:42:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "12340:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "12340:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12340:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "12290:18:97" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12313:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12321:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12310:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "12310:14:97" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12287:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "12287:38:97" + }, + "nodeType": "YulIf", + "src": "12284:84:97" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "12089:4:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12098:6:97", + "type": "" + } + ], + "src": "12054:320:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12486:114:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12508:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12516:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12504:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12504:14:97" + }, + { + "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12520:34:97", + "type": "", + "value": "ERC721: approval to current owne" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12497:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "12497:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12497:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12576:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12584:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12572:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12572:15:97" + }, + { + "hexValue": "72", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12589:3:97", + "type": "", + "value": "r" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12565:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "12565:28:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12565:28:97" + } + ] + }, + "name": "store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12478:6:97", + "type": "" + } + ], + "src": "12380:220:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12752:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12762:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12828:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12833:2:97", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "12769:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "12769:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12762:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12934:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "nodeType": "YulIdentifier", + "src": "12845:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "12845:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "12845:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "12947:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12958:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12963:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12954:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "12954:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12947:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12740:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12748:3:97", + "type": "" + } + ], + "src": "12606:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13149:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13159:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13171:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13182:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13167:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "13167:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13159:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13206:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13217:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13202:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "13202:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13225:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13231:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13221:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "13221:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13195:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "13195:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "13195:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "13251:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13385:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13259:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "13259:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13251:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13129:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13144:4:97", + "type": "" + } + ], + "src": "12978:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13509:142:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13531:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13539:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13527:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "13527:14:97" + }, + { + "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13543:34:97", + "type": "", + "value": "ERC721: approve caller is not to" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13520:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "13520:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "13520:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "13599:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13607:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13595:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "13595:15:97" + }, + { + "hexValue": "6b656e206f776e6572206f7220617070726f76656420666f7220616c6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "13612:31:97", + "type": "", + "value": "ken owner or approved for all" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13588:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "13588:56:97" + }, + "nodeType": "YulExpressionStatement", + "src": "13588:56:97" + } + ] + }, + "name": "store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "13501:6:97", + "type": "" + } + ], + "src": "13403:248:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13803:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13813:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13879:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13884:2:97", + "type": "", + "value": "61" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13820:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "13820:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13813:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13985:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83", + "nodeType": "YulIdentifier", + "src": "13896:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "13896:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "13896:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "13998:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14009:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14014:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14005:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14005:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13998:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13791:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13799:3:97", + "type": "" + } + ], + "src": "13657:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14200:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14210:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14222:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14233:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14218:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14218:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14210:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14257:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14268:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14253:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14253:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14276:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14282:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14272:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14272:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14246:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "14246:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "14246:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "14302:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14436:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14310:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "14310:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14302:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14180:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14195:4:97", + "type": "" + } + ], + "src": "14029:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14560:126:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14582:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14590:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14578:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14578:14:97" + }, + { + "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14594:34:97", + "type": "", + "value": "ERC721: caller is not token owne" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14571:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "14571:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "14571:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14650:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14658:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14646:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "14646:15:97" + }, + { + "hexValue": "72206f7220617070726f766564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14663:15:97", + "type": "", + "value": "r or approved" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14639:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "14639:40:97" + }, + "nodeType": "YulExpressionStatement", + "src": "14639:40:97" + } + ] + }, + "name": "store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "14552:6:97", + "type": "" + } + ], + "src": "14454:232:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14838:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14848:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14914:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14919:2:97", + "type": "", + "value": "45" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14855:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "14855:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14848:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15020:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af", + "nodeType": "YulIdentifier", + "src": "14931:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "14931:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "14931:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "15033:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15044:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15049:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15040:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15040:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15033:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14826:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14834:3:97", + "type": "" + } + ], + "src": "14692:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15235:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15245:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15257:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15268:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15253:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15253:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15245:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15292:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15303:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15288:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15288:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15311:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15317:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15307:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15307:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15281:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "15281:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "15281:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "15337:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15471:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15345:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "15345:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15337:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15215:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15230:4:97", + "type": "" + } + ], + "src": "15064:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15595:124:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15617:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15625:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15613:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15613:14:97" + }, + { + "hexValue": "455243373231456e756d657261626c653a206f776e657220696e646578206f75", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15629:34:97", + "type": "", + "value": "ERC721Enumerable: owner index ou" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15606:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "15606:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "15606:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15685:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15693:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15681:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "15681:15:97" + }, + { + "hexValue": "74206f6620626f756e6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15698:13:97", + "type": "", + "value": "t of bounds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15674:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "15674:38:97" + }, + "nodeType": "YulExpressionStatement", + "src": "15674:38:97" + } + ] + }, + "name": "store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "15587:6:97", + "type": "" + } + ], + "src": "15489:230:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15871:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15881:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15947:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15952:2:97", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15888:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "15888:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15881:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16053:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c", + "nodeType": "YulIdentifier", + "src": "15964:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "15964:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "15964:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "16066:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16077:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16082:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16073:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16073:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "16066:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15859:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15867:3:97", + "type": "" + } + ], + "src": "15725:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16268:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16278:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16290:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16301:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16286:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16286:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16278:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16325:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16336:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16321:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16321:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16344:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16350:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16340:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16340:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16314:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "16314:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "16314:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "16370:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16504:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "16378:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "16378:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16370:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16248:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16263:4:97", + "type": "" + } + ], + "src": "16097:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16628:124:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16650:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16658:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16646:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16646:14:97" + }, + { + "hexValue": "4164647265737320646f6573206e6f74206861766520746865206d696e746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16662:34:97", + "type": "", + "value": "Address does not have the minter" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16639:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "16639:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "16639:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16718:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16726:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16714:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "16714:15:97" + }, + { + "hexValue": "207065726d697373696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "16731:13:97", + "type": "", + "value": " permission" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16707:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "16707:38:97" + }, + "nodeType": "YulExpressionStatement", + "src": "16707:38:97" + } + ] + }, + "name": "store_literal_in_memory_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "16620:6:97", + "type": "" + } + ], + "src": "16522:230:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16904:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16914:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16980:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16985:2:97", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "16921:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "16921:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16914:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17086:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8", + "nodeType": "YulIdentifier", + "src": "16997:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "16997:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "16997:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "17099:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17110:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17115:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17106:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "17106:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17099:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16892:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "16900:3:97", + "type": "" + } + ], + "src": "16758:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17301:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17311:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17323:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17334:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17319:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "17319:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17311:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17358:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17369:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17354:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "17354:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17377:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17383:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17373:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "17373:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17347:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "17347:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "17347:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "17403:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17537:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "17411:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "17411:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17403:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17281:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17296:4:97", + "type": "" + } + ], + "src": "17130:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17661:68:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "17683:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17691:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17679:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "17679:14:97" + }, + { + "hexValue": "457863656564732074686520746f74616c20737570706c79", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17695:26:97", + "type": "", + "value": "Exceeds the total supply" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17672:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "17672:50:97" + }, + "nodeType": "YulExpressionStatement", + "src": "17672:50:97" + } + ] + }, + "name": "store_literal_in_memory_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "17653:6:97", + "type": "" + } + ], + "src": "17555:174:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17881:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17891:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17957:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17962:2:97", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "17898:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "17898:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17891:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18063:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5", + "nodeType": "YulIdentifier", + "src": "17974:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "17974:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "17974:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "18076:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18087:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18092:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18083:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "18083:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18076:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17869:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17877:3:97", + "type": "" + } + ], + "src": "17735:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18278:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18288:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18300:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18311:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18296:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "18296:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18288:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18335:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18346:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18331:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "18331:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18354:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18360:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "18350:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "18350:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18324:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "18324:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "18324:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "18380:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18514:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "18388:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "18388:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18380:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18258:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18273:4:97", + "type": "" + } + ], + "src": "18107:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18560:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18577:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18580:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18570:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "18570:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "18570:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18674:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18677:4:97", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18667:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "18667:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "18667:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18698:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18701:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18691:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "18691:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "18691:15:97" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "18532:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18761:190:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18771:33:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18798:5:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "18780:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "18780:24:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18771:5:97" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18894:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "18896:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "18896:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "18896:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18819:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18826:66:97", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "18816:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "18816:77:97" + }, + "nodeType": "YulIf", + "src": "18813:103:97" + }, + { + "nodeType": "YulAssignment", + "src": "18925:20:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18936:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18943:1:97", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18932:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "18932:13:97" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "18925:3:97" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18747:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "18757:3:97", + "type": "" + } + ], + "src": "18718:233:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19063:125:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "19085:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19093:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19081:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19081:14:97" + }, + { + "hexValue": "455243373231456e756d657261626c653a20676c6f62616c20696e646578206f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19097:34:97", + "type": "", + "value": "ERC721Enumerable: global index o" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19074:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "19074:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "19074:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "19153:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19161:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19149:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19149:15:97" + }, + { + "hexValue": "7574206f6620626f756e6473", + "kind": "string", + "nodeType": "YulLiteral", + "src": "19166:14:97", + "type": "", + "value": "ut of bounds" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19142:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "19142:39:97" + }, + "nodeType": "YulExpressionStatement", + "src": "19142:39:97" + } + ] + }, + "name": "store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "19055:6:97", + "type": "" + } + ], + "src": "18957:231:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19340:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19350:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19416:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19421:2:97", + "type": "", + "value": "44" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "19357:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "19357:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19350:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19522:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc", + "nodeType": "YulIdentifier", + "src": "19433:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "19433:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "19433:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "19535:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19546:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19551:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19542:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19542:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "19535:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19328:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "19336:3:97", + "type": "" + } + ], + "src": "19194:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19737:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19747:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19759:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19770:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19755:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19755:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19747:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19794:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19805:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19790:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19790:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19813:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19819:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "19809:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "19809:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19783:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "19783:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "19783:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "19839:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19973:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "19847:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "19847:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19839:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19717:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19732:4:97", + "type": "" + } + ], + "src": "19566:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20019:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20036:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20039:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20029:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "20029:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20029:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20133:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20136:4:97", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20126:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "20126:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20126:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20157:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20160:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "20150:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "20150:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20150:15:97" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "19991:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20283:68:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "20305:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20313:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20301:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "20301:14:97" + }, + { + "hexValue": "4552433732313a20696e76616c696420746f6b656e204944", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20317:26:97", + "type": "", + "value": "ERC721: invalid token ID" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20294:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "20294:50:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20294:50:97" + } + ] + }, + "name": "store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "20275:6:97", + "type": "" + } + ], + "src": "20177:174:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20503:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20513:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20579:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20584:2:97", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "20520:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "20520:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20513:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20685:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", + "nodeType": "YulIdentifier", + "src": "20596:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "20596:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20596:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "20698:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20709:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20714:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20705:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "20705:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20698:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20491:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20499:3:97", + "type": "" + } + ], + "src": "20357:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20900:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20910:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20922:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20933:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20918:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "20918:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20910:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20957:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20968:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20953:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "20953:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20976:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20982:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "20972:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "20972:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20946:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "20946:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "20946:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "21002:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21136:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "21010:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "21010:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21002:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20880:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20895:4:97", + "type": "" + } + ], + "src": "20729:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21260:122:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "21282:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21290:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21278:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "21278:14:97" + }, + { + "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f742061207661", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21294:34:97", + "type": "", + "value": "ERC721: address zero is not a va" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21271:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "21271:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "21271:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "21350:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21358:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21346:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "21346:15:97" + }, + { + "hexValue": "6c6964206f776e6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21363:11:97", + "type": "", + "value": "lid owner" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21339:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "21339:36:97" + }, + "nodeType": "YulExpressionStatement", + "src": "21339:36:97" + } + ] + }, + "name": "store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "21252:6:97", + "type": "" + } + ], + "src": "21154:228:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21534:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21544:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21610:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21615:2:97", + "type": "", + "value": "41" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "21551:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "21551:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21544:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21716:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", + "nodeType": "YulIdentifier", + "src": "21627:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "21627:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "21627:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "21729:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21740:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21745:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21736:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "21736:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "21729:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "21522:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "21530:3:97", + "type": "" + } + ], + "src": "21388:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21931:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21941:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21953:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21964:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21949:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "21949:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21941:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21988:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21999:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21984:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "21984:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22007:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22013:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22003:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "22003:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21977:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "21977:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "21977:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "22033:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22167:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "22041:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "22041:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22033:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21911:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21926:4:97", + "type": "" + } + ], + "src": "21760:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22299:34:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22309:18:97", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22324:3:97" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "22309:11:97" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22271:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22276:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "22287:11:97", + "type": "" + } + ], + "src": "22185:148:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22449:267:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22459:53:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "22506:5:97" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "22473:32:97" + }, + "nodeType": "YulFunctionCall", + "src": "22473:39:97" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "22463:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22521:96:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22605:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22610:6:97" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "22528:76:97" + }, + "nodeType": "YulFunctionCall", + "src": "22528:89:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22521:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "22652:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22659:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22648:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "22648:16:97" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22666:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22671:6:97" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "22626:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "22626:52:97" + }, + "nodeType": "YulExpressionStatement", + "src": "22626:52:97" + }, + { + "nodeType": "YulAssignment", + "src": "22687:23:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22698:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "22703:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22694:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "22694:16:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "22687:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "22430:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22437:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "22445:3:97", + "type": "" + } + ], + "src": "22339:377:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22906:251:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22917:102:97", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23006:6:97" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23015:3:97" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "22924:81:97" + }, + "nodeType": "YulFunctionCall", + "src": "22924:95:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22917:3:97" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23029:102:97", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23118:6:97" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23127:3:97" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "23036:81:97" + }, + "nodeType": "YulFunctionCall", + "src": "23036:95:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23029:3:97" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23141:10:97", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23148:3:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "23141:3:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22877:3:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22883:6:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22891:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "22902:3:97", + "type": "" + } + ], + "src": "22722:435:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23269:119:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "23291:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23299:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23287:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "23287:14:97" + }, + { + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23303:34:97", + "type": "", + "value": "Ownable: new owner is the zero a" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23280:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "23280:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "23280:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "23359:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23367:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23355:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "23355:15:97" + }, + { + "hexValue": "646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23372:8:97", + "type": "", + "value": "ddress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23348:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "23348:33:97" + }, + "nodeType": "YulExpressionStatement", + "src": "23348:33:97" + } + ] + }, + "name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "23261:6:97", + "type": "" + } + ], + "src": "23163:225:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23540:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23550:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23616:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23621:2:97", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "23557:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "23557:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23550:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23722:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "nodeType": "YulIdentifier", + "src": "23633:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "23633:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "23633:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "23735:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23746:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23751:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23742:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "23742:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "23735:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "23528:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "23536:3:97", + "type": "" + } + ], + "src": "23394:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23937:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23947:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23959:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23970:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23955:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "23955:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23947:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23994:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24005:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23990:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "23990:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24013:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24019:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24009:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "24009:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23983:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "23983:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "23983:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "24039:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24173:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24047:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "24047:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24039:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23917:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23932:4:97", + "type": "" + } + ], + "src": "23766:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24297:118:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "24319:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24327:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24315:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "24315:14:97" + }, + { + "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24331:34:97", + "type": "", + "value": "ERC721: transfer from incorrect " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24308:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "24308:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "24308:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "24387:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24395:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24383:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "24383:15:97" + }, + { + "hexValue": "6f776e6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24400:7:97", + "type": "", + "value": "owner" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24376:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "24376:32:97" + }, + "nodeType": "YulExpressionStatement", + "src": "24376:32:97" + } + ] + }, + "name": "store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "24289:6:97", + "type": "" + } + ], + "src": "24191:224:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24567:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24577:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24643:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24648:2:97", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24584:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "24584:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24577:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24749:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", + "nodeType": "YulIdentifier", + "src": "24660:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "24660:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "24660:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "24762:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24773:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24778:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24769:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "24769:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "24762:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "24555:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24563:3:97", + "type": "" + } + ], + "src": "24421:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24964:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24974:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24986:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24997:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24982:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "24982:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24974:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25021:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25032:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25017:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "25017:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25040:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25046:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "25036:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "25036:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25010:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "25010:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "25010:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "25066:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25200:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25074:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "25074:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25066:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24944:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24959:4:97", + "type": "" + } + ], + "src": "24793:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25324:117:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "25346:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25354:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25342:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "25342:14:97" + }, + { + "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25358:34:97", + "type": "", + "value": "ERC721: transfer to the zero add" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25335:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "25335:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "25335:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "25414:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25422:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25410:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "25410:15:97" + }, + { + "hexValue": "72657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25427:6:97", + "type": "", + "value": "ress" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25403:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "25403:31:97" + }, + "nodeType": "YulExpressionStatement", + "src": "25403:31:97" + } + ] + }, + "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "25316:6:97", + "type": "" + } + ], + "src": "25218:223:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25593:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25603:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25669:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25674:2:97", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25610:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "25610:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25603:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25775:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "nodeType": "YulIdentifier", + "src": "25686:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "25686:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "25686:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "25788:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25799:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25804:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25795:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "25795:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25788:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25581:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25589:3:97", + "type": "" + } + ], + "src": "25447:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25990:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26000:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26012:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26023:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26008:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26008:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26000:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26047:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26058:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26043:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26043:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26066:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26072:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26062:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26062:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26036:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "26036:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "26036:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "26092:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26226:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26100:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "26100:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26092:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25970:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25985:4:97", + "type": "" + } + ], + "src": "25819:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26350:76:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "26372:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26380:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26368:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26368:14:97" + }, + { + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26384:34:97", + "type": "", + "value": "Ownable: caller is not the owner" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26361:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "26361:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "26361:58:97" + } + ] + }, + "name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "26342:6:97", + "type": "" + } + ], + "src": "26244:182:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26578:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26588:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26654:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26659:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26595:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "26595:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26588:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26760:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "nodeType": "YulIdentifier", + "src": "26671:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "26671:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "26671:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "26773:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26784:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26789:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26780:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26780:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "26773:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26566:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "26574:3:97", + "type": "" + } + ], + "src": "26432:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26975:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26985:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26997:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27008:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26993:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "26993:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26985:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27032:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27043:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27028:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "27028:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27051:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27057:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27047:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "27047:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27021:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "27021:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "27021:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "27077:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27211:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "27085:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "27085:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27077:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26955:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26970:4:97", + "type": "" + } + ], + "src": "26804:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27335:69:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "27357:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27365:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27353:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "27353:14:97" + }, + { + "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "27369:27:97", + "type": "", + "value": "ERC721: approve to caller" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27346:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "27346:51:97" + }, + "nodeType": "YulExpressionStatement", + "src": "27346:51:97" + } + ] + }, + "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "27327:6:97", + "type": "" + } + ], + "src": "27229:175:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27556:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27566:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "27632:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27637:2:97", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "27573:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "27573:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "27566:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "27738:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "nodeType": "YulIdentifier", + "src": "27649:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "27649:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "27649:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "27751:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "27762:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27767:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27758:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "27758:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "27751:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "27544:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "27552:3:97", + "type": "" + } + ], + "src": "27410:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27953:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27963:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27975:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27986:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27971:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "27971:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27963:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28010:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28021:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28006:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "28006:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28029:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28035:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "28025:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "28025:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27999:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "27999:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "27999:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "28055:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28189:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "28063:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "28063:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28055:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27933:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27948:4:97", + "type": "" + } + ], + "src": "27782:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28313:131:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "28335:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28343:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28331:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "28331:14:97" + }, + { + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28347:34:97", + "type": "", + "value": "ERC721: transfer to non ERC721Re" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28324:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "28324:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "28324:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "28403:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28411:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28399:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "28399:15:97" + }, + { + "hexValue": "63656976657220696d706c656d656e746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "28416:20:97", + "type": "", + "value": "ceiver implementer" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28392:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "28392:45:97" + }, + "nodeType": "YulExpressionStatement", + "src": "28392:45:97" + } + ] + }, + "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "28305:6:97", + "type": "" + } + ], + "src": "28207:237:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28596:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28606:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "28672:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28677:2:97", + "type": "", + "value": "50" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "28613:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "28613:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "28606:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "28778:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "nodeType": "YulIdentifier", + "src": "28689:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "28689:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "28689:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "28791:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "28802:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28807:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28798:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "28798:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "28791:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "28584:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "28592:3:97", + "type": "" + } + ], + "src": "28450:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28993:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29003:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29015:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29026:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29011:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "29011:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29003:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29050:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29061:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29046:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "29046:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29069:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29075:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "29065:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "29065:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29039:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "29039:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29039:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "29095:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29229:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "29103:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "29103:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29095:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28973:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28988:4:97", + "type": "" + } + ], + "src": "28822:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29275:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29292:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29295:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29285:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "29285:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29285:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29389:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29392:4:97", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29382:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "29382:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29382:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29413:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29416:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29406:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "29406:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29406:15:97" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "29247:180:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29491:40:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29502:22:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29518:5:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "29512:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "29512:12:97" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29502:6:97" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29474:5:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29484:6:97", + "type": "" + } + ], + "src": "29433:98:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29632:73:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29649:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29654:6:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29642:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "29642:19:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29642:19:97" + }, + { + "nodeType": "YulAssignment", + "src": "29670:29:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29689:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29694:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29685:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "29685:14:97" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "29670:11:97" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29604:3:97", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29609:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "29620:11:97", + "type": "" + } + ], + "src": "29537:168:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29801:270:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29811:52:97", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29857:5:97" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "29825:31:97" + }, + "nodeType": "YulFunctionCall", + "src": "29825:38:97" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29815:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29872:77:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29937:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29942:6:97" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "29879:57:97" + }, + "nodeType": "YulFunctionCall", + "src": "29879:70:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29872:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29984:5:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29991:4:97", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29980:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "29980:16:97" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29998:3:97" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30003:6:97" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "29958:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "29958:52:97" + }, + "nodeType": "YulExpressionStatement", + "src": "29958:52:97" + }, + { + "nodeType": "YulAssignment", + "src": "30019:46:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "30030:3:97" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30057:6:97" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "30035:21:97" + }, + "nodeType": "YulFunctionCall", + "src": "30035:29:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30026:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30026:39:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "30019:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29782:5:97", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29789:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29797:3:97", + "type": "" + } + ], + "src": "29711:360:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30277:440:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30287:27:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30299:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30310:3:97", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30295:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30295:19:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30287:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30368:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30381:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30392:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30377:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30377:17:97" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "30324:43:97" + }, + "nodeType": "YulFunctionCall", + "src": "30324:71:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30324:71:97" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30449:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30462:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30473:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30458:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30458:18:97" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "30405:43:97" + }, + "nodeType": "YulFunctionCall", + "src": "30405:72:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30405:72:97" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "30531:6:97" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30544:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30555:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30540:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30540:18:97" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "30487:43:97" + }, + "nodeType": "YulFunctionCall", + "src": "30487:72:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30487:72:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30580:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30591:2:97", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30576:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30576:18:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30600:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30606:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30596:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30596:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "30569:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "30569:48:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30569:48:97" + }, + { + "nodeType": "YulAssignment", + "src": "30626:84:97", + "value": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "30696:6:97" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30705:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "30634:61:97" + }, + "nodeType": "YulFunctionCall", + "src": "30634:76:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30626:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30225:9:97", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "30237:6:97", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "30245:6:97", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30253:6:97", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30261:6:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30272:4:97", + "type": "" + } + ], + "src": "30077:640:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30785:79:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30795:22:97", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30810:6:97" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "30804:5:97" + }, + "nodeType": "YulFunctionCall", + "src": "30804:13:97" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "30795:5:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "30852:5:97" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "30826:25:97" + }, + "nodeType": "YulFunctionCall", + "src": "30826:32:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30826:32:97" + } + ] + }, + "name": "abi_decode_t_bytes4_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30763:6:97", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "30771:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "30779:5:97", + "type": "" + } + ], + "src": "30723:141:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30946:273:97", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "30992:83:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "30994:77:97" + }, + "nodeType": "YulFunctionCall", + "src": "30994:79:97" + }, + "nodeType": "YulExpressionStatement", + "src": "30994:79:97" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30967:7:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30976:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30963:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30963:23:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30988:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "30959:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "30959:32:97" + }, + "nodeType": "YulIf", + "src": "30956:119:97" + }, + { + "nodeType": "YulBlock", + "src": "31085:127:97", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31100:15:97", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31114:1:97", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "31104:6:97", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31129:73:97", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31174:9:97" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31185:6:97" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31170:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "31170:22:97" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31194:7:97" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4_fromMemory", + "nodeType": "YulIdentifier", + "src": "31139:30:97" + }, + "nodeType": "YulFunctionCall", + "src": "31139:63:97" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "31129:6:97" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30916:9:97", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "30927:7:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30939:6:97", + "type": "" + } + ], + "src": "30870:349:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31331:134:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "31353:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31361:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31349:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "31349:14:97" + }, + { + "hexValue": "455243373231456e756d657261626c653a20636f6e7365637574697665207472", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31365:34:97", + "type": "", + "value": "ERC721Enumerable: consecutive tr" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31342:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "31342:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "31342:58:97" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "31421:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31429:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31417:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "31417:15:97" + }, + { + "hexValue": "616e7366657273206e6f7420737570706f72746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "31434:23:97", + "type": "", + "value": "ansfers not supported" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31410:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "31410:48:97" + }, + "nodeType": "YulExpressionStatement", + "src": "31410:48:97" + } + ] + }, + "name": "store_literal_in_memory_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "31323:6:97", + "type": "" + } + ], + "src": "31225:240:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31617:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31627:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31693:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31698:2:97", + "type": "", + "value": "53" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "31634:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "31634:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31627:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31799:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314", + "nodeType": "YulIdentifier", + "src": "31710:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "31710:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "31710:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "31812:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31823:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31828:2:97", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31819:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "31819:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "31812:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "31605:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "31613:3:97", + "type": "" + } + ], + "src": "31471:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32014:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32024:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32036:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32047:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32032:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "32032:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32024:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32071:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32082:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32067:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "32067:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32090:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32096:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "32086:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "32086:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32060:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "32060:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "32060:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "32116:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32250:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "32124:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "32124:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32116:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31994:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32009:4:97", + "type": "" + } + ], + "src": "31843:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32374:76:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "32396:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32404:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32392:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "32392:14:97" + }, + { + "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "32408:34:97", + "type": "", + "value": "ERC721: mint to the zero address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32385:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "32385:58:97" + }, + "nodeType": "YulExpressionStatement", + "src": "32385:58:97" + } + ] + }, + "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "32366:6:97", + "type": "" + } + ], + "src": "32268:182:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32602:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32612:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "32678:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32683:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "32619:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "32619:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "32612:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "32784:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "nodeType": "YulIdentifier", + "src": "32695:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "32695:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "32695:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "32797:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "32808:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32813:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32804:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "32804:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "32797:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "32590:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "32598:3:97", + "type": "" + } + ], + "src": "32456:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32999:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33009:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33021:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33032:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33017:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33017:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33009:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33056:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33067:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33052:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33052:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33075:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33081:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "33071:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33071:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33045:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "33045:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "33045:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "33101:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33235:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "33109:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "33109:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33101:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32979:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32994:4:97", + "type": "" + } + ], + "src": "32828:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33359:72:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "33381:6:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33389:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33377:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33377:14:97" + }, + { + "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "33393:30:97", + "type": "", + "value": "ERC721: token already minted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33370:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "33370:54:97" + }, + "nodeType": "YulExpressionStatement", + "src": "33370:54:97" + } + ] + }, + "name": "store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "33351:6:97", + "type": "" + } + ], + "src": "33253:178:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33583:220:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33593:74:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33659:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33664:2:97", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "33600:58:97" + }, + "nodeType": "YulFunctionCall", + "src": "33600:67:97" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33593:3:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33765:3:97" + } + ], + "functionName": { + "name": "store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "nodeType": "YulIdentifier", + "src": "33676:88:97" + }, + "nodeType": "YulFunctionCall", + "src": "33676:93:97" + }, + "nodeType": "YulExpressionStatement", + "src": "33676:93:97" + }, + { + "nodeType": "YulAssignment", + "src": "33778:19:97", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33789:3:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33794:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33785:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33785:12:97" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "33778:3:97" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "33571:3:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "33579:3:97", + "type": "" + } + ], + "src": "33437:366:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33980:248:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33990:26:97", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34002:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34013:2:97", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33998:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "33998:18:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33990:4:97" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34037:9:97" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34048:1:97", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34033:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "34033:17:97" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34056:4:97" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34062:9:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "34052:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "34052:20:97" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34026:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "34026:47:97" + }, + "nodeType": "YulExpressionStatement", + "src": "34026:47:97" + }, + { + "nodeType": "YulAssignment", + "src": "34082:139:97", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34216:4:97" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "34090:124:97" + }, + "nodeType": "YulFunctionCall", + "src": "34090:131:97" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34082:4:97" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33960:9:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33975:4:97", + "type": "" + } + ], + "src": "33809:419:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34279:146:97", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34289:25:97", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34312:1:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "34294:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "34294:20:97" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34289:1:97" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "34323:25:97", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "34346:1:97" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "34328:17:97" + }, + "nodeType": "YulFunctionCall", + "src": "34328:20:97" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "34323:1:97" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34370:22:97", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "34372:16:97" + }, + "nodeType": "YulFunctionCall", + "src": "34372:18:97" + }, + "nodeType": "YulExpressionStatement", + "src": "34372:18:97" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34364:1:97" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "34367:1:97" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "34361:2:97" + }, + "nodeType": "YulFunctionCall", + "src": "34361:8:97" + }, + "nodeType": "YulIf", + "src": "34358:34:97" + }, + { + "nodeType": "YulAssignment", + "src": "34402:17:97", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34414:1:97" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "34417:1:97" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "34410:3:97" + }, + "nodeType": "YulFunctionCall", + "src": "34410:9:97" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "34402:4:97" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "34265:1:97", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "34268:1:97", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "34274:4:97", + "type": "" + } + ], + "src": "34234:191:97" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34459:152:97", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34476:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34479:77:97", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34469:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "34469:88:97" + }, + "nodeType": "YulExpressionStatement", + "src": "34469:88:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34573:1:97", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34576:4:97", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34566:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "34566:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "34566:15:97" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34597:1:97", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34600:4:97", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "34590:6:97" + }, + "nodeType": "YulFunctionCall", + "src": "34590:15:97" + }, + "nodeType": "YulExpressionStatement", + "src": "34590:15:97" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "34431:180:97" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(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_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function 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(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(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_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 cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function 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 abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(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_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1 {\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, value1 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\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_bytes_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(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_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_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\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 store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner or approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 61)\n store_literal_in_memory_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r or approved\")\n\n }\n\n function abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n store_literal_in_memory_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: owner index ou\")\n\n mstore(add(memPtr, 32), \"t of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8(memPtr) {\n\n mstore(add(memPtr, 0), \"Address does not have the minter\")\n\n mstore(add(memPtr, 32), \" permission\")\n\n }\n\n function abi_encode_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5(memPtr) {\n\n mstore(add(memPtr, 0), \"Exceeds the total supply\")\n\n }\n\n function abi_encode_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\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 store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: global index o\")\n\n mstore(add(memPtr, 32), \"ut of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: consecutive tr\")\n\n mstore(add(memPtr, 32), \"ansfers not supported\")\n\n }\n\n function abi_encode_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 53)\n store_literal_in_memory_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: token already minted\")\n\n }\n\n function abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack( tail)\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\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 97, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "266:2558:88:-:0;;;334:33;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;645:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;745:5;752:7;936:32:6;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;1464:5:25;1456;:13;;;;;;;;;;;;:::i;:::-;;1489:7;1479;:17;;;;;;;;;;;;:::i;:::-;;1390:113;;789:1:88::1;775:11;:15;767:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;850:11;836:25;;;;::::0;::::1;645:221:::0;;;266:2558;;640:96:35;693:7;719:10;712:17;;640:96;:::o;2426:187:6:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;266:2558:88:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:97:-;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:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:77::-;2762:7;2791:5;2780:16;;2725:77;;;:::o;2808:122::-;2881:24;2899:5;2881:24;:::i;:::-;2874:5;2871:35;2861:63;;2920:1;2917;2910:12;2861:63;2808:122;:::o;2936:143::-;2993:5;3024:6;3018:13;3009:22;;3040:33;3067:5;3040:33;:::i;:::-;2936:143;;;;:::o;3085:1009::-;3193:6;3201;3209;3258:2;3246:9;3237:7;3233:23;3229:32;3226:119;;;3264:79;;:::i;:::-;3226:119;3405:1;3394:9;3390:17;3384:24;3435:18;3427:6;3424:30;3421:117;;;3457:79;;:::i;:::-;3421:117;3562:74;3628:7;3619:6;3608:9;3604:22;3562:74;:::i;:::-;3552:84;;3355:291;3706:2;3695:9;3691:18;3685:25;3737:18;3729:6;3726:30;3723:117;;;3759:79;;:::i;:::-;3723:117;3864:74;3930:7;3921:6;3910:9;3906:22;3864:74;:::i;:::-;3854:84;;3656:292;3987:2;4013:64;4069:7;4060:6;4049:9;4045:22;4013:64;:::i;:::-;4003:74;;3958:129;3085:1009;;;;;:::o;4100:169::-;4184:11;4218:6;4213:3;4206:19;4258:4;4253:3;4249:14;4234:29;;4100:169;;;;:::o;4275:222::-;4415:34;4411:1;4403:6;4399:14;4392:58;4484:5;4479:2;4471:6;4467:15;4460:30;4275:222;:::o;4503:366::-;4645:3;4666:67;4730:2;4725:3;4666:67;:::i;:::-;4659:74;;4742:93;4831:3;4742:93;:::i;:::-;4860:2;4855:3;4851:12;4844:19;;4503:366;;;:::o;4875:419::-;5041:4;5079:2;5068:9;5064:18;5056:26;;5128:9;5122:4;5118:20;5114:1;5103:9;5099:17;5092:47;5156:131;5282:4;5156:131;:::i;:::-;5148:139;;4875:419;;;:::o;5300:180::-;5348:77;5345:1;5338:88;5445:4;5442:1;5435:15;5469:4;5466:1;5459:15;5486:320;5530:6;5567:1;5561:4;5557:12;5547:22;;5614:1;5608:4;5604:12;5635:18;5625:81;;5691:4;5683:6;5679:17;5669:27;;5625:81;5753:2;5745:6;5742:14;5722:18;5719:38;5716:84;;;5772:18;;:::i;:::-;5716:84;5537:269;5486:320;;;:::o;266:2558:88:-;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "266:2558:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2471:98:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3935:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3468:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1630:111:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;371:36:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4612:296:25;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1306:253:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1138:227:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4974:149:25;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;531:238:28;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1813:230:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2190:219:25;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:6;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1405:121:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2633:102:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4169:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2543:158:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5189:276:25;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2801;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4388:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:198:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;442:39:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2003:201;2142:4;2163:36;2187:11;2163:23;:36::i;:::-;2156:43;;2003:201;;;:::o;2471:98:25:-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;4071:15;:24;4087:7;4071:24;;;;;;;;;;;;;;;;;;;;;4064:31;;3935:167;;;:::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;3605:11;;:2;:11;;;;3597:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3702:5;3686:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3711:37;3728:5;3735:12;:10;:12::i;:::-;3711:16;:37::i;:::-;3686:62;3665:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;1630:111:29:-;1691:7;1717:10;:17;;;;1710:24;;1630:111;:::o;371:36:88:-;;;:::o;4612:296:25:-;4771:41;4790:12;:10;:12::i;:::-;4804:7;4771:18;:41::i;:::-;4763:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;:::-;4612:296;;;:::o;1306:253:29:-;1403:7;1438:23;1455:5;1438:16;:23::i;:::-;1430:5;:31;1422:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1526:12;:19;1539:5;1526:19;;;;;;;;;;;;;;;:26;1546:5;1526:26;;;;;;;;;;;;1519:33;;1306:253;;;;:::o;1138:227:88:-;1198:7;2741;:21;2749:12;:10;:12::i;:::-;2741:21;;;;;;;;;;;;;;;;;;;;;;;;;2733:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;1234:11:::1;1220;;:25;1212:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;1280:15;1300:11;;1298:13;;;;;:::i;:::-;;;;;;;1280:31;;1317:23;1327:3;1332:7;1317:9;:23::i;:::-;1353:7;1346:14;;;1138:227:::0;;;:::o;4974:149:25:-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;:::-;4974:149;;;:::o;531:238:28:-;647:41;666:12;:10;:12::i;:::-;680:7;647:18;:41::i;:::-;639:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;748:14;754:7;748:5;:14::i;:::-;531:238;:::o;1813:230:29:-;1888:7;1923:30;:28;:30::i;:::-;1915:5;:38;1907:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;2019:10;2030:5;2019:17;;;;;;;;:::i;:::-;;;;;;;;;;2012:24;;1813:230;;;:::o;2190:219:25:-;2262:7;2281:13;2297:17;2306:7;2297:8;:17::i;:::-;2281:33;;2349:1;2332:19;;:5;:19;;;;2324:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2397:5;2390:12;;;2190:219;;;:::o;1929:204::-;2001:7;2045:1;2028:19;;:5;:19;;;;2020:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2110:9;:16;2120:5;2110:16;;;;;;;;;;;;;;;;2103:23;;1929:204;;;:::o;1824:101:6:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;1405:121:88:-;1094:13:6;:11;:13::i;:::-;1509:12:88::1;;1493:13;:28;;;;;;;:::i;:::-;;1405:121:::0;;:::o;2633:102:25:-;2689:13;2721:7;2714:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2633:102;:::o;4169:153::-;4263:52;4282:12;:10;:12::i;:::-;4296:8;4306;4263:18;:52::i;:::-;4169:153;;:::o;2543:158:88:-;1094:13:6;:11;:13::i;:::-;2644:8:88::1;2624:7;:17;2632:8;2624:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2677:8;2663:33;;;2687:8;2663:33;;;;;;:::i;:::-;;;;;;;;2543:158:::0;;:::o;5189:276:25:-;5319:41;5338:12;:10;:12::i;:::-;5352:7;5319:18;:41::i;:::-;5311:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;:8;:10::i;:::-;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;;;2801:276;;;:::o;4388:162::-;4485:4;4508:18;:25;4527:5;4508:25;;;;;;;;;;;;;;;:35;4534:8;4508:35;;;;;;;;;;;;;;;;;;;;;;;;;4501:42;;4388:162;;;;:::o;2074:198:6:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;;;2154:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;442:39:88:-;;;;;;;;;;;;;;;;;;;;;;:::o;1005:222:29:-;1107:4;1145:35;1130:50;;;:11;:50;;;;:90;;;;1184:36;1208:11;1184:23;:36::i;:::-;1130:90;1123:97;;1005:222;;;:::o;13240:133:25:-;13321:16;13329:7;13321;:16::i;:::-;13313:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13240:133;:::o;640:96:35:-;693:7;719:10;712:17;;640:96;:::o;12572:171:25:-;12673:2;12646:15;:24;12662:7;12646:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12728:7;12724:2;12690:46;;12699:23;12714:7;12699:14;:23::i;:::-;12690:46;;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;7570:16;;:7;:16;;;:52;;;;7590:32;7607:5;7614:7;7590:16;:32::i;:::-;7570:52;:87;;;;7650:7;7626:31;;:20;7638:7;7626:11;:20::i;:::-;:31;;;7570:87;7562:96;;;7404:261;;;;:::o;11257:1203::-;11381:4;11354:31;;:23;11369:7;11354:14;:23::i;:::-;:31;;;11346:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11459:1;11445:16;;:2;:16;;;;11437:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11513:42;11534:4;11540:2;11544:7;11553:1;11513:20;:42::i;:::-;11682:4;11655:31;;:23;11670:7;11655:14;:23::i;:::-;:31;;;11647:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11797:15;:24;11813:7;11797:24;;;;;;;;;;;;11790:31;;;;;;;;;;;12284:1;12265:9;:15;12275:4;12265:15;;;;;;;;;;;;;;;;:20;;;;;;;;;;;12316:1;12299:9;:13;12309:2;12299:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;12356:2;12337:7;:16;12345:7;12337:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12393:7;12389:2;12374:27;;12383:4;12374:27;;;;;;;;;;;;12412:41;12432:4;12438:2;12442:7;12451:1;12412:19;:41::i;:::-;11257:1203;;;:::o;7995:108::-;8070:26;8080:2;8084:7;8070:26;;;;;;;;;;;;:9;:26::i;:::-;7995:108;;:::o;10171:762::-;10230:13;10246:23;10261:7;10246:14;:23::i;:::-;10230:39;;10280:51;10301:5;10316:1;10320:7;10329:1;10280:20;:51::i;:::-;10441:23;10456:7;10441:14;:23::i;:::-;10433:31;;10509:15;:24;10525:7;10509:24;;;;;;;;;;;;10502:31;;;;;;;;;;;10769:1;10749:9;:16;10759:5;10749:16;;;;;;;;;;;;;;;;:21;;;;;;;;;;;10797:7;:16;10805:7;10797:16;;;;;;;;;;;;10790:23;;;;;;;;;;;10857:7;10853:1;10829:36;;10838:5;10829:36;;;;;;;;;;;;10876:50;10896:5;10911:1;10915:7;10924:1;10876:19;:50::i;:::-;10220:713;10171:762;:::o;6702:115::-;6768:7;6794;:16;6802:7;6794:16;;;;;;;;;;;;;;;;;;;;;6787:23;;6702:115;;;:::o;1359:130:6:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2426:187::-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;12879:277:25:-;12999:8;12990:17;;:5;:17;;;;12982:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13085:8;13047:18;:25;13066:5;13047:25;;;;;;;;;;;;;;;:35;13073:8;13047:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13130:8;13108:41;;13123:5;13108:41;;;13140:8;13108:41;;;;;;:::i;:::-;;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6326:267;;;;:::o;1530:106:88:-;1590:13;1618;1611:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1530:106;:::o;447:696:37:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;1064:21;;;1080:5;;1064:21;820:280;;;1120:6;1113:13;;;;;447:696;;;:::o;1570:300:25:-;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;7120:126::-;7185:4;7237:1;7208:31;;:17;7217:7;7208:8;:17::i;:::-;:31;;;;7201:38;;7120:126;;;:::o;1701:241:88:-;1876:61;1903:4;1909:2;1913:12;1927:9;1876:26;:61::i;:::-;1701:241;;;;:::o;16294:115:25:-;;;;;:::o;8324:279::-;8418:18;8424:2;8428:7;8418:5;:18::i;:::-;8467:53;8498:1;8502:2;8506:7;8515:4;8467:22;:53::i;:::-;8446:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;8324:279;;;:::o;13925:831::-;14074:4;14094:15;:2;:13;;;:15::i;:::-;14090:660;;;14145:2;14129:36;;;14166:12;:10;:12::i;:::-;14180:4;14186:7;14195:4;14129:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14384:1;14367:6;:13;:18;14363:321;;;14409:60;;;;;;;;;;:::i;:::-;;;;;;;;14363:321;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;14260:41;;;14250:51;;;:6;:51;;;;14243:58;;;;;14090:660;14735:4;14728:11;;13925:831;;;;;;;:::o;10139:916:41:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;829:155:39:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;2112:890:29:-;2283:61;2310:4;2316:2;2320:12;2334:9;2283:26;:61::i;:::-;2371:1;2359:9;:13;2355:219;;;2500:63;;;;;;;;;;:::i;:::-;;;;;;;;2355:219;2584:15;2602:12;2584:30;;2645:1;2629:18;;:4;:18;;;2625:183;;;2663:40;2695:7;2663:31;:40::i;:::-;2625:183;;;2732:2;2724:10;;:4;:10;;;2720:88;;2750:47;2783:4;2789:7;2750:32;:47::i;:::-;2720:88;2625:183;2835:1;2821:16;;:2;:16;;;2817:179;;;2853:45;2890:7;2853:36;:45::i;:::-;2817:179;;;2925:4;2919:10;;:2;:10;;;2915:81;;2945:40;2973:2;2977:7;2945:27;:40::i;:::-;2915:81;2817:179;2273:729;2112:890;;;;:::o;8925:920:25:-;9018:1;9004:16;;:2;:16;;;;8996:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9076:16;9084:7;9076;:16::i;:::-;9075:17;9067:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9136:48;9165:1;9169:2;9173:7;9182:1;9136:20;:48::i;:::-;9280:16;9288:7;9280;:16::i;:::-;9279:17;9271:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9688:1;9671:9;:13;9681:2;9671:13;;;;;;;;;;;;;;;;:18;;;;;;;;;;;9729:2;9710:7;:16;9718:7;9710:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9772:7;9768:2;9747:33;;9764:1;9747:33;;;;;;;;;;;;9791:47;9819:1;9823:2;9827:7;9836:1;9791:19;:47::i;:::-;8925:920;;:::o;1412:320:33:-;1472:4;1724:1;1702:7;:19;;;:23;1695:30;;1412:320;;;:::o;15472:116:25:-;;;;;:::o;3708:161:29:-;3811:10;:17;;;;3784:15;:24;3800:7;3784:24;;;;;;;;;;;:44;;;;3838:10;3854:7;3838:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3708:161;:::o;4486:970::-;4748:22;4798:1;4773:22;4790:4;4773:16;:22::i;:::-;:26;;;;:::i;:::-;4748:51;;4809:18;4830:17;:26;4848:7;4830:26;;;;;;;;;;;;4809:47;;4974:14;4960:10;:28;4956:323;;5004:19;5026:12;:18;5039:4;5026:18;;;;;;;;;;;;;;;:34;5045:14;5026:34;;;;;;;;;;;;5004:56;;5108:11;5075:12;:18;5088:4;5075:18;;;;;;;;;;;;;;;:30;5094:10;5075:30;;;;;;;;;;;:44;;;;5224:10;5191:17;:30;5209:11;5191:30;;;;;;;;;;;:43;;;;4990:289;4956:323;5372:17;:26;5390:7;5372:26;;;;;;;;;;;5365:33;;;5415:12;:18;5428:4;5415:18;;;;;;;;;;;;;;;:34;5434:14;5415:34;;;;;;;;;;;5408:41;;;4567:889;;4486:970;;:::o;5744:1061::-;5993:22;6038:1;6018:10;:17;;;;:21;;;;:::i;:::-;5993:46;;6049:18;6070:15;:24;6086:7;6070:24;;;;;;;;;;;;6049:45;;6416:19;6438:10;6449:14;6438:26;;;;;;;;:::i;:::-;;;;;;;;;;6416:48;;6500:11;6475:10;6486;6475:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6610:10;6579:15;:28;6595:11;6579:28;;;;;;;;;;;:41;;;;6748:15;:24;6764:7;6748:24;;;;;;;;;;;6741:31;;;6782:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5815:990;;;5744:1061;:::o;3296:217::-;3380:14;3397:20;3414:2;3397:16;:20::i;:::-;3380:37;;3454:7;3427:12;:16;3440:2;3427:16;;;;;;;;;;;;;;;:24;3444:6;3427:24;;;;;;;;;;;:34;;;;3500:6;3471:17;:26;3489:7;3471:26;;;;;;;;;;;:35;;;;3370:143;3296:217;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:97:-;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:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:329::-;5974:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;;:::i;:::-;5991:119;6149:1;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6120:117;5915:329;;;;:::o;6250:117::-;6359:1;6356;6349:12;6373:117;6482:1;6479;6472:12;6496:117;6605:1;6602;6595:12;6633:553;6691:8;6701:6;6751:3;6744:4;6736:6;6732:17;6728:27;6718:122;;6759:79;;:::i;:::-;6718:122;6872:6;6859:20;6849:30;;6902:18;6894:6;6891:30;6888:117;;;6924:79;;:::i;:::-;6888:117;7038:4;7030:6;7026:17;7014:29;;7092:3;7084:4;7076:6;7072:17;7062:8;7058:32;7055:41;7052:128;;;7099:79;;:::i;:::-;7052:128;6633:553;;;;;:::o;7192:529::-;7263:6;7271;7320:2;7308:9;7299:7;7295:23;7291:32;7288:119;;;7326:79;;:::i;:::-;7288:119;7474:1;7463:9;7459:17;7446:31;7504:18;7496:6;7493:30;7490:117;;;7526:79;;:::i;:::-;7490:117;7639:65;7696:7;7687:6;7676:9;7672:22;7639:65;:::i;:::-;7621:83;;;;7417:297;7192:529;;;;;:::o;7727:116::-;7797:21;7812:5;7797:21;:::i;:::-;7790:5;7787:32;7777:60;;7833:1;7830;7823:12;7777:60;7727:116;:::o;7849:133::-;7892:5;7930:6;7917:20;7908:29;;7946:30;7970:5;7946:30;:::i;:::-;7849:133;;;;:::o;7988:468::-;8053:6;8061;8110:2;8098:9;8089:7;8085:23;8081:32;8078:119;;;8116:79;;:::i;:::-;8078:119;8236:1;8261:53;8306:7;8297:6;8286:9;8282:22;8261:53;:::i;:::-;8251:63;;8207:117;8363:2;8389:50;8431:7;8422:6;8411:9;8407:22;8389:50;:::i;:::-;8379:60;;8334:115;7988:468;;;;;:::o;8462:117::-;8571:1;8568;8561:12;8585:180;8633:77;8630:1;8623:88;8730:4;8727:1;8720:15;8754:4;8751:1;8744:15;8771:281;8854:27;8876:4;8854:27;:::i;:::-;8846:6;8842:40;8984:6;8972:10;8969:22;8948:18;8936:10;8933:34;8930:62;8927:88;;;8995:18;;:::i;:::-;8927:88;9035:10;9031:2;9024:22;8814:238;8771:281;;:::o;9058:129::-;9092:6;9119:20;;:::i;:::-;9109:30;;9148:33;9176:4;9168:6;9148:33;:::i;:::-;9058:129;;;:::o;9193:307::-;9254:4;9344:18;9336:6;9333:30;9330:56;;;9366:18;;:::i;:::-;9330:56;9404:29;9426:6;9404:29;:::i;:::-;9396:37;;9488:4;9482;9478:15;9470:23;;9193:307;;;:::o;9506:154::-;9590:6;9585:3;9580;9567:30;9652:1;9643:6;9638:3;9634:16;9627:27;9506:154;;;:::o;9666:410::-;9743:5;9768:65;9784:48;9825:6;9784:48;:::i;:::-;9768:65;:::i;:::-;9759:74;;9856:6;9849:5;9842:21;9894:4;9887:5;9883:16;9932:3;9923:6;9918:3;9914:16;9911:25;9908:112;;;9939:79;;:::i;:::-;9908:112;10029:41;10063:6;10058:3;10053;10029:41;:::i;:::-;9749:327;9666:410;;;;;:::o;10095:338::-;10150:5;10199:3;10192:4;10184:6;10180:17;10176:27;10166:122;;10207:79;;:::i;:::-;10166:122;10324:6;10311:20;10349:78;10423:3;10415:6;10408:4;10400:6;10396:17;10349:78;:::i;:::-;10340:87;;10156:277;10095:338;;;;:::o;10439:943::-;10534:6;10542;10550;10558;10607:3;10595:9;10586:7;10582:23;10578:33;10575:120;;;10614:79;;:::i;:::-;10575:120;10734:1;10759:53;10804:7;10795:6;10784:9;10780:22;10759:53;:::i;:::-;10749:63;;10705:117;10861:2;10887:53;10932:7;10923:6;10912:9;10908:22;10887:53;:::i;:::-;10877:63;;10832:118;10989:2;11015:53;11060:7;11051:6;11040:9;11036:22;11015:53;:::i;:::-;11005:63;;10960:118;11145:2;11134:9;11130:18;11117:32;11176:18;11168:6;11165:30;11162:117;;;11198:79;;:::i;:::-;11162:117;11303:62;11357:7;11348:6;11337:9;11333:22;11303:62;:::i;:::-;11293:72;;11088:287;10439:943;;;;;;;:::o;11388:474::-;11456:6;11464;11513:2;11501:9;11492:7;11488:23;11484:32;11481:119;;;11519:79;;:::i;:::-;11481:119;11639:1;11664:53;11709:7;11700:6;11689:9;11685:22;11664:53;:::i;:::-;11654:63;;11610:117;11766:2;11792:53;11837:7;11828:6;11817:9;11813:22;11792:53;:::i;:::-;11782:63;;11737:118;11388:474;;;;;:::o;11868:180::-;11916:77;11913:1;11906:88;12013:4;12010:1;12003:15;12037:4;12034:1;12027:15;12054:320;12098:6;12135:1;12129:4;12125:12;12115:22;;12182:1;12176:4;12172:12;12203:18;12193:81;;12259:4;12251:6;12247:17;12237:27;;12193:81;12321:2;12313:6;12310:14;12290:18;12287:38;12284:84;;;12340:18;;:::i;:::-;12284:84;12105:269;12054:320;;;:::o;12380:220::-;12520:34;12516:1;12508:6;12504:14;12497:58;12589:3;12584:2;12576:6;12572:15;12565:28;12380:220;:::o;12606:366::-;12748:3;12769:67;12833:2;12828:3;12769:67;:::i;:::-;12762:74;;12845:93;12934:3;12845:93;:::i;:::-;12963:2;12958:3;12954:12;12947:19;;12606:366;;;:::o;12978:419::-;13144:4;13182:2;13171:9;13167:18;13159:26;;13231:9;13225:4;13221:20;13217:1;13206:9;13202:17;13195:47;13259:131;13385:4;13259:131;:::i;:::-;13251:139;;12978:419;;;:::o;13403:248::-;13543:34;13539:1;13531:6;13527:14;13520:58;13612:31;13607:2;13599:6;13595:15;13588:56;13403:248;:::o;13657:366::-;13799:3;13820:67;13884:2;13879:3;13820:67;:::i;:::-;13813:74;;13896:93;13985:3;13896:93;:::i;:::-;14014:2;14009:3;14005:12;13998:19;;13657:366;;;:::o;14029:419::-;14195:4;14233:2;14222:9;14218:18;14210:26;;14282:9;14276:4;14272:20;14268:1;14257:9;14253:17;14246:47;14310:131;14436:4;14310:131;:::i;:::-;14302:139;;14029:419;;;:::o;14454:232::-;14594:34;14590:1;14582:6;14578:14;14571:58;14663:15;14658:2;14650:6;14646:15;14639:40;14454:232;:::o;14692:366::-;14834:3;14855:67;14919:2;14914:3;14855:67;:::i;:::-;14848:74;;14931:93;15020:3;14931:93;:::i;:::-;15049:2;15044:3;15040:12;15033:19;;14692:366;;;:::o;15064:419::-;15230:4;15268:2;15257:9;15253:18;15245:26;;15317:9;15311:4;15307:20;15303:1;15292:9;15288:17;15281:47;15345:131;15471:4;15345:131;:::i;:::-;15337:139;;15064:419;;;:::o;15489:230::-;15629:34;15625:1;15617:6;15613:14;15606:58;15698:13;15693:2;15685:6;15681:15;15674:38;15489:230;:::o;15725:366::-;15867:3;15888:67;15952:2;15947:3;15888:67;:::i;:::-;15881:74;;15964:93;16053:3;15964:93;:::i;:::-;16082:2;16077:3;16073:12;16066:19;;15725:366;;;:::o;16097:419::-;16263:4;16301:2;16290:9;16286:18;16278:26;;16350:9;16344:4;16340:20;16336:1;16325:9;16321:17;16314:47;16378:131;16504:4;16378:131;:::i;:::-;16370:139;;16097:419;;;:::o;16522:230::-;16662:34;16658:1;16650:6;16646:14;16639:58;16731:13;16726:2;16718:6;16714:15;16707:38;16522:230;:::o;16758:366::-;16900:3;16921:67;16985:2;16980:3;16921:67;:::i;:::-;16914:74;;16997:93;17086:3;16997:93;:::i;:::-;17115:2;17110:3;17106:12;17099:19;;16758:366;;;:::o;17130:419::-;17296:4;17334:2;17323:9;17319:18;17311:26;;17383:9;17377:4;17373:20;17369:1;17358:9;17354:17;17347:47;17411:131;17537:4;17411:131;:::i;:::-;17403:139;;17130:419;;;:::o;17555:174::-;17695:26;17691:1;17683:6;17679:14;17672:50;17555:174;:::o;17735:366::-;17877:3;17898:67;17962:2;17957:3;17898:67;:::i;:::-;17891:74;;17974:93;18063:3;17974:93;:::i;:::-;18092:2;18087:3;18083:12;18076:19;;17735:366;;;:::o;18107:419::-;18273:4;18311:2;18300:9;18296:18;18288:26;;18360:9;18354:4;18350:20;18346:1;18335:9;18331:17;18324:47;18388:131;18514:4;18388:131;:::i;:::-;18380:139;;18107:419;;;:::o;18532:180::-;18580:77;18577:1;18570:88;18677:4;18674:1;18667:15;18701:4;18698:1;18691:15;18718:233;18757:3;18780:24;18798:5;18780:24;:::i;:::-;18771:33;;18826:66;18819:5;18816:77;18813:103;;;18896:18;;:::i;:::-;18813:103;18943:1;18936:5;18932:13;18925:20;;18718:233;;;:::o;18957:231::-;19097:34;19093:1;19085:6;19081:14;19074:58;19166:14;19161:2;19153:6;19149:15;19142:39;18957:231;:::o;19194:366::-;19336:3;19357:67;19421:2;19416:3;19357:67;:::i;:::-;19350:74;;19433:93;19522:3;19433:93;:::i;:::-;19551:2;19546:3;19542:12;19535:19;;19194:366;;;:::o;19566:419::-;19732:4;19770:2;19759:9;19755:18;19747:26;;19819:9;19813:4;19809:20;19805:1;19794:9;19790:17;19783:47;19847:131;19973:4;19847:131;:::i;:::-;19839:139;;19566:419;;;:::o;19991:180::-;20039:77;20036:1;20029:88;20136:4;20133:1;20126:15;20160:4;20157:1;20150:15;20177:174;20317:26;20313:1;20305:6;20301:14;20294:50;20177:174;:::o;20357:366::-;20499:3;20520:67;20584:2;20579:3;20520:67;:::i;:::-;20513:74;;20596:93;20685:3;20596:93;:::i;:::-;20714:2;20709:3;20705:12;20698:19;;20357:366;;;:::o;20729:419::-;20895:4;20933:2;20922:9;20918:18;20910:26;;20982:9;20976:4;20972:20;20968:1;20957:9;20953:17;20946:47;21010:131;21136:4;21010:131;:::i;:::-;21002:139;;20729:419;;;:::o;21154:228::-;21294:34;21290:1;21282:6;21278:14;21271:58;21363:11;21358:2;21350:6;21346:15;21339:36;21154:228;:::o;21388:366::-;21530:3;21551:67;21615:2;21610:3;21551:67;:::i;:::-;21544:74;;21627:93;21716:3;21627:93;:::i;:::-;21745:2;21740:3;21736:12;21729:19;;21388:366;;;:::o;21760:419::-;21926:4;21964:2;21953:9;21949:18;21941:26;;22013:9;22007:4;22003:20;21999:1;21988:9;21984:17;21977:47;22041:131;22167:4;22041:131;:::i;:::-;22033:139;;21760:419;;;:::o;22185:148::-;22287:11;22324:3;22309:18;;22185:148;;;;:::o;22339:377::-;22445:3;22473:39;22506:5;22473:39;:::i;:::-;22528:89;22610:6;22605:3;22528:89;:::i;:::-;22521:96;;22626:52;22671:6;22666:3;22659:4;22652:5;22648:16;22626:52;:::i;:::-;22703:6;22698:3;22694:16;22687:23;;22449:267;22339:377;;;;:::o;22722:435::-;22902:3;22924:95;23015:3;23006:6;22924:95;:::i;:::-;22917:102;;23036:95;23127:3;23118:6;23036:95;:::i;:::-;23029:102;;23148:3;23141:10;;22722:435;;;;;:::o;23163:225::-;23303:34;23299:1;23291:6;23287:14;23280:58;23372:8;23367:2;23359:6;23355:15;23348:33;23163:225;:::o;23394:366::-;23536:3;23557:67;23621:2;23616:3;23557:67;:::i;:::-;23550:74;;23633:93;23722:3;23633:93;:::i;:::-;23751:2;23746:3;23742:12;23735:19;;23394:366;;;:::o;23766:419::-;23932:4;23970:2;23959:9;23955:18;23947:26;;24019:9;24013:4;24009:20;24005:1;23994:9;23990:17;23983:47;24047:131;24173:4;24047:131;:::i;:::-;24039:139;;23766:419;;;:::o;24191:224::-;24331:34;24327:1;24319:6;24315:14;24308:58;24400:7;24395:2;24387:6;24383:15;24376:32;24191:224;:::o;24421:366::-;24563:3;24584:67;24648:2;24643:3;24584:67;:::i;:::-;24577:74;;24660:93;24749:3;24660:93;:::i;:::-;24778:2;24773:3;24769:12;24762:19;;24421:366;;;:::o;24793:419::-;24959:4;24997:2;24986:9;24982:18;24974:26;;25046:9;25040:4;25036:20;25032:1;25021:9;25017:17;25010:47;25074:131;25200:4;25074:131;:::i;:::-;25066:139;;24793:419;;;:::o;25218:223::-;25358:34;25354:1;25346:6;25342:14;25335:58;25427:6;25422:2;25414:6;25410:15;25403:31;25218:223;:::o;25447:366::-;25589:3;25610:67;25674:2;25669:3;25610:67;:::i;:::-;25603:74;;25686:93;25775:3;25686:93;:::i;:::-;25804:2;25799:3;25795:12;25788:19;;25447:366;;;:::o;25819:419::-;25985:4;26023:2;26012:9;26008:18;26000:26;;26072:9;26066:4;26062:20;26058:1;26047:9;26043:17;26036:47;26100:131;26226:4;26100:131;:::i;:::-;26092:139;;25819:419;;;:::o;26244:182::-;26384:34;26380:1;26372:6;26368:14;26361:58;26244:182;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:175::-;27369:27;27365:1;27357:6;27353:14;27346:51;27229:175;:::o;27410:366::-;27552:3;27573:67;27637:2;27632:3;27573:67;:::i;:::-;27566:74;;27649:93;27738:3;27649:93;:::i;:::-;27767:2;27762:3;27758:12;27751:19;;27410:366;;;:::o;27782:419::-;27948:4;27986:2;27975:9;27971:18;27963:26;;28035:9;28029:4;28025:20;28021:1;28010:9;28006:17;27999:47;28063:131;28189:4;28063:131;:::i;:::-;28055:139;;27782:419;;;:::o;28207:237::-;28347:34;28343:1;28335:6;28331:14;28324:58;28416:20;28411:2;28403:6;28399:15;28392:45;28207:237;:::o;28450:366::-;28592:3;28613:67;28677:2;28672:3;28613:67;:::i;:::-;28606:74;;28689:93;28778:3;28689:93;:::i;:::-;28807:2;28802:3;28798:12;28791:19;;28450:366;;;:::o;28822:419::-;28988:4;29026:2;29015:9;29011:18;29003:26;;29075:9;29069:4;29065:20;29061:1;29050:9;29046:17;29039:47;29103:131;29229:4;29103:131;:::i;:::-;29095:139;;28822:419;;;:::o;29247:180::-;29295:77;29292:1;29285:88;29392:4;29389:1;29382:15;29416:4;29413:1;29406:15;29433:98;29484:6;29518:5;29512:12;29502:22;;29433:98;;;:::o;29537:168::-;29620:11;29654:6;29649:3;29642:19;29694:4;29689:3;29685:14;29670:29;;29537:168;;;;:::o;29711:360::-;29797:3;29825:38;29857:5;29825:38;:::i;:::-;29879:70;29942:6;29937:3;29879:70;:::i;:::-;29872:77;;29958:52;30003:6;29998:3;29991:4;29984:5;29980:16;29958:52;:::i;:::-;30035:29;30057:6;30035:29;:::i;:::-;30030:3;30026:39;30019:46;;29801:270;29711:360;;;;:::o;30077:640::-;30272:4;30310:3;30299:9;30295:19;30287:27;;30324:71;30392:1;30381:9;30377:17;30368:6;30324:71;:::i;:::-;30405:72;30473:2;30462:9;30458:18;30449:6;30405:72;:::i;:::-;30487;30555:2;30544:9;30540:18;30531:6;30487:72;:::i;:::-;30606:9;30600:4;30596:20;30591:2;30580:9;30576:18;30569:48;30634:76;30705:4;30696:6;30634:76;:::i;:::-;30626:84;;30077:640;;;;;;;:::o;30723:141::-;30779:5;30810:6;30804:13;30795:22;;30826:32;30852:5;30826:32;:::i;:::-;30723:141;;;;:::o;30870:349::-;30939:6;30988:2;30976:9;30967:7;30963:23;30959:32;30956:119;;;30994:79;;:::i;:::-;30956:119;31114:1;31139:63;31194:7;31185:6;31174:9;31170:22;31139:63;:::i;:::-;31129:73;;31085:127;30870:349;;;;:::o;31225:240::-;31365:34;31361:1;31353:6;31349:14;31342:58;31434:23;31429:2;31421:6;31417:15;31410:48;31225:240;:::o;31471:366::-;31613:3;31634:67;31698:2;31693:3;31634:67;:::i;:::-;31627:74;;31710:93;31799:3;31710:93;:::i;:::-;31828:2;31823:3;31819:12;31812:19;;31471:366;;;:::o;31843:419::-;32009:4;32047:2;32036:9;32032:18;32024:26;;32096:9;32090:4;32086:20;32082:1;32071:9;32067:17;32060:47;32124:131;32250:4;32124:131;:::i;:::-;32116:139;;31843:419;;;:::o;32268:182::-;32408:34;32404:1;32396:6;32392:14;32385:58;32268:182;:::o;32456:366::-;32598:3;32619:67;32683:2;32678:3;32619:67;:::i;:::-;32612:74;;32695:93;32784:3;32695:93;:::i;:::-;32813:2;32808:3;32804:12;32797:19;;32456:366;;;:::o;32828:419::-;32994:4;33032:2;33021:9;33017:18;33009:26;;33081:9;33075:4;33071:20;33067:1;33056:9;33052:17;33045:47;33109:131;33235:4;33109:131;:::i;:::-;33101:139;;32828:419;;;:::o;33253:178::-;33393:30;33389:1;33381:6;33377:14;33370:54;33253:178;:::o;33437:366::-;33579:3;33600:67;33664:2;33659:3;33600:67;:::i;:::-;33593:74;;33676:93;33765:3;33676:93;:::i;:::-;33794:2;33789:3;33785:12;33778:19;;33437:366;;;:::o;33809:419::-;33975:4;34013:2;34002:9;33998:18;33990:26;;34062:9;34056:4;34052:20;34048:1;34037:9;34033:17;34026:47;34090:131;34216:4;34090:131;:::i;:::-;34082:139;;33809:419;;;:::o;34234:191::-;34274:4;34294:20;34312:1;34294:20;:::i;:::-;34289:25;;34328:20;34346:1;34328:20;:::i;:::-;34323:25;;34367:1;34364;34361:8;34358:34;;;34372:18;;:::i;:::-;34358:34;34417:1;34414;34410:9;34402:17;;34234:191;;;;:::o;34431:180::-;34479:77;34476:1;34469:88;34576:4;34573:1;34566:15;34600:4;34597:1;34590:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract BEBadgeV2 is Ownable, ERC721Enumerable, ERC721Burnable {\n string private _baseTokenURI = \"\";\n uint256 public immutable supplyLimit;\n uint256 private _tokenIndex;\n mapping(address => bool) public minters;\n\n // ============ Events ============\n event MetaAddressUpdated(address indexed metaAddress);\n event MinterUpdated(address indexed minter, bool support);\n \n constructor(\n string memory _name,\n string memory _symbol,\n uint256 _supplyLimt\n ) ERC721(_name, _symbol) {\n require(_supplyLimt > 0, \"Supply limit must be greater than 0\");\n supplyLimit = _supplyLimt;\n }\n\n\n /**\n * @dev Safely mints a new token and assigns it to the specified address.\n * Only the account with the minter permission can call this function.\n * tokenId begin with 1. \n * @param _to The address to which the newly minted token will be assigned.\n */\n function safeMint(address _to) external onlyMinter returns (uint256){\n require(_tokenIndex < supplyLimit, \"Exceeds the total supply\");\n uint256 tokenId = ++_tokenIndex;\n _safeMint(_to, tokenId);\n return tokenId;\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyOwner() {\n _baseTokenURI = baseTokenURI;\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n \n\n /**\n * @dev See {IERC165-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal virtual override(ERC721, ERC721Enumerable) {\n super._beforeTokenTransfer(from, to, firstTokenId, batchSize);\n }\n \n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(ERC721, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n /**\n * @dev Updates the minters mapping to allow or disallow a specific address to mint tokens.\n * Only the contract owner can call this function.\n * @param _address The address to update the minting permission for.\n * @param _support A boolean indicating whether the address should be allowed to mint tokens or not.\n */\n \n function updateMinters(address _address, bool _support) external onlyOwner {\n minters[_address] = _support;\n emit MinterUpdated(_address, _support);\n }\n\n modifier onlyMinter() {\n require(minters[_msgSender()], \"Address does not have the minter permission\");\n _;\n }\n}\n", + "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/tokens/erc721/BEBadgeV2.sol", + "ast": { + "absolutePath": "project:/contracts/tokens/erc721/BEBadgeV2.sol", + "exportedSymbols": { + "Address": [ + 6811 + ], + "BEBadgeV2": [ + 23489 + ], + "Context": [ + 6880 + ], + "ERC165": [ + 7573 + ], + "ERC721": [ + 5878 + ], + "ERC721Burnable": [ + 6042 + ], + "ERC721Enumerable": [ + 6396 + ], + "IERC165": [ + 7585 + ], + "IERC721": [ + 5994 + ], + "IERC721Enumerable": [ + 6427 + ], + "IERC721Metadata": [ + 6454 + ], + "IERC721Receiver": [ + 6012 + ], + "Math": [ + 8451 + ], + "Ownable": [ + 805 + ], + "SignedMath": [ + 8868 + ], + "Strings": [ + 7183 + ] + }, + "id": 23490, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 23305, + "literals": [ + "solidity", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:23:88" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol", + "id": 23306, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23490, + "sourceUnit": 6397, + "src": "56:78:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol", + "id": 23307, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23490, + "sourceUnit": 6043, + "src": "135:76:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 23308, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23490, + "sourceUnit": 806, + "src": "212:52:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 23309, + "name": "Ownable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 805, + "src": "288:7:88" + }, + "id": 23310, + "nodeType": "InheritanceSpecifier", + "src": "288:7:88" + }, + { + "baseName": { + "id": 23311, + "name": "ERC721Enumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6396, + "src": "297:16:88" + }, + "id": 23312, + "nodeType": "InheritanceSpecifier", + "src": "297:16:88" + }, + { + "baseName": { + "id": 23313, + "name": "ERC721Burnable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6042, + "src": "315:14:88" + }, + "id": 23314, + "nodeType": "InheritanceSpecifier", + "src": "315:14:88" + } + ], + "canonicalName": "BEBadgeV2", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 23489, + "linearizedBaseContracts": [ + 23489, + 6042, + 6396, + 6427, + 5878, + 6454, + 5994, + 7573, + 7585, + 805, + 6880 + ], + "name": "BEBadgeV2", + "nameLocation": "275:9:88", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 23317, + "mutability": "mutable", + "name": "_baseTokenURI", + "nameLocation": "349:13:88", + "nodeType": "VariableDeclaration", + "scope": 23489, + "src": "334:33:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 23315, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "334:6:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "", + "id": 23316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "365:2:88", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "19d1997a", + "id": 23319, + "mutability": "immutable", + "name": "supplyLimit", + "nameLocation": "396:11:88", + "nodeType": "VariableDeclaration", + "scope": 23489, + "src": "371:36:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "371:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 23321, + "mutability": "mutable", + "name": "_tokenIndex", + "nameLocation": "427:11:88", + "nodeType": "VariableDeclaration", + "scope": 23489, + "src": "411:27:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "411:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "f46eccc4", + "id": 23325, + "mutability": "mutable", + "name": "minters", + "nameLocation": "474:7:88", + "nodeType": "VariableDeclaration", + "scope": 23489, + "src": "442:39:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 23324, + "keyType": { + "id": 23322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "450:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "442:24:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 23323, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "461:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "id": 23329, + "name": "MetaAddressUpdated", + "nameLocation": "530:18:88", + "nodeType": "EventDefinition", + "parameters": { + "id": 23328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23327, + "indexed": true, + "mutability": "mutable", + "name": "metaAddress", + "nameLocation": "565:11:88", + "nodeType": "VariableDeclaration", + "scope": 23329, + "src": "549:27:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23326, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "548:29:88" + }, + "src": "524:54:88" + }, + { + "anonymous": false, + "id": 23335, + "name": "MinterUpdated", + "nameLocation": "587:13:88", + "nodeType": "EventDefinition", + "parameters": { + "id": 23334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23331, + "indexed": true, + "mutability": "mutable", + "name": "minter", + "nameLocation": "617:6:88", + "nodeType": "VariableDeclaration", + "scope": 23335, + "src": "601:22:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "601:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23333, + "indexed": false, + "mutability": "mutable", + "name": "support", + "nameLocation": "630:7:88", + "nodeType": "VariableDeclaration", + "scope": 23335, + "src": "625:12:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23332, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "625:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "600:38:88" + }, + "src": "581:58:88" + }, + { + "body": { + "id": 23359, + "nodeType": "Block", + "src": "761:105:88", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 23351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 23349, + "name": "_supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23341, + "src": "775:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 23350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "789:1:88", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "775:15:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "537570706c79206c696d6974206d7573742062652067726561746572207468616e2030", + "id": 23352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "792:37:88", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e", + "typeString": "literal_string \"Supply limit must be greater than 0\"" + }, + "value": "Supply limit must be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ec6c6cfcbffd105dbf2d4830db71823369e945f61e5f39d616d1d32a8df9d76e", + "typeString": "literal_string \"Supply limit must be greater than 0\"" + } + ], + "id": 23348, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "767:7:88", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 23353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "767:63:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23354, + "nodeType": "ExpressionStatement", + "src": "767:63:88" + }, + { + "expression": { + "id": 23357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 23355, + "name": "supplyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23319, + "src": "836:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 23356, + "name": "_supplyLimt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23341, + "src": "850:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "836:25:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 23358, + "nodeType": "ExpressionStatement", + "src": "836:25:88" + } + ] + }, + "id": 23360, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 23344, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23337, + "src": "745:5:88", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 23345, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23339, + "src": "752:7:88", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 23346, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 23343, + "name": "ERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5878, + "src": "738:6:88" + }, + "nodeType": "ModifierInvocation", + "src": "738:22:88" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23337, + "mutability": "mutable", + "name": "_name", + "nameLocation": "676:5:88", + "nodeType": "VariableDeclaration", + "scope": 23360, + "src": "662:19:88", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23336, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "662:6:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23339, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "701:7:88", + "nodeType": "VariableDeclaration", + "scope": 23360, + "src": "687:21:88", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23338, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "687:6:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23341, + "mutability": "mutable", + "name": "_supplyLimt", + "nameLocation": "722:11:88", + "nodeType": "VariableDeclaration", + "scope": 23360, + "src": "714:19:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "714:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "656:81:88" + }, + "returnParameters": { + "id": 23347, + "nodeType": "ParameterList", + "parameters": [], + "src": "761:0:88" + }, + "scope": 23489, + "src": "645:221:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 23389, + "nodeType": "Block", + "src": "1206:159:88", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 23373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 23371, + "name": "_tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23321, + "src": "1220:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 23372, + "name": "supplyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23319, + "src": "1234:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1220:25:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "457863656564732074686520746f74616c20737570706c79", + "id": 23374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1247:26:88", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5", + "typeString": "literal_string \"Exceeds the total supply\"" + }, + "value": "Exceeds the total supply" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fa4ade578fe68aa799ecac701502adc76a7381b9ef378233e7fdba14663b42f5", + "typeString": "literal_string \"Exceeds the total supply\"" + } + ], + "id": 23370, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1212:7:88", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 23375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1212:62:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23376, + "nodeType": "ExpressionStatement", + "src": "1212:62:88" + }, + { + "assignments": [ + 23378 + ], + "declarations": [ + { + "constant": false, + "id": 23378, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1288:7:88", + "nodeType": "VariableDeclaration", + "scope": 23389, + "src": "1280:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1280:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 23381, + "initialValue": { + "id": 23380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "1298:13:88", + "subExpression": { + "id": 23379, + "name": "_tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23321, + "src": "1300:11:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1280:31:88" + }, + { + "expression": { + "arguments": [ + { + "id": 23383, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23363, + "src": "1327:3:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 23384, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23378, + "src": "1332:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 23382, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5446, + 5475 + ], + "referencedDeclaration": 5446, + "src": "1317:9:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 23385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1317:23:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23386, + "nodeType": "ExpressionStatement", + "src": "1317:23:88" + }, + { + "expression": { + "id": 23387, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23378, + "src": "1353:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 23369, + "id": 23388, + "nodeType": "Return", + "src": "1346:14:88" + } + ] + }, + "documentation": { + "id": 23361, + "nodeType": "StructuredDocumentation", + "src": "871:264:88", + "text": " @dev Safely mints a new token and assigns it to the specified address.\n Only the account with the minter permission can call this function.\n tokenId begin with 1. \n @param _to The address to which the newly minted token will be assigned." + }, + "functionSelector": "40d097c3", + "id": 23390, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 23366, + "kind": "modifierInvocation", + "modifierName": { + "id": 23365, + "name": "onlyMinter", + "nodeType": "IdentifierPath", + "referencedDeclaration": 23488, + "src": "1178:10:88" + }, + "nodeType": "ModifierInvocation", + "src": "1178:10:88" + } + ], + "name": "safeMint", + "nameLocation": "1147:8:88", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23363, + "mutability": "mutable", + "name": "_to", + "nameLocation": "1164:3:88", + "nodeType": "VariableDeclaration", + "scope": 23390, + "src": "1156:11:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1156:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1155:13:88" + }, + "returnParameters": { + "id": 23369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23368, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 23390, + "src": "1198:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1198:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1197:9:88" + }, + "scope": 23489, + "src": "1138:227:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 23402, + "nodeType": "Block", + "src": "1487:39:88", + "statements": [ + { + "expression": { + "id": 23400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 23398, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23317, + "src": "1493:13:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 23399, + "name": "baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23393, + "src": "1509:12:88", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "src": "1493:28:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 23401, + "nodeType": "ExpressionStatement", + "src": "1493:28:88" + } + ] + }, + "documentation": { + "id": 23391, + "nodeType": "StructuredDocumentation", + "src": "1369:33:88", + "text": " @dev Set token URI" + }, + "functionSelector": "931688cb", + "id": 23403, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [], + "id": 23396, + "kind": "modifierInvocation", + "modifierName": { + "id": 23395, + "name": "onlyOwner", + "nodeType": "IdentifierPath", + "referencedDeclaration": 724, + "src": "1475:9:88" + }, + "nodeType": "ModifierInvocation", + "src": "1475:11:88" + } + ], + "name": "updateBaseURI", + "nameLocation": "1414:13:88", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23393, + "mutability": "mutable", + "name": "baseTokenURI", + "nameLocation": "1449:12:88", + "nodeType": "VariableDeclaration", + "scope": 23403, + "src": "1433:28:88", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23392, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1433:6:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1427:38:88" + }, + "returnParameters": { + "id": 23397, + "nodeType": "ParameterList", + "parameters": [], + "src": "1487:0:88" + }, + "scope": 23489, + "src": "1405:121:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 5165 + ], + "body": { + "id": 23411, + "nodeType": "Block", + "src": "1605:31:88", + "statements": [ + { + "expression": { + "id": 23409, + "name": "_baseTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23317, + "src": "1618:13:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 23408, + "id": 23410, + "nodeType": "Return", + "src": "1611:20:88" + } + ] + }, + "id": 23412, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_baseURI", + "nameLocation": "1539:8:88", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 23405, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1572:8:88" + }, + "parameters": { + "id": 23404, + "nodeType": "ParameterList", + "parameters": [], + "src": "1547:2:88" + }, + "returnParameters": { + "id": 23408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23407, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 23412, + "src": "1590:13:88", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23406, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1590:6:88", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1589:15:88" + }, + "scope": 23489, + "src": "1530:106:88", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 5849, + 6234 + ], + "body": { + "id": 23436, + "nodeType": "Block", + "src": "1870:72:88", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 23430, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23415, + "src": "1903:4:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 23431, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23417, + "src": "1909:2:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 23432, + "name": "firstTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23419, + "src": "1913:12:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 23433, + "name": "batchSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23421, + "src": "1927:9:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 23427, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "1876:5:88", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BEBadgeV2_$23489_$", + "typeString": "type(contract super BEBadgeV2)" + } + }, + "id": 23429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 6234, + "src": "1876:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 23434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1876:61:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23435, + "nodeType": "ExpressionStatement", + "src": "1876:61:88" + } + ] + }, + "documentation": { + "id": 23413, + "nodeType": "StructuredDocumentation", + "src": "1643:55:88", + "text": " @dev See {IERC165-_beforeTokenTransfer}." + }, + "id": 23437, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nameLocation": "1710:20:88", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 23425, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 23423, + "name": "ERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5878, + "src": "1844:6:88" + }, + { + "id": 23424, + "name": "ERC721Enumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6396, + "src": "1852:16:88" + } + ], + "src": "1835:34:88" + }, + "parameters": { + "id": 23422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23415, + "mutability": "mutable", + "name": "from", + "nameLocation": "1744:4:88", + "nodeType": "VariableDeclaration", + "scope": 23437, + "src": "1736:12:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1736:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23417, + "mutability": "mutable", + "name": "to", + "nameLocation": "1762:2:88", + "nodeType": "VariableDeclaration", + "scope": 23437, + "src": "1754:10:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23419, + "mutability": "mutable", + "name": "firstTokenId", + "nameLocation": "1778:12:88", + "nodeType": "VariableDeclaration", + "scope": 23437, + "src": "1770:20:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1770:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23421, + "mutability": "mutable", + "name": "batchSize", + "nameLocation": "1804:9:88", + "nodeType": "VariableDeclaration", + "scope": 23437, + "src": "1796:17:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1796:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1730:87:88" + }, + "returnParameters": { + "id": 23426, + "nodeType": "ParameterList", + "parameters": [], + "src": "1870:0:88" + }, + "scope": 23489, + "src": "1701:241:88", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 5045, + 6092 + ], + "body": { + "id": 23453, + "nodeType": "Block", + "src": "2150:54:88", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 23450, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23440, + "src": "2187:11:88", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 23448, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "2163:5:88", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BEBadgeV2_$23489_$", + "typeString": "type(contract super BEBadgeV2)" + } + }, + "id": 23449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 6092, + "src": "2163:23:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 23451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2163:36:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 23447, + "id": 23452, + "nodeType": "Return", + "src": "2156:43:88" + } + ] + }, + "documentation": { + "id": 23438, + "nodeType": "StructuredDocumentation", + "src": "1948:52:88", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 23454, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2012:17:88", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 23444, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 23442, + "name": "ERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 5878, + "src": "2103:6:88" + }, + { + "id": 23443, + "name": "ERC721Enumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 6396, + "src": "2111:16:88" + } + ], + "src": "2094:34:88" + }, + "parameters": { + "id": 23441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23440, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2042:11:88", + "nodeType": "VariableDeclaration", + "scope": 23454, + "src": "2035:18:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 23439, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2035:6:88", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2029:28:88" + }, + "returnParameters": { + "id": 23447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23446, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 23454, + "src": "2142:4:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23445, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2142:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2141:6:88" + }, + "scope": 23489, + "src": "2003:201:88", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 23475, + "nodeType": "Block", + "src": "2618:83:88", + "statements": [ + { + "expression": { + "id": 23468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 23464, + "name": "minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23325, + "src": "2624:7:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 23466, + "indexExpression": { + "id": 23465, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23457, + "src": "2632:8:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2624:17:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 23467, + "name": "_support", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23459, + "src": "2644:8:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2624:28:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 23469, + "nodeType": "ExpressionStatement", + "src": "2624:28:88" + }, + { + "eventCall": { + "arguments": [ + { + "id": 23471, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23457, + "src": "2677:8:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 23472, + "name": "_support", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23459, + "src": "2687:8:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 23470, + "name": "MinterUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23335, + "src": "2663:13:88", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,bool)" + } + }, + "id": 23473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2663:33:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23474, + "nodeType": "EmitStatement", + "src": "2658:38:88" + } + ] + }, + "documentation": { + "id": 23455, + "nodeType": "StructuredDocumentation", + "src": "2207:330:88", + "text": " @dev Updates the minters mapping to allow or disallow a specific address to mint tokens.\n Only the contract owner can call this function.\n @param _address The address to update the minting permission for.\n @param _support A boolean indicating whether the address should be allowed to mint tokens or not." + }, + "functionSelector": "a9570f13", + "id": 23476, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 23462, + "kind": "modifierInvocation", + "modifierName": { + "id": 23461, + "name": "onlyOwner", + "nodeType": "IdentifierPath", + "referencedDeclaration": 724, + "src": "2608:9:88" + }, + "nodeType": "ModifierInvocation", + "src": "2608:9:88" + } + ], + "name": "updateMinters", + "nameLocation": "2552:13:88", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23457, + "mutability": "mutable", + "name": "_address", + "nameLocation": "2574:8:88", + "nodeType": "VariableDeclaration", + "scope": 23476, + "src": "2566:16:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23456, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2566:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 23459, + "mutability": "mutable", + "name": "_support", + "nameLocation": "2589:8:88", + "nodeType": "VariableDeclaration", + "scope": 23476, + "src": "2584:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23458, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2584:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2565:33:88" + }, + "returnParameters": { + "id": 23463, + "nodeType": "ParameterList", + "parameters": [], + "src": "2618:0:88" + }, + "scope": 23489, + "src": "2543:158:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 23487, + "nodeType": "Block", + "src": "2727:95:88", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 23479, + "name": "minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23325, + "src": "2741:7:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 23482, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 23480, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6870, + "src": "2749:10:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 23481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2749:12:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2741:21:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4164647265737320646f6573206e6f74206861766520746865206d696e746572207065726d697373696f6e", + "id": 23483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2764:45:88", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8", + "typeString": "literal_string \"Address does not have the minter permission\"" + }, + "value": "Address does not have the minter permission" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d554eccca4e20304dcd566c00f6384069a26dde4f92ce194633e5f52b989fe8", + "typeString": "literal_string \"Address does not have the minter permission\"" + } + ], + "id": 23478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2733:7:88", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 23484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2733:77:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 23485, + "nodeType": "ExpressionStatement", + "src": "2733:77:88" + }, + { + "id": 23486, + "nodeType": "PlaceholderStatement", + "src": "2816:1:88" + } + ] + }, + "id": 23488, + "name": "onlyMinter", + "nameLocation": "2714:10:88", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 23477, + "nodeType": "ParameterList", + "parameters": [], + "src": "2724:2:88" + }, + "src": "2705:117:88", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 23490, + "src": "266:2558:88", + "usedErrors": [] + } + ], + "src": "32:2793:88" + }, + "compiler": { + "name": "solc", + "version": "0.8.10+commit.fc410830.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-04-14T06:02:54.107Z", + "devdoc": { + "kind": "dev", + "methods": { + "approve(address,uint256)": { + "details": "See {IERC721-approve}." + }, + "balanceOf(address)": { + "details": "See {IERC721-balanceOf}." + }, + "burn(uint256)": { + "details": "Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator." + }, + "getApproved(uint256)": { + "details": "See {IERC721-getApproved}." + }, + "isApprovedForAll(address,address)": { + "details": "See {IERC721-isApprovedForAll}." + }, + "name()": { + "details": "See {IERC721Metadata-name}." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "ownerOf(uint256)": { + "details": "See {IERC721-ownerOf}." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "safeMint(address)": { + "details": "Safely mints a new token and assigns it to the specified address. Only the account with the minter permission can call this function. tokenId begin with 1. ", + "params": { + "_to": "The address to which the newly minted token will be assigned." + } + }, + "safeTransferFrom(address,address,uint256)": { + "details": "See {IERC721-safeTransferFrom}." + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "See {IERC721-safeTransferFrom}." + }, + "setApprovalForAll(address,bool)": { + "details": "See {IERC721-setApprovalForAll}." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "symbol()": { + "details": "See {IERC721Metadata-symbol}." + }, + "tokenByIndex(uint256)": { + "details": "See {IERC721Enumerable-tokenByIndex}." + }, + "tokenOfOwnerByIndex(address,uint256)": { + "details": "See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "tokenURI(uint256)": { + "details": "See {IERC721Metadata-tokenURI}." + }, + "totalSupply()": { + "details": "See {IERC721Enumerable-totalSupply}." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC721-transferFrom}." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "updateBaseURI(string)": { + "details": "Set token URI" + }, + "updateMinters(address,bool)": { + "details": "Updates the minters mapping to allow or disallow a specific address to mint tokens. Only the contract owner can call this function.", + "params": { + "_address": "The address to update the minting permission for.", + "_support": "A boolean indicating whether the address should be allowed to mint tokens or not." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/config/config_sepolia_test.js b/config/config_sepolia_test.js new file mode 100644 index 0000000..adc8514 --- /dev/null +++ b/config/config_sepolia_test.js @@ -0,0 +1,58 @@ +const market = { + feeToAddress: "0x50A8e60041A206AcaA5F844a1104896224be6F39", + mallFeeAddress: "0x50A8e60041A206AcaA5F844a1104896224be6F39", + paymentTokens: [ + "0x514609B71340E149Cb81A80A953D07A7Fe41bd4F", // USDT + ], +}; + +const admins = { + admin: "0x50A8e60041A206AcaA5F844a1104896224be6F39", + proposers: [ + "0x50A8e60041A206AcaA5F844a1104896224be6F39", + "0x746338765a8FbDD1c5aB61bfb92CD6D960C3C662", + ], + confirmers: ["0x50A8e60041A206AcaA5F844a1104896224be6F39"], + executors: [ + "0x50A8e60041A206AcaA5F844a1104896224be6F39", + "0x746338765a8FbDD1c5aB61bfb92CD6D960C3C662", + "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", + ], +}; + +const token = { + baseTokenURIHero: "https://nft-test.kingsome.cn/hero/meta/13473/", + contractURIHero: 'https://nft-test.kingsome.cn/hero/home_meta/13473', + royaltyReceiver: '0x5Ab03Aa79Ab91B7420b5CFF134a4188388888888', + baseTokenURIGold: "https://nft-test.kingsome.cn/gold_bullion/meta/13473/", + contractURIGold: 'https://nft-test.kingsome.cn/gold_bullion/home_meta/13473', + royaltyFee: 5, +}; + +const imtbl = { + operatorAllowlist: '0x6b969FD89dE634d8DE3271EbE97734FEFfcd58eE', +} +const mint = { + // 2ๆœŸmintๆ”ฏไป˜็š„ไปฃๅธ + mintCurrency: '0xFd42bfb03212dA7e1A4608a44d7658641D99CF34', + // 2ๆœŸmint, ๅ•ไธชnftไปทๆ ผ + mintPrice: '75000000000000000', + // 2ๆœŸmintๆŽฅๆ”ถไปฃๅธ็š„้’ฑๅŒ…ๅœฐๅ€ + mintFeeAddress: '0x50A8e60041A206AcaA5F844a1104896224be6F39', + // 2ๆœŸmint nftid ๅผ€ๅง‹ + mintStartNftId: '6240603010010301', + // 2ๆœŸmint ๆœ€ๅคงๅฏmintๆ•ฐ้‡ + maxSupply: 2000, + // 2ๆœŸmint airdropๆ•ฐ้‡ + airdropCount: 500, +} + +var config = { + market, + admins, + token, + imtbl, + mint +}; + +module.exports = config; diff --git a/contracts/game/NFTLockMain.sol b/contracts/game/NFTLockMain.sol new file mode 100644 index 0000000..1785dcd --- /dev/null +++ b/contracts/game/NFTLockMain.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; +import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; +import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; +import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; +import {HasSignature} from "../core/HasSignature.sol"; +import {TimeChecker} from "../utils/TimeChecker.sol"; + +interface INFT { + function mint(address to, uint256 tokenID) external; + function transferFrom(address from, address to, uint256 tokenId) external; +} + +contract NFTLockMain is ERC721Holder, HasSignature, TimeChecker, Pausable { + using EnumerableSet for EnumerableSet.UintSet; + + uint256 public immutable _CACHED_CHAIN_ID; + address public immutable _CACHED_THIS; + address public verifier; + uint256 public maxBatch = 100; + + struct NFTInfo { + uint256 tokenId; + address to; + bool isMint; + } + mapping(address nft => mapping(uint256 tokenId => address user)) public addressOriginal; + mapping(address nft => mapping(address user => EnumerableSet.UintSet tokenIdSet)) private lockedRecords; + mapping(address nft => bool status) public supportNftList; + + event UnLock(address indexed nft, address indexed user, uint256 nonce, NFTInfo[] nftList); + event Lock(address indexed nft, address indexed sender, address indexed to, uint256[] tokenIds); + event VerifierUpdated(address indexed verifier); + + constructor(uint256 _duration, address _verifier) TimeChecker(_duration) { + _CACHED_CHAIN_ID = block.chainid; + _CACHED_THIS = address(this); + verifier = _verifier; + } + /** + * lock NFT + * from eoa only + * @param nft nft address + * @param to passport address for game + * @param tokenIds nft token id list + */ + function lock(address nft, address to, uint256[] calldata tokenIds) external whenNotPaused{ + require(tokenIds.length <= maxBatch, "tokenIds too many"); + require(to != address(0), "passport can't be zero"); + require(supportNftList[nft], "not support nft"); + address _sender = _msgSender(); + for (uint256 i = 0; i < tokenIds.length; i++) { + addressOriginal[nft][tokenIds[i]] = _sender; + lockedRecords[nft][_sender].add(tokenIds[i]); + INFT(nft).transferFrom(_sender, address(this), tokenIds[i]); + } + emit Lock(nft, _sender, to, tokenIds); + } + /** + * @dev unlock or mint nft + * from passport only + * if tokenId not exists, mint it + * if exists and user is owner, unlock it + */ + function unlockOrMint( + address nft, + NFTInfo[] calldata nftList, + uint256 signTime, + uint256 saltNonce, + bytes calldata signature + ) external signatureValid(signature) timeValid(signTime) { + require(nftList.length <= maxBatch, "tokenIds too many"); + address _sender = _msgSender(); + bytes32 messageHash = getMessageHash(_sender, nft, nftList, _CACHED_THIS, _CACHED_CHAIN_ID, signTime, saltNonce); + checkSigner(verifier, messageHash, signature); + _useSignature(signature); + for (uint256 i = 0; i < nftList.length; i++) { + if (nftList[i].isMint) { + INFT(nft).mint(nftList[i].to, nftList[i].tokenId); + } else { + require(addressOriginal[nft][nftList[i].tokenId] == _sender, "not owner"); + delete addressOriginal[nft][nftList[i].tokenId]; + lockedRecords[nft][_sender].remove(nftList[i].tokenId); + INFT(nft).transferFrom(address(this), nftList[i].to, nftList[i].tokenId); + } + } + emit UnLock(nft, _sender, saltNonce, nftList); + } + + /** + * @dev unlock nft + * from game svr only + */ + function unlockWithSvr(address nft, uint256[] calldata tokenIds) external onlyOwner{ + require(tokenIds.length <= maxBatch, "tokenIds too many"); + for (uint256 i = 0; i < tokenIds.length; i++) { + address _sender = addressOriginal[nft][tokenIds[i]]; + delete addressOriginal[nft][tokenIds[i]]; + lockedRecords[nft][_sender].remove(tokenIds[i]); + INFT(nft).transferFrom(address(this), _sender, tokenIds[i]); + } + } + + /** ------get------- **/ + function lockedNum(address token, address user) public view returns (uint256) { + return lockedRecords[token][user].length(); + } + + function lockedNft(address token, address user) public view returns (uint256[] memory) { + return lockedRecords[token][user].values(); + } + + function updateBatch(uint256 _maxBatch) external onlyOwner { + maxBatch = _maxBatch; + } + + function addSupportNftList(address[] calldata nftList) external onlyOwner { + for (uint256 i = 0; i < nftList.length; i++) { + supportNftList[nftList[i]] = true; + } + } + function removeSupportNft(address nftAddress) external onlyOwner { + require(supportNftList[nftAddress], "can't remove"); + delete supportNftList[nftAddress]; + } + + /** + * @dev update verifier address + */ + function updateVerifier(address _verifier) external onlyOwner { + require(_verifier != address(0), "NFTClaimer: address can not be zero"); + verifier = _verifier; + emit VerifierUpdated(_verifier); + } + + function getMessageHash( + address _to, + address _nft, + NFTInfo[] memory _ids, + address _contract, + uint256 _chainId, + uint256 _signTime, + uint256 _saltNonce + ) public pure returns (bytes32) { + bytes memory encoded = abi.encodePacked(_to, _nft, _contract, _chainId, _signTime, _saltNonce); + for (uint256 i = 0; i < _ids.length; ++i) { + encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].tokenId)); + encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].to)); + encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].isMint)); + } + return keccak256(encoded); + } +} diff --git a/deploy/4_1_deploy_nftlocker_main.ts b/deploy/4_1_deploy_nftlocker_main.ts new file mode 100644 index 0000000..21a01ae --- /dev/null +++ b/deploy/4_1_deploy_nftlocker_main.ts @@ -0,0 +1,29 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { DeployFunction } from "hardhat-deploy/types"; +import { updateArray } from "../scripts/utils" + + +const deployNFTClaim: DeployFunction = + async function (hre: HardhatRuntimeEnvironment) { + const provider = hre.ethers.provider; + const from = await (await provider.getSigner()).getAddress(); + const config = require(`../config/config_${hre.network.name}`); + const verifier = config.admins.admin + const ret = await hre.deployments.deploy("NFTLockMain", { + from, + args: [3600, verifier], + log: true, + }); + console.log("==NFTLock addr=", ret.address); + updateArray({ + name: "NFTLock", + type: "logic", + json: "assets/contracts/NFTLock.json", + address: ret.address, + network: hre.network.name, + }); + }; + + deployNFTClaim.tags = ["NFTLockMain"]; + +export default deployNFTClaim; diff --git a/deployments/sepolia_test/.chainId b/deployments/sepolia_test/.chainId new file mode 100644 index 0000000..bd8d1cd --- /dev/null +++ b/deployments/sepolia_test/.chainId @@ -0,0 +1 @@ +11155111 \ No newline at end of file diff --git a/deployments/sepolia_test/NFTLockMain.json b/deployments/sepolia_test/NFTLockMain.json new file mode 100644 index 0000000..1647c94 --- /dev/null +++ b/deployments/sepolia_test/NFTLockMain.json @@ -0,0 +1,969 @@ +{ + "address": "0x7F2b4DB626d878778e178B4F0C7bA3a2870C6dd0", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_verifier", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "DurationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "isMint", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct NFTLockMain.NFTInfo[]", + "name": "nftList", + "type": "tuple[]" + } + ], + "name": "UnLock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "verifier", + "type": "address" + } + ], + "name": "VerifierUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "_CACHED_CHAIN_ID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_CACHED_THIS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "nftList", + "type": "address[]" + } + ], + "name": "addSupportNftList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "addressOriginal", + "outputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "checkSigner", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "duration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "_nft", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "isMint", + "type": "bool" + } + ], + "internalType": "struct NFTLockMain.NFTInfo[]", + "name": "_ids", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_contract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_chainId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_signTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_saltNonce", + "type": "uint256" + } + ], + "name": "getMessageHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "lockedNft", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "lockedNum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxBatch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nftAddress", + "type": "address" + } + ], + "name": "removeSupportNft", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nft", + "type": "address" + } + ], + "name": "supportNftList", + "outputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "isMint", + "type": "bool" + } + ], + "internalType": "struct NFTLockMain.NFTInfo[]", + "name": "nftList", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "signTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "saltNonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "unlockOrMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "unlockWithSvr", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxBatch", + "type": "uint256" + } + ], + "name": "updateBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "valNew", + "type": "uint256" + } + ], + "name": "updateDuation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_verifier", + "type": "address" + } + ], + "name": "updateVerifier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "verifier", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0xd6a7ff17e466c791f91ebdc90aac6c80117efba43f8c8ff6a50f8bd15b6f9eb4", + "receipt": { + "to": null, + "from": "0x50A8e60041A206AcaA5F844a1104896224be6F39", + "contractAddress": "0x7F2b4DB626d878778e178B4F0C7bA3a2870C6dd0", + "transactionIndex": 32, + "gasUsed": "1631036", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000080000000000020000000000000000000000000000000000000020000000000000000001000000000", + "blockHash": "0x35f8bb5fbcd66da4f281c348f2a6bd71eb216a332b7f25b22df0465f60df5f49", + "transactionHash": "0xd6a7ff17e466c791f91ebdc90aac6c80117efba43f8c8ff6a50f8bd15b6f9eb4", + "logs": [ + { + "transactionIndex": 32, + "blockNumber": 6326016, + "transactionHash": "0xd6a7ff17e466c791f91ebdc90aac6c80117efba43f8c8ff6a50f8bd15b6f9eb4", + "address": "0x7F2b4DB626d878778e178B4F0C7bA3a2870C6dd0", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000050a8e60041a206acaa5f844a1104896224be6f39" + ], + "data": "0x", + "logIndex": 38, + "blockHash": "0x35f8bb5fbcd66da4f281c348f2a6bd71eb216a332b7f25b22df0465f60df5f49" + } + ], + "blockNumber": 6326016, + "cumulativeGasUsed": "5353848", + "status": 1, + "byzantium": true + }, + "args": [ + 3600, + "0x50A8e60041A206AcaA5F844a1104896224be6F39" + ], + "numDeployments": 1, + "solcInputHash": "8a2f4516b8e4e7985ccc7dc9c84d3cd1", + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_verifier\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"DurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isMint\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct NFTLockMain.NFTInfo[]\",\"name\":\"nftList\",\"type\":\"tuple[]\"}],\"name\":\"UnLock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"VerifierUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_CACHED_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_CACHED_THIS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"nftList\",\"type\":\"address[]\"}],\"name\":\"addSupportNftList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"addressOriginal\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"checkSigner\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"duration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nft\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isMint\",\"type\":\"bool\"}],\"internalType\":\"struct NFTLockMain.NFTInfo[]\",\"name\":\"_ids\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_signTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saltNonce\",\"type\":\"uint256\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"lockedNft\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"lockedNum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftAddress\",\"type\":\"address\"}],\"name\":\"removeSupportNft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"}],\"name\":\"supportNftList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isMint\",\"type\":\"bool\"}],\"internalType\":\"struct NFTLockMain.NFTInfo[]\",\"name\":\"nftList\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"signTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"unlockOrMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"unlockWithSvr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxBatch\",\"type\":\"uint256\"}],\"name\":\"updateBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"valNew\",\"type\":\"uint256\"}],\"name\":\"updateDuation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"lock(address,address,uint256[])\":{\"params\":{\"nft\":\"nft address\",\"to\":\"passport address for game\",\"tokenIds\":\"nft token id list\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlockOrMint(address,(uint256,address,bool)[],uint256,uint256,bytes)\":{\"details\":\"unlock or mint nft from passport only if tokenId not exists, mint it if exists and user is owner, unlock it\"},\"unlockWithSvr(address,uint256[])\":{\"details\":\"unlock nft from game svr only\"},\"updateDuation(uint256)\":{\"details\":\"Change duration value\"},\"updateVerifier(address)\":{\"details\":\"update verifier address\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"lock(address,address,uint256[])\":{\"notice\":\"lock NFT from eoa only\"},\"lockedNum(address,address)\":{\"notice\":\"------get------- *\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/game/NFTLockMain.sol\":\"NFTLockMain\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/security/Pausable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract Pausable is Context {\\n /**\\n * @dev Emitted when the pause is triggered by `account`.\\n */\\n event Paused(address account);\\n\\n /**\\n * @dev Emitted when the pause is lifted by `account`.\\n */\\n event Unpaused(address account);\\n\\n bool private _paused;\\n\\n /**\\n * @dev Initializes the contract in unpaused state.\\n */\\n constructor() {\\n _paused = false;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is not paused.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n modifier whenNotPaused() {\\n _requireNotPaused();\\n _;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is paused.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n modifier whenPaused() {\\n _requirePaused();\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the contract is paused, and false otherwise.\\n */\\n function paused() public view virtual returns (bool) {\\n return _paused;\\n }\\n\\n /**\\n * @dev Throws if the contract is paused.\\n */\\n function _requireNotPaused() internal view virtual {\\n require(!paused(), \\\"Pausable: paused\\\");\\n }\\n\\n /**\\n * @dev Throws if the contract is not paused.\\n */\\n function _requirePaused() internal view virtual {\\n require(paused(), \\\"Pausable: not paused\\\");\\n }\\n\\n /**\\n * @dev Triggers stopped state.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n function _pause() internal virtual whenNotPaused {\\n _paused = true;\\n emit Paused(_msgSender());\\n }\\n\\n /**\\n * @dev Returns to normal state.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n function _unpause() internal virtual whenPaused {\\n _paused = false;\\n emit Unpaused(_msgSender());\\n }\\n}\\n\",\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/utils/ERC721Holder.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Receiver.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC721Receiver} interface.\\n *\\n * Accepts all token transfers.\\n * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}.\\n */\\ncontract ERC721Holder is IERC721Receiver {\\n /**\\n * @dev See {IERC721Receiver-onERC721Received}.\\n *\\n * Always returns `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) {\\n return this.onERC721Received.selector;\\n }\\n}\\n\",\"keccak256\":\"0x67ef46fef257faae47adb630aad49694dda0334e5f7a7c5fb386243b974886b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"contracts/core/HasSignature.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.19;\\nimport {ECDSA} from \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract HasSignature is Ownable {\\n mapping(bytes signature => bool status) private _usedSignatures;\\n\\n function checkSigner(\\n address signer,\\n bytes32 hash,\\n bytes memory signature\\n ) public pure {\\n bytes32 ethSignedMessageHash = ECDSA.toEthSignedMessageHash(hash);\\n\\n address recovered = ECDSA.recover(ethSignedMessageHash, signature);\\n require(recovered == signer, \\\"invalid signature\\\");\\n }\\n\\n modifier signatureValid(bytes calldata signature) {\\n require(\\n !_usedSignatures[signature],\\n \\\"signature used. please send another transaction with new signature\\\"\\n );\\n _;\\n }\\n\\n function _useSignature(bytes calldata signature) internal {\\n if (!_usedSignatures[signature]) {\\n _usedSignatures[signature] = true;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x1999478f082b3dac416b579ea9385736e3015aa27ac7173c67555e21426ede51\",\"license\":\"MIT\"},\"contracts/game/NFTLockMain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.19;\\nimport {ERC721Holder} from \\\"@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol\\\";\\nimport {EnumerableSet} from \\\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\\\";\\nimport {Pausable} from \\\"@openzeppelin/contracts/security/Pausable.sol\\\";\\nimport {HasSignature} from \\\"../core/HasSignature.sol\\\";\\nimport {TimeChecker} from \\\"../utils/TimeChecker.sol\\\";\\n\\ninterface INFT {\\n function mint(address to, uint256 tokenID) external;\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n}\\n\\ncontract NFTLockMain is ERC721Holder, HasSignature, TimeChecker, Pausable {\\n using EnumerableSet for EnumerableSet.UintSet;\\n\\n uint256 public immutable _CACHED_CHAIN_ID;\\n address public immutable _CACHED_THIS;\\n address public verifier;\\n uint256 public maxBatch = 100;\\n\\n struct NFTInfo {\\n uint256 tokenId;\\n address to;\\n bool isMint;\\n }\\n mapping(address nft => mapping(uint256 tokenId => address user)) public addressOriginal;\\n mapping(address nft => mapping(address user => EnumerableSet.UintSet tokenIdSet)) private lockedRecords;\\n mapping(address nft => bool status) public supportNftList;\\n\\n event UnLock(address indexed nft, address indexed user, uint256 nonce, NFTInfo[] nftList);\\n event Lock(address indexed nft, address indexed sender, address indexed to, uint256[] tokenIds);\\n event VerifierUpdated(address indexed verifier);\\n\\n constructor(uint256 _duration, address _verifier) TimeChecker(_duration) {\\n _CACHED_CHAIN_ID = block.chainid;\\n _CACHED_THIS = address(this);\\n verifier = _verifier;\\n }\\n /**\\n * lock NFT\\n * from eoa only\\n * @param nft nft address\\n * @param to passport address for game\\n * @param tokenIds nft token id list\\n */\\n function lock(address nft, address to, uint256[] calldata tokenIds) external whenNotPaused{\\n require(tokenIds.length <= maxBatch, \\\"tokenIds too many\\\");\\n require(to != address(0), \\\"passport can't be zero\\\");\\n require(supportNftList[nft], \\\"not support nft\\\");\\n address _sender = _msgSender();\\n for (uint256 i = 0; i < tokenIds.length; i++) {\\n addressOriginal[nft][tokenIds[i]] = _sender;\\n lockedRecords[nft][_sender].add(tokenIds[i]);\\n INFT(nft).transferFrom(_sender, address(this), tokenIds[i]);\\n }\\n emit Lock(nft, _sender, to, tokenIds);\\n }\\n /**\\n * @dev unlock or mint nft\\n * from passport only\\n * if tokenId not exists, mint it\\n * if exists and user is owner, unlock it\\n */\\n function unlockOrMint(\\n address nft,\\n NFTInfo[] calldata nftList,\\n uint256 signTime,\\n uint256 saltNonce,\\n bytes calldata signature\\n ) external signatureValid(signature) timeValid(signTime) {\\n require(nftList.length <= maxBatch, \\\"tokenIds too many\\\");\\n address _sender = _msgSender();\\n bytes32 messageHash = getMessageHash(_sender, nft, nftList, _CACHED_THIS, _CACHED_CHAIN_ID, signTime, saltNonce);\\n checkSigner(verifier, messageHash, signature);\\n _useSignature(signature);\\n for (uint256 i = 0; i < nftList.length; i++) {\\n if (nftList[i].isMint) {\\n INFT(nft).mint(nftList[i].to, nftList[i].tokenId);\\n } else {\\n require(addressOriginal[nft][nftList[i].tokenId] == _sender, \\\"not owner\\\");\\n delete addressOriginal[nft][nftList[i].tokenId];\\n lockedRecords[nft][_sender].remove(nftList[i].tokenId);\\n INFT(nft).transferFrom(address(this), nftList[i].to, nftList[i].tokenId);\\n }\\n }\\n emit UnLock(nft, _sender, saltNonce, nftList);\\n }\\n\\n /**\\n * @dev unlock nft\\n * from game svr only\\n */\\n function unlockWithSvr(address nft, uint256[] calldata tokenIds) external onlyOwner{\\n require(tokenIds.length <= maxBatch, \\\"tokenIds too many\\\");\\n for (uint256 i = 0; i < tokenIds.length; i++) {\\n address _sender = addressOriginal[nft][tokenIds[i]];\\n delete addressOriginal[nft][tokenIds[i]];\\n lockedRecords[nft][_sender].remove(tokenIds[i]);\\n INFT(nft).transferFrom(address(this), _sender, tokenIds[i]);\\n }\\n }\\n\\n /** ------get------- **/\\n function lockedNum(address token, address user) public view returns (uint256) {\\n return lockedRecords[token][user].length();\\n }\\n\\n function lockedNft(address token, address user) public view returns (uint256[] memory) {\\n return lockedRecords[token][user].values();\\n }\\n\\n function updateBatch(uint256 _maxBatch) external onlyOwner {\\n maxBatch = _maxBatch;\\n }\\n\\n function addSupportNftList(address[] calldata nftList) external onlyOwner {\\n for (uint256 i = 0; i < nftList.length; i++) {\\n supportNftList[nftList[i]] = true;\\n }\\n }\\n function removeSupportNft(address nftAddress) external onlyOwner {\\n require(supportNftList[nftAddress], \\\"can't remove\\\");\\n delete supportNftList[nftAddress];\\n }\\n\\n /**\\n * @dev update verifier address\\n */\\n function updateVerifier(address _verifier) external onlyOwner {\\n require(_verifier != address(0), \\\"NFTClaimer: address can not be zero\\\");\\n verifier = _verifier;\\n emit VerifierUpdated(_verifier);\\n }\\n\\n function getMessageHash(\\n address _to,\\n address _nft,\\n NFTInfo[] memory _ids,\\n address _contract,\\n uint256 _chainId,\\n uint256 _signTime,\\n uint256 _saltNonce\\n ) public pure returns (bytes32) {\\n bytes memory encoded = abi.encodePacked(_to, _nft, _contract, _chainId, _signTime, _saltNonce);\\n for (uint256 i = 0; i < _ids.length; ++i) {\\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].tokenId));\\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].to));\\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].isMint));\\n }\\n return keccak256(encoded);\\n }\\n}\\n\",\"keccak256\":\"0xa3cb8a663d7557444f5f5ea9de6c8b6994ebb421903a0c77ea55dc4118835568\",\"license\":\"MIT\"},\"contracts/utils/TimeChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.19;\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract TimeChecker is Ownable {\\n uint256 public duration;\\n uint256 public minDuration;\\n\\n event DurationUpdated(uint256 indexed duration);\\n\\n constructor(uint256 _duration) {\\n duration = _duration;\\n minDuration = 30 minutes;\\n }\\n\\n /**\\n * @dev Check if the time is valid\\n */\\n modifier timeValid(uint256 time) {\\n require(\\n time + duration >= block.timestamp,\\n \\\"expired, please send another transaction with new signature\\\"\\n );\\n _;\\n }\\n\\n\\n /**\\n * @dev Change duration value\\n */\\n function updateDuation(uint256 valNew) external onlyOwner {\\n require(valNew > minDuration, \\\"duration too short\\\");\\n duration = valNew;\\n emit DurationUpdated(valNew);\\n }\\n}\\n\",\"keccak256\":\"0xeb1278f24da69d97bd3d0da549e0673fdfa0b319bf4ba2ed6b24fefa870f3af9\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60c0346100fb57601f611b8438819003918201601f19168301916001600160401b038311848410176101005780849260409485528339810103126100fb5780516020909101516001600160a01b039182821682036100fb576000543360018060a01b0319821617600055604051933391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600255610708600355600480546064600555466080523060a0526001600160a81b03191660089290921b610100600160a81b0316919091179055611a6d9081610117823960805181818161097f0152610f8d015260a05181818161021001526109a10152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9081630fb5a6b414611190575080631275029214611152578063150b7a02146110fd578063230fb7fe14610fb05780632b437d4814610f755780632b7ac3f314610f4a57806338e2c2eb14610f285780635671576114610f095780635c975abb14610ee65780635fb110ca14610e5f57806367765b8714610e405780636d04319414610df3578063715018a614610d9957806376bd0cfd14610886578063799048fa146107fd5780637f9d3096146107715780638da5cb5b1461074957806397fc007c14610680578063a063472414610637578063bdfe78c9146105f3578063c419028f14610395578063ce3d1b2d14610308578063d13344c914610243578063da28b527146101fb5763f2fde38b1461013657600080fd5b346101f75760203660031901126101f75761014f6111ac565b906101586113ac565b6001600160a01b039182169283156101a557505082546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50503461023f578160031936011261023f57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b8284346103055781600319360112610305579061025e6111ac565b916102676111c7565b6001600160a01b039384168252600760209081528383209190941682528352818120825181548082529183528483208186019392849190845b8181106102f157505050816102b6910382611235565b83519485948186019282875251809352850193925b8281106102da57505050500390f35b8351855286955093810193928101926001016102cb565b8254845292880192600192830192016102a0565b80fd5b50346101f75760e03660031901126101f7576103226111ac565b61032a6111c7565b91604435906001600160401b03821161039157366023830112156103915781602461035a933693013591016112f7565b93606435906001600160a01b03821682036103055750916020949161038a9360c4359360a4359360843593611926565b9051908152f35b8580fd5b50346101f75760603660031901126101f7576103af6111ac565b916103b86111c7565b916044356001600160401b038111610391576103d790369083016112ba565b91909360ff8254166105bd576103f1600554841115611674565b6001600160a01b039081169586156105815716928387526020916008835260ff82892054161561054e57875b84811061047a57505080518281529182018390526001600160fb1b038311610476577f356278d4d01db4ac9a53decc4eeeceecfb494d3bd0c463b305d33e65305e2bf29260051b8095828401378133958101030190a480f35b8680fd5b8589526006845282892061048f82878a6116d9565b358a528452828920336bffffffffffffffffffffffff60a01b82541617905585895260078452828920338a5284526104d5838a206104ce83888b6116d9565b3590611717565b506104e18186896116d9565b3589873b156103055784516323b872dd60e01b815233858201908152306020820152604081019390935291829081906060010381838b5af1801561054457906105309291610535575b506116b4565b61041d565b61053e906111f1565b3861052a565b84513d8c823e3d90fd5b82606492519162461bcd60e51b8352820152600f60248201526e1b9bdd081cdd5c1c1bdc9d081b999d608a1b6044820152fd5b845162461bcd60e51b8152602081850152601660248201527570617373706f72742063616e2774206265207a65726f60501b6044820152606490fd5b835162461bcd60e51b8152602081840152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b50503461023f578060031936011261023f576020916001600160a01b039082908261061c6111ac565b16815260068552818120602435825285522054169051908152f35b50503461023f578060031936011261023f57806020926106556111ac565b61065d6111c7565b6001600160a01b0391821683526007865283832091168252845220549051908152f35b50346101f75760203660031901126101f75761069a6111ac565b6106a26113ac565b6001600160a01b0381169283156106fb57508154610100600160a81b03191660089190911b610100600160a81b03161790557fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278280a280f35b5162461bcd60e51b8152602081840152602360248201527f4e4654436c61696d65723a20616464726573732063616e206e6f74206265207a60448201526265726f60e81b6064820152608490fd5b50503461023f578160031936011261023f57905490516001600160a01b039091168152602090f35b50346101f75760203660031901126101f75780359161078e6113ac565b6003548311156107c5575050806002557f91abcc2d6823e3a3f11d31b208dd3065d2c6a791f1c7c9fe96a42ce12897eac58280a280f35b906020606492519162461bcd60e51b83528201526012602482015271191d5c985d1a5bdb881d1bdbc81cda1bdc9d60721b6044820152fd5b50346101f75760203660031901126101f7576108176111ac565b61081f6113ac565b6001600160a01b031680845260086020528284205490919060ff16156108545750825260086020528120805460ff1916905580f35b606490602084519162461bcd60e51b8352820152600c60248201526b63616e27742072656d6f766560a01b6044820152fd5b50346101f75760a03660031901126101f7576108a06111ac565b9160248035926001600160401b03938481116104765736602382011215610476578082013590858211610d955783810195606091853691848602010111610d915760449586359460649081359860843598858a11610d8d573660238b011215610d8d5789830135958611610d8d57808a019981873692010111610d8d57845195808b88378087019960ff8860019c8d815260209a8b91030190205416610d1c576002548101808211610d08574211610ca257908f9392918f8f8f90926109c79261097c8f958e96610975600554821115611674565b36916112f7565b907f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009133611926565b9c6109ec60018060a01b039e8f895460081c16906109e6368786611256565b91611404565b60ff8d838b5180928786833787820190815203019020541615610c7f575b505050829998979695995b8d898210610ab057505050505050508285519786890190895286838a01525281870197948a915b848310610a71578b33898d167f9a5ba7d70cc7e1cd613eb99e6ed8ea301d889773c9d4517218560eee5153803e8c8e038da380f35b90919293948480889b610a9b868b869c3584528d610a908983016111dd565b1688850152016112ea565b151581870152019a0196959493019190610a3c565b9a610ac1828b839a9b9c9d9e6117a1565b01358015158103610c7b578f8f91908e91600014610b505716610afa838d610af48d610aee8484896117a1565b016117b1565b946117a1565b3591813b1561047657858f918880948d5196879586946340c10f1960e01b8652168d850152898401525af18015610b465790610b3b929161053557506116b4565b999897969599610a15565b88513d87823e3d90fd5b959192939495169182825260068a52610b6d848d8b8520936117a1565b35825289528c88339220541603610c4f57908f9392918e81865260068a528b610b9a848b892092846117a1565b3587528a5288862080546001600160a01b031916905581865260078a528886203387528a52888620610bd890610bd1858f856117a1565b35906117c5565b50610bf3838d610bed8d610aee8484886117a1565b936117a1565b35823b156104765789516323b872dd60e01b815230818a019081526001600160a01b039093166020840152604083019190915291869183919082908490829060600103925af18015610b465790610b3b929161053557506116b4565b5050845162461bcd60e51b8152928301869052600990830152683737ba1037bbb732b960b91b90820152fd5b8480fd5b828951938492833781018d815203019020805460ff19168b179055388781610a0a565b865162461bcd60e51b8152808601899052603b818501527f657870697265642c20706c656173652073656e6420616e6f7468657220747261818601527f6e73616374696f6e2077697468206e6577207369676e6174757265000000000081880152608490fd5b5050634e487b7160e01b8f5250601183528dfd5b865162461bcd60e51b81528086018990526042818501527f7369676e617475726520757365642e20706c656173652073656e6420616e6f74818601527f686572207472616e73616374696f6e2077697468206e6577207369676e6174758188015261726560f01b608482015260a490fd5b8d80fd5b8880fd5b8780fd5b8334610305578060031936011261030557610db26113ac565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461023f57606036600319011261023f57610e0e6111ac565b6044356001600160401b038111610e3c57610e3992610e2f9136910161129c565b9060243590611404565b80f35b8380fd5b50503461023f578160031936011261023f576020906005549051908152f35b5090346101f75760209182600319360112610e3c578035906001600160401b038211610c7b57610e91913691016112ba565b9290610e9b6113ac565b845b848110610ea8578580f35b610ee1906001600160a01b03610ec7610ec28389876116d9565b6117b1565b16875260088452848720805460ff191660011790556116b4565b610e9d565b5091346103055780600319360112610305575060ff602092541690519015158152f35b50503461023f578160031936011261023f576020906003549051908152f35b83823461023f57602036600319011261023f57610f436113ac565b3560055580f35b50346101f757826003193601126101f75754905160089190911c6001600160a01b0316815260209150f35b50503461023f578160031936011261023f57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346101f757816003193601126101f757610fc96111ac565b91836024356001600160401b03811161023f57610fe990369085016112ba565b610ff49591956113ac565b611002600554821115611674565b6001600160a01b0391821690835b81811061101b578480f35b8285526006602081815287872061103384868d6116d9565b358852815285888820541691858852815287872061105284868d6116d9565b358852815287872080546001600160a01b031916905584875260078152878720828852905286862061108990610bd184868d6116d9565b5061109582848b6116d9565b3590843b156104765787516323b872dd60e01b8152308a82019081526001600160a01b0390921660208301526040820192909252869082908190606001038183885af180156110f357906110ee929161053557506116b4565b611010565b87513d88823e3d90fd5b509134610305576080366003190112610305576111186111ac565b506111216111c7565b50606435906001600160401b03821161030557506020926111449136910161129c565b5051630a85bd0160e11b8152f35b50503461023f57602036600319011261023f5760209160ff9082906001600160a01b0361117d6111ac565b1681526008855220541690519015158152f35b84903461023f578160031936011261023f576020906002548152f35b600435906001600160a01b03821682036111c257565b600080fd5b602435906001600160a01b03821682036111c257565b35906001600160a01b03821682036111c257565b6001600160401b03811161120457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761120457604052565b90601f801991011681019081106001600160401b0382111761120457604052565b9291926001600160401b038211611204576040519161127f601f8201601f191660200184611235565b8294818452818301116111c2578281602093846000960137010152565b9080601f830112156111c2578160206112b793359101611256565b90565b9181601f840112156111c2578235916001600160401b0383116111c2576020808501948460051b0101116111c257565b359081151582036111c257565b6001600160401b03939284831161120457604090815195602092611320848760051b0189611235565b8388878152019260608097028601958187116111c257935b868510611349575050505050505050565b87858303126111c257825190888201908282108683111761139757899288928652873581526113798389016111dd565b838201526113888689016112ea565b86820152815201940193611338565b60246000634e487b7160e01b81526041600452fd5b6000546001600160a01b031633036113c057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906114469261143e917f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000206115ad565b929092611493565b6001600160a01b0390811691160361145a57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b600581101561159757806114a45750565b600181036114f15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b6002810361153e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461154757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9060418151146000146115db576115d7916020820151906060604084015193015160001a906115e5565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116116685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561165b5781516001600160a01b03811615611655579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b1561167b57565b60405162461bcd60e51b8152602060048201526011602482015270746f6b656e49647320746f6f206d616e7960781b6044820152606490fd5b60001981146116c35760010190565b634e487b7160e01b600052601160045260246000fd5b91908110156116e95760051b0190565b634e487b7160e01b600052603260045260246000fd5b80548210156116e95760005260206000200190600090565b9190600183016000908282528060205260408220541560001461179b57845494680100000000000000008610156117875783611777611760886001604098999a018555846116ff565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b91908110156116e9576060020190565b356001600160a01b03811681036111c25790565b906001820190600092818452826020526040842054908115156000146118ae576000199180830181811161189a5782549084820191821161188657808203611851575b5050508054801561183d5782019161182083836116ff565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61187161186161176093866116ff565b90549060031b1c928392866116ff565b90558652846020526040862055388080611808565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b80518210156116e95760209160051b010190565b9081519160005b8381106118e1575050016000815290565b80602080928401015181850152016118d0565b61192490611916611910949360405195869360208501906118c9565b906118c9565b03601f198101845283611235565b565b939092919496956040978851926bffffffffffffffffffffffff198095816060988160209b8b1b168b890152891b166034870152871b166048850152605c840152607c830152609c820152609c815260c081018181106001600160401b038211176112045787526000905b8551821015611a2757611a1b6119f36119cc611a21936119b1868b6118b5565b5151908c51918a8301528982526119c78261121a565b6118f4565b876119d7868b6118b5565b51015190868c5192891b1689830152601482526119c78261121a565b896119fe858a6118b5565b5101511515908a519160f81b88830152600182526119c78261121a565b916116b4565b90611991565b959650505050905081519101209056fea2646970667358221220f898f247cb28c15c0bdc399c4cb841b44e53fb166f1118be8c97cef25317ad5164736f6c63430008130033", + "deployedBytecode": "0x6080604081815260048036101561001557600080fd5b600092833560e01c9081630fb5a6b414611190575080631275029214611152578063150b7a02146110fd578063230fb7fe14610fb05780632b437d4814610f755780632b7ac3f314610f4a57806338e2c2eb14610f285780635671576114610f095780635c975abb14610ee65780635fb110ca14610e5f57806367765b8714610e405780636d04319414610df3578063715018a614610d9957806376bd0cfd14610886578063799048fa146107fd5780637f9d3096146107715780638da5cb5b1461074957806397fc007c14610680578063a063472414610637578063bdfe78c9146105f3578063c419028f14610395578063ce3d1b2d14610308578063d13344c914610243578063da28b527146101fb5763f2fde38b1461013657600080fd5b346101f75760203660031901126101f75761014f6111ac565b906101586113ac565b6001600160a01b039182169283156101a557505082546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50503461023f578160031936011261023f57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b8284346103055781600319360112610305579061025e6111ac565b916102676111c7565b6001600160a01b039384168252600760209081528383209190941682528352818120825181548082529183528483208186019392849190845b8181106102f157505050816102b6910382611235565b83519485948186019282875251809352850193925b8281106102da57505050500390f35b8351855286955093810193928101926001016102cb565b8254845292880192600192830192016102a0565b80fd5b50346101f75760e03660031901126101f7576103226111ac565b61032a6111c7565b91604435906001600160401b03821161039157366023830112156103915781602461035a933693013591016112f7565b93606435906001600160a01b03821682036103055750916020949161038a9360c4359360a4359360843593611926565b9051908152f35b8580fd5b50346101f75760603660031901126101f7576103af6111ac565b916103b86111c7565b916044356001600160401b038111610391576103d790369083016112ba565b91909360ff8254166105bd576103f1600554841115611674565b6001600160a01b039081169586156105815716928387526020916008835260ff82892054161561054e57875b84811061047a57505080518281529182018390526001600160fb1b038311610476577f356278d4d01db4ac9a53decc4eeeceecfb494d3bd0c463b305d33e65305e2bf29260051b8095828401378133958101030190a480f35b8680fd5b8589526006845282892061048f82878a6116d9565b358a528452828920336bffffffffffffffffffffffff60a01b82541617905585895260078452828920338a5284526104d5838a206104ce83888b6116d9565b3590611717565b506104e18186896116d9565b3589873b156103055784516323b872dd60e01b815233858201908152306020820152604081019390935291829081906060010381838b5af1801561054457906105309291610535575b506116b4565b61041d565b61053e906111f1565b3861052a565b84513d8c823e3d90fd5b82606492519162461bcd60e51b8352820152600f60248201526e1b9bdd081cdd5c1c1bdc9d081b999d608a1b6044820152fd5b845162461bcd60e51b8152602081850152601660248201527570617373706f72742063616e2774206265207a65726f60501b6044820152606490fd5b835162461bcd60e51b8152602081840152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b50503461023f578060031936011261023f576020916001600160a01b039082908261061c6111ac565b16815260068552818120602435825285522054169051908152f35b50503461023f578060031936011261023f57806020926106556111ac565b61065d6111c7565b6001600160a01b0391821683526007865283832091168252845220549051908152f35b50346101f75760203660031901126101f75761069a6111ac565b6106a26113ac565b6001600160a01b0381169283156106fb57508154610100600160a81b03191660089190911b610100600160a81b03161790557fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278280a280f35b5162461bcd60e51b8152602081840152602360248201527f4e4654436c61696d65723a20616464726573732063616e206e6f74206265207a60448201526265726f60e81b6064820152608490fd5b50503461023f578160031936011261023f57905490516001600160a01b039091168152602090f35b50346101f75760203660031901126101f75780359161078e6113ac565b6003548311156107c5575050806002557f91abcc2d6823e3a3f11d31b208dd3065d2c6a791f1c7c9fe96a42ce12897eac58280a280f35b906020606492519162461bcd60e51b83528201526012602482015271191d5c985d1a5bdb881d1bdbc81cda1bdc9d60721b6044820152fd5b50346101f75760203660031901126101f7576108176111ac565b61081f6113ac565b6001600160a01b031680845260086020528284205490919060ff16156108545750825260086020528120805460ff1916905580f35b606490602084519162461bcd60e51b8352820152600c60248201526b63616e27742072656d6f766560a01b6044820152fd5b50346101f75760a03660031901126101f7576108a06111ac565b9160248035926001600160401b03938481116104765736602382011215610476578082013590858211610d955783810195606091853691848602010111610d915760449586359460649081359860843598858a11610d8d573660238b011215610d8d5789830135958611610d8d57808a019981873692010111610d8d57845195808b88378087019960ff8860019c8d815260209a8b91030190205416610d1c576002548101808211610d08574211610ca257908f9392918f8f8f90926109c79261097c8f958e96610975600554821115611674565b36916112f7565b907f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009133611926565b9c6109ec60018060a01b039e8f895460081c16906109e6368786611256565b91611404565b60ff8d838b5180928786833787820190815203019020541615610c7f575b505050829998979695995b8d898210610ab057505050505050508285519786890190895286838a01525281870197948a915b848310610a71578b33898d167f9a5ba7d70cc7e1cd613eb99e6ed8ea301d889773c9d4517218560eee5153803e8c8e038da380f35b90919293948480889b610a9b868b869c3584528d610a908983016111dd565b1688850152016112ea565b151581870152019a0196959493019190610a3c565b9a610ac1828b839a9b9c9d9e6117a1565b01358015158103610c7b578f8f91908e91600014610b505716610afa838d610af48d610aee8484896117a1565b016117b1565b946117a1565b3591813b1561047657858f918880948d5196879586946340c10f1960e01b8652168d850152898401525af18015610b465790610b3b929161053557506116b4565b999897969599610a15565b88513d87823e3d90fd5b959192939495169182825260068a52610b6d848d8b8520936117a1565b35825289528c88339220541603610c4f57908f9392918e81865260068a528b610b9a848b892092846117a1565b3587528a5288862080546001600160a01b031916905581865260078a528886203387528a52888620610bd890610bd1858f856117a1565b35906117c5565b50610bf3838d610bed8d610aee8484886117a1565b936117a1565b35823b156104765789516323b872dd60e01b815230818a019081526001600160a01b039093166020840152604083019190915291869183919082908490829060600103925af18015610b465790610b3b929161053557506116b4565b5050845162461bcd60e51b8152928301869052600990830152683737ba1037bbb732b960b91b90820152fd5b8480fd5b828951938492833781018d815203019020805460ff19168b179055388781610a0a565b865162461bcd60e51b8152808601899052603b818501527f657870697265642c20706c656173652073656e6420616e6f7468657220747261818601527f6e73616374696f6e2077697468206e6577207369676e6174757265000000000081880152608490fd5b5050634e487b7160e01b8f5250601183528dfd5b865162461bcd60e51b81528086018990526042818501527f7369676e617475726520757365642e20706c656173652073656e6420616e6f74818601527f686572207472616e73616374696f6e2077697468206e6577207369676e6174758188015261726560f01b608482015260a490fd5b8d80fd5b8880fd5b8780fd5b8334610305578060031936011261030557610db26113ac565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461023f57606036600319011261023f57610e0e6111ac565b6044356001600160401b038111610e3c57610e3992610e2f9136910161129c565b9060243590611404565b80f35b8380fd5b50503461023f578160031936011261023f576020906005549051908152f35b5090346101f75760209182600319360112610e3c578035906001600160401b038211610c7b57610e91913691016112ba565b9290610e9b6113ac565b845b848110610ea8578580f35b610ee1906001600160a01b03610ec7610ec28389876116d9565b6117b1565b16875260088452848720805460ff191660011790556116b4565b610e9d565b5091346103055780600319360112610305575060ff602092541690519015158152f35b50503461023f578160031936011261023f576020906003549051908152f35b83823461023f57602036600319011261023f57610f436113ac565b3560055580f35b50346101f757826003193601126101f75754905160089190911c6001600160a01b0316815260209150f35b50503461023f578160031936011261023f57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346101f757816003193601126101f757610fc96111ac565b91836024356001600160401b03811161023f57610fe990369085016112ba565b610ff49591956113ac565b611002600554821115611674565b6001600160a01b0391821690835b81811061101b578480f35b8285526006602081815287872061103384868d6116d9565b358852815285888820541691858852815287872061105284868d6116d9565b358852815287872080546001600160a01b031916905584875260078152878720828852905286862061108990610bd184868d6116d9565b5061109582848b6116d9565b3590843b156104765787516323b872dd60e01b8152308a82019081526001600160a01b0390921660208301526040820192909252869082908190606001038183885af180156110f357906110ee929161053557506116b4565b611010565b87513d88823e3d90fd5b509134610305576080366003190112610305576111186111ac565b506111216111c7565b50606435906001600160401b03821161030557506020926111449136910161129c565b5051630a85bd0160e11b8152f35b50503461023f57602036600319011261023f5760209160ff9082906001600160a01b0361117d6111ac565b1681526008855220541690519015158152f35b84903461023f578160031936011261023f576020906002548152f35b600435906001600160a01b03821682036111c257565b600080fd5b602435906001600160a01b03821682036111c257565b35906001600160a01b03821682036111c257565b6001600160401b03811161120457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761120457604052565b90601f801991011681019081106001600160401b0382111761120457604052565b9291926001600160401b038211611204576040519161127f601f8201601f191660200184611235565b8294818452818301116111c2578281602093846000960137010152565b9080601f830112156111c2578160206112b793359101611256565b90565b9181601f840112156111c2578235916001600160401b0383116111c2576020808501948460051b0101116111c257565b359081151582036111c257565b6001600160401b03939284831161120457604090815195602092611320848760051b0189611235565b8388878152019260608097028601958187116111c257935b868510611349575050505050505050565b87858303126111c257825190888201908282108683111761139757899288928652873581526113798389016111dd565b838201526113888689016112ea565b86820152815201940193611338565b60246000634e487b7160e01b81526041600452fd5b6000546001600160a01b031633036113c057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906114469261143e917f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000206115ad565b929092611493565b6001600160a01b0390811691160361145a57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b600581101561159757806114a45750565b600181036114f15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b6002810361153e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461154757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9060418151146000146115db576115d7916020820151906060604084015193015160001a906115e5565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116116685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561165b5781516001600160a01b03811615611655579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b1561167b57565b60405162461bcd60e51b8152602060048201526011602482015270746f6b656e49647320746f6f206d616e7960781b6044820152606490fd5b60001981146116c35760010190565b634e487b7160e01b600052601160045260246000fd5b91908110156116e95760051b0190565b634e487b7160e01b600052603260045260246000fd5b80548210156116e95760005260206000200190600090565b9190600183016000908282528060205260408220541560001461179b57845494680100000000000000008610156117875783611777611760886001604098999a018555846116ff565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b91908110156116e9576060020190565b356001600160a01b03811681036111c25790565b906001820190600092818452826020526040842054908115156000146118ae576000199180830181811161189a5782549084820191821161188657808203611851575b5050508054801561183d5782019161182083836116ff565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61187161186161176093866116ff565b90549060031b1c928392866116ff565b90558652846020526040862055388080611808565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b80518210156116e95760209160051b010190565b9081519160005b8381106118e1575050016000815290565b80602080928401015181850152016118d0565b61192490611916611910949360405195869360208501906118c9565b906118c9565b03601f198101845283611235565b565b939092919496956040978851926bffffffffffffffffffffffff198095816060988160209b8b1b168b890152891b166034870152871b166048850152605c840152607c830152609c820152609c815260c081018181106001600160401b038211176112045787526000905b8551821015611a2757611a1b6119f36119cc611a21936119b1868b6118b5565b5151908c51918a8301528982526119c78261121a565b6118f4565b876119d7868b6118b5565b51015190868c5192891b1689830152601482526119c78261121a565b896119fe858a6118b5565b5101511515908a519160f81b88830152600182526119c78261121a565b916116b4565b90611991565b959650505050905081519101209056fea2646970667358221220f898f247cb28c15c0bdc399c4cb841b44e53fb166f1118be8c97cef25317ad5164736f6c63430008130033", + "devdoc": { + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "lock(address,address,uint256[])": { + "params": { + "nft": "nft address", + "to": "passport address for game", + "tokenIds": "nft token id list" + } + }, + "onERC721Received(address,address,uint256,bytes)": { + "details": "See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "unlockOrMint(address,(uint256,address,bool)[],uint256,uint256,bytes)": { + "details": "unlock or mint nft from passport only if tokenId not exists, mint it if exists and user is owner, unlock it" + }, + "unlockWithSvr(address,uint256[])": { + "details": "unlock nft from game svr only" + }, + "updateDuation(uint256)": { + "details": "Change duration value" + }, + "updateVerifier(address)": { + "details": "update verifier address" + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "lock(address,address,uint256[])": { + "notice": "lock NFT from eoa only" + }, + "lockedNum(address,address)": { + "notice": "------get------- *" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 7, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 2486, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_usedSignatures", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes_memory_ptr,t_bool)" + }, + { + "astId": 3240, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "duration", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 3242, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "minDuration", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 130, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_paused", + "offset": 0, + "slot": "4", + "type": "t_bool" + }, + { + "astId": 2598, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "verifier", + "offset": 1, + "slot": "4", + "type": "t_address" + }, + { + "astId": 2601, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "maxBatch", + "offset": 0, + "slot": "5", + "type": "t_uint256" + }, + { + "astId": 2614, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "addressOriginal", + "offset": 0, + "slot": "6", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_address))" + }, + { + "astId": 2621, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "lockedRecords", + "offset": 0, + "slot": "7", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(UintSet)2344_storage))" + }, + { + "astId": 2625, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "supportNftList", + "offset": 0, + "slot": "8", + "type": "t_mapping(t_address,t_bool)" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_memory_ptr": { + "encoding": "bytes", + "label": "bytes", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_address,t_mapping(t_address,t_struct(UintSet)2344_storage))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => struct EnumerableSet.UintSet))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_struct(UintSet)2344_storage)" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_address))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(uint256 => address))", + "numberOfBytes": "32", + "value": "t_mapping(t_uint256,t_address)" + }, + "t_mapping(t_address,t_struct(UintSet)2344_storage)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => struct EnumerableSet.UintSet)", + "numberOfBytes": "32", + "value": "t_struct(UintSet)2344_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_bytes_memory_ptr,t_bool)": { + "encoding": "mapping", + "key": "t_bytes_memory_ptr", + "label": "mapping(bytes => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_uint256,t_address)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_struct(Set)1872_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 1867, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 1871, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_struct(UintSet)2344_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.UintSet", + "members": [ + { + "astId": 2343, + "contract": "contracts/game/NFTLockMain.sol:NFTLockMain", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)1872_storage" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/deployments/sepolia_test/solcInputs/8a2f4516b8e4e7985ccc7dc9c84d3cd1.json b/deployments/sepolia_test/solcInputs/8a2f4516b8e4e7985ccc7dc9c84d3cd1.json new file mode 100644 index 0000000..da0f532 --- /dev/null +++ b/deployments/sepolia_test/solcInputs/8a2f4516b8e4e7985ccc7dc9c84d3cd1.json @@ -0,0 +1,72 @@ +{ + "language": "Solidity", + "sources": { + "@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "@openzeppelin/contracts/security/Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n constructor() {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/utils/ERC721Holder.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721Receiver.sol\";\n\n/**\n * @dev Implementation of the {IERC721Receiver} interface.\n *\n * Accepts all token transfers.\n * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}.\n */\ncontract ERC721Holder is IERC721Receiver {\n /**\n * @dev See {IERC721Receiver-onERC721Received}.\n *\n * Always returns `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) {\n return this.onERC721Received.selector;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n รท 2 + 1, and for v in (302): v โˆˆ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n mstore(0x1c, hash)\n message := keccak256(0x00, 0x3c)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, \"\\x19\\x01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n data := keccak256(ptr, 0x42)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\n * `validator` and `data` according to the version 0 of EIP-191.\n *\n * See {recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // โ†’ `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // โ†’ `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n bytes32[] memory store = _values(set._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "contracts/core/HasSignature.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.19;\nimport {ECDSA} from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract HasSignature is Ownable {\n mapping(bytes signature => bool status) private _usedSignatures;\n\n function checkSigner(\n address signer,\n bytes32 hash,\n bytes memory signature\n ) public pure {\n bytes32 ethSignedMessageHash = ECDSA.toEthSignedMessageHash(hash);\n\n address recovered = ECDSA.recover(ethSignedMessageHash, signature);\n require(recovered == signer, \"invalid signature\");\n }\n\n modifier signatureValid(bytes calldata signature) {\n require(\n !_usedSignatures[signature],\n \"signature used. please send another transaction with new signature\"\n );\n _;\n }\n\n function _useSignature(bytes calldata signature) internal {\n if (!_usedSignatures[signature]) {\n _usedSignatures[signature] = true;\n }\n }\n}\n" + }, + "contracts/game/NFTLockMain.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.19;\nimport {ERC721Holder} from \"@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol\";\nimport {EnumerableSet} from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport {Pausable} from \"@openzeppelin/contracts/security/Pausable.sol\";\nimport {HasSignature} from \"../core/HasSignature.sol\";\nimport {TimeChecker} from \"../utils/TimeChecker.sol\";\n\ninterface INFT {\n function mint(address to, uint256 tokenID) external;\n function transferFrom(address from, address to, uint256 tokenId) external;\n}\n\ncontract NFTLockMain is ERC721Holder, HasSignature, TimeChecker, Pausable {\n using EnumerableSet for EnumerableSet.UintSet;\n\n uint256 public immutable _CACHED_CHAIN_ID;\n address public immutable _CACHED_THIS;\n address public verifier;\n uint256 public maxBatch = 100;\n\n struct NFTInfo {\n uint256 tokenId;\n address to;\n bool isMint;\n }\n mapping(address nft => mapping(uint256 tokenId => address user)) public addressOriginal;\n mapping(address nft => mapping(address user => EnumerableSet.UintSet tokenIdSet)) private lockedRecords;\n mapping(address nft => bool status) public supportNftList;\n\n event UnLock(address indexed nft, address indexed user, uint256 nonce, NFTInfo[] nftList);\n event Lock(address indexed nft, address indexed sender, address indexed to, uint256[] tokenIds);\n event VerifierUpdated(address indexed verifier);\n\n constructor(uint256 _duration, address _verifier) TimeChecker(_duration) {\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_THIS = address(this);\n verifier = _verifier;\n }\n /**\n * lock NFT\n * from eoa only\n * @param nft nft address\n * @param to passport address for game\n * @param tokenIds nft token id list\n */\n function lock(address nft, address to, uint256[] calldata tokenIds) external whenNotPaused{\n require(tokenIds.length <= maxBatch, \"tokenIds too many\");\n require(to != address(0), \"passport can't be zero\");\n require(supportNftList[nft], \"not support nft\");\n address _sender = _msgSender();\n for (uint256 i = 0; i < tokenIds.length; i++) {\n addressOriginal[nft][tokenIds[i]] = _sender;\n lockedRecords[nft][_sender].add(tokenIds[i]);\n INFT(nft).transferFrom(_sender, address(this), tokenIds[i]);\n }\n emit Lock(nft, _sender, to, tokenIds);\n }\n /**\n * @dev unlock or mint nft\n * from passport only\n * if tokenId not exists, mint it\n * if exists and user is owner, unlock it\n */\n function unlockOrMint(\n address nft,\n NFTInfo[] calldata nftList,\n uint256 signTime,\n uint256 saltNonce,\n bytes calldata signature\n ) external signatureValid(signature) timeValid(signTime) {\n require(nftList.length <= maxBatch, \"tokenIds too many\");\n address _sender = _msgSender();\n bytes32 messageHash = getMessageHash(_sender, nft, nftList, _CACHED_THIS, _CACHED_CHAIN_ID, signTime, saltNonce);\n checkSigner(verifier, messageHash, signature);\n _useSignature(signature);\n for (uint256 i = 0; i < nftList.length; i++) {\n if (nftList[i].isMint) {\n INFT(nft).mint(nftList[i].to, nftList[i].tokenId);\n } else {\n require(addressOriginal[nft][nftList[i].tokenId] == _sender, \"not owner\");\n delete addressOriginal[nft][nftList[i].tokenId];\n lockedRecords[nft][_sender].remove(nftList[i].tokenId);\n INFT(nft).transferFrom(address(this), nftList[i].to, nftList[i].tokenId);\n }\n }\n emit UnLock(nft, _sender, saltNonce, nftList);\n }\n\n /**\n * @dev unlock nft\n * from game svr only\n */\n function unlockWithSvr(address nft, uint256[] calldata tokenIds) external onlyOwner{\n require(tokenIds.length <= maxBatch, \"tokenIds too many\");\n for (uint256 i = 0; i < tokenIds.length; i++) {\n address _sender = addressOriginal[nft][tokenIds[i]];\n delete addressOriginal[nft][tokenIds[i]];\n lockedRecords[nft][_sender].remove(tokenIds[i]);\n INFT(nft).transferFrom(address(this), _sender, tokenIds[i]);\n }\n }\n\n /** ------get------- **/\n function lockedNum(address token, address user) public view returns (uint256) {\n return lockedRecords[token][user].length();\n }\n\n function lockedNft(address token, address user) public view returns (uint256[] memory) {\n return lockedRecords[token][user].values();\n }\n\n function updateBatch(uint256 _maxBatch) external onlyOwner {\n maxBatch = _maxBatch;\n }\n\n function addSupportNftList(address[] calldata nftList) external onlyOwner {\n for (uint256 i = 0; i < nftList.length; i++) {\n supportNftList[nftList[i]] = true;\n }\n }\n function removeSupportNft(address nftAddress) external onlyOwner {\n require(supportNftList[nftAddress], \"can't remove\");\n delete supportNftList[nftAddress];\n }\n\n /**\n * @dev update verifier address\n */\n function updateVerifier(address _verifier) external onlyOwner {\n require(_verifier != address(0), \"NFTClaimer: address can not be zero\");\n verifier = _verifier;\n emit VerifierUpdated(_verifier);\n }\n\n function getMessageHash(\n address _to,\n address _nft,\n NFTInfo[] memory _ids,\n address _contract,\n uint256 _chainId,\n uint256 _signTime,\n uint256 _saltNonce\n ) public pure returns (bytes32) {\n bytes memory encoded = abi.encodePacked(_to, _nft, _contract, _chainId, _signTime, _saltNonce);\n for (uint256 i = 0; i < _ids.length; ++i) {\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].tokenId));\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].to));\n encoded = bytes.concat(encoded, abi.encodePacked(_ids[i].isMint));\n }\n return keccak256(encoded);\n }\n}\n" + }, + "contracts/utils/TimeChecker.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.19;\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract TimeChecker is Ownable {\n uint256 public duration;\n uint256 public minDuration;\n\n event DurationUpdated(uint256 indexed duration);\n\n constructor(uint256 _duration) {\n duration = _duration;\n minDuration = 30 minutes;\n }\n\n /**\n * @dev Check if the time is valid\n */\n modifier timeValid(uint256 time) {\n require(\n time + duration >= block.timestamp,\n \"expired, please send another transaction with new signature\"\n );\n _;\n }\n\n\n /**\n * @dev Change duration value\n */\n function updateDuation(uint256 valNew) external onlyOwner {\n require(valNew > minDuration, \"duration too short\");\n duration = valNew;\n emit DurationUpdated(valNew);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 248a155..aaaa942 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -56,6 +56,10 @@ const config: HardhatUserConfig = { url: process.env.IMTBL_TEST_URL || "", accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], }, + sepolia_test: { + url: process.env.SEPOLIA_URL || "", + accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + }, }, }; diff --git a/out/sepolia_test_dev.json b/out/sepolia_test_dev.json new file mode 100644 index 0000000..b7492fa --- /dev/null +++ b/out/sepolia_test_dev.json @@ -0,0 +1,14 @@ +[ + { + "name": "NFTLock", + "type": "logic", + "json": "assets/contracts/NFTLock.json", + "address": "0x7F2b4DB626d878778e178B4F0C7bA3a2870C6dd0" + }, + { + "name": "BEBadgeV2", + "type": "erc721", + "json": "assets/contracts/BEBadgeV2.json", + "address": "0x1304E6AA241eE3C9ea44Db9e593e85Ae76eC41F1" + } +] \ No newline at end of file diff --git a/package.json b/package.json index 6ff7c96..e1fe628 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "deploy:nftclaimwl": "hardhat deploy --tags NFTClaimStage2WL --network imtbl_test --reset", "deploy:nft": "hardhat deploy --tags CFNFTGame --network imtbl_test --reset", "deploy:nftlock": "hardhat deploy --tags NFTLock --network imtbl_test --reset", + "deploy:nftlock:main": "hardhat deploy --tags NFTLockMain --network sepolia_test --reset", "deploy:testtoken": "hardhat deploy --tags TestToken --network imtbl_test --reset", "deploy:airdrop": "hardhat deploy --tags AirdropToken --network imtbl_test --reset", "solhint": "solhint --config ./.solhint.json" diff --git a/test/testNFTLockerMain.ts b/test/testNFTLockerMain.ts new file mode 100644 index 0000000..6af6f7a --- /dev/null +++ b/test/testNFTLockerMain.ts @@ -0,0 +1,126 @@ +import { expect } from 'chai' +import hre from "hardhat"; +import { + getBytes, + solidityPackedKeccak256, +} from 'ethers' +import { + loadFixture, +} from "@nomicfoundation/hardhat-toolbox/network-helpers"; + +describe('NFTLock', function() { + async function deployOneContract() { + const [owner, otherAccount] = await hre.ethers.getSigners(); + const verifier = owner.address; + const OperatorAllowlist = await hre.ethers.getContractFactory("OperatorAllowlist"); + const operatorAllowlist = await OperatorAllowlist.deploy(owner.address); + + const CFNFTGame = await hre.ethers.getContractFactory("CFNFTGame"); + const nft = await CFNFTGame.deploy(owner.address, 'name', 'symbol', 'baseURI', 'contractURI', operatorAllowlist.target, owner.address, 5); + const nftAddress = nft.target; + const NFTLock = await hre.ethers.getContractFactory("NFTLockMain"); + + const nftLock = await NFTLock.deploy( 3600, verifier ); + await nft.grantMinterRole(nftLock.target) + await nft.grantMinterRole(owner.address) + await nftLock.addSupportNftList([nftAddress]); + await nft.mint(otherAccount.address, "1001"); + const chainId = hre.network.config.chainId + await operatorAllowlist.grantRegistrarRole(owner.address) + await operatorAllowlist.addAddressToAllowlist([nftLock.target]) + return { nftLock, owner, otherAccount, verifier, nftAddress, nft, chainId }; + } + describe("Deployment", function () { + it('should deploy NFTLock with the correct verifier', async function() { + const { nftLock, verifier } = await loadFixture(deployOneContract); + expect(await nftLock.verifier()).to.equal(verifier); + }); + it('should deploy NFTLock with the correct NFT address', async function() { + const { nftLock, nftAddress } = await loadFixture(deployOneContract); + expect(await nftLock.supportNftList(nftAddress)).to.equal(true); + }); + }) + + describe("Lock", function () { + it('should lock NFT', async function() { + const { nftLock, nft, otherAccount, owner } = await loadFixture(deployOneContract); + const tokenId = "1001" + // @ts-ignore + await nft.connect(otherAccount).approve(nftLock.target, tokenId); + //@ts-ignore + await nftLock.connect(otherAccount).lock(nft.target, owner.address, [tokenId]); + expect(await nft.balanceOf(nftLock.target)).to.equal(1); + expect(await nftLock.addressOriginal(nft.target, tokenId)).to.equal(otherAccount.address); + expect(await nft.ownerOf(tokenId)).to.equal(nftLock.target); + }); + + + }) + + describe("UnLock", function () { + it('should unlock NFT from lock', async function() { + const { nftLock, nft, otherAccount, chainId, owner } = await loadFixture(deployOneContract); + const tokenId = '1001' + // @ts-ignore + await nft.connect(otherAccount).approve(nftLock.target, tokenId); + //@ts-ignore + await nftLock.connect(otherAccount).lock(nft.target, owner.address, [tokenId]); + const nonce = (Math.random() * 1000) | 0; + const now = Date.now() / 1000 | 0; + let localMsgHash = solidityPackedKeccak256(["address", "address", "address", "uint256", "uint256", "uint256", "uint256", "address", "bool"], + [otherAccount.address, nft.target, nftLock.target, chainId, now, nonce, tokenId, owner.address, false]); + const signature = await owner.signMessage(getBytes(localMsgHash)); + //@ts-ignore + await nftLock.connect(otherAccount).unlockOrMint(nft.target, [[tokenId, owner.address, false]], now, nonce, signature); + // await nftLock.connect(otherAccount).unlockOrMint(nft.target, [[tokenId, false]], now, nonce, signature); + expect(await nft.ownerOf(tokenId)).to.equal(owner.address); + }); + + it('should mint NFT from lock', async function() { + const { nftLock, nft, otherAccount, chainId, owner } = await loadFixture(deployOneContract); + const tokenId = '1002' + const isMint = true + + const nonce = (Math.random() * 1000) | 0; + const now = Date.now() / 1000 | 0; + let localMsgHash = solidityPackedKeccak256(["address", "address", "address", "uint256", "uint256", "uint256", "uint256", "address", "bool"], + [otherAccount.address, nft.target, nftLock.target, chainId, now, nonce, tokenId, otherAccount.address, isMint]); + const signature = await owner.signMessage(getBytes(localMsgHash)); + //@ts-ignore + await nftLock.connect(otherAccount).unlockOrMint(nft.target, [[tokenId, otherAccount.address, isMint]], now, nonce, signature); + expect(await nft.ownerOf(tokenId)).to.equal(otherAccount.address); + }); + + it('should revert NFT mint for nft already minted', async function() { + const { nftLock, nft, otherAccount, chainId, owner } = await loadFixture(deployOneContract); + const tokenId = '1001' + const isMint = true + + const nonce = (Math.random() * 1000) | 0; + const now = Date.now() / 1000 | 0; + let localMsgHash = solidityPackedKeccak256(["address", "address", "address", "uint256", "uint256", "uint256", "uint256", "address", "bool"], + [otherAccount.address, nft.target, nftLock.target, chainId, now, nonce, tokenId, otherAccount.address, isMint]); + const signature = await owner.signMessage(getBytes(localMsgHash)); + //@ts-ignore + await expect(nftLock.connect(otherAccount).unlockOrMint(nft.target, [[tokenId, otherAccount.address, isMint]], now, nonce, signature)).to.be.revertedWith( + "ERC721: token already minted" + ); + }); + + it('should unlock NFT with svr', async function() { + const { nftLock, nft, otherAccount, chainId, owner } = await loadFixture(deployOneContract); + const tokenId = '1001' + // @ts-ignore + await nft.connect(otherAccount).approve(nftLock.target, tokenId); + //@ts-ignore + await nftLock.connect(otherAccount).lock(nft.target, owner.address, [tokenId]); + + //@ts-ignore + await nftLock.unlockWithSvr(nft.target, [tokenId]); + // await nftLock.connect(otherAccount).unlockOrMint(nft.target, [[tokenId, false]], now, nonce, signature); + expect(await nft.ownerOf(tokenId)).to.equal(otherAccount.address); + }); + }); + + +}) \ No newline at end of file