You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32272 lines
1.3 MiB

{
"contractName": "ERC721",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"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": "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": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"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": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"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": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"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": "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": "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"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"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\":\"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\":\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[{\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"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}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x81c02855bc239e16ec09eee000a8bec691424c715188d6d881037e69c45414c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46e3ecc8920aeb78c362a387520fe28e022cdc6d04256d9e5874eb8ff6868b6d\",\"dweb:/ipfs/QmdfCTHrV6CZMGiM3KqGF8tWkdNvGpEmWFyy72X1LAHsz2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x51b758a8815ecc9596c66c37d56b1d33883a444631a3f916b9fe65cb863ef7c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997ca03557985b3c6f9143a18b6c3a710b3bc1c7f189ee956d305a966ecfb922\",\"dweb:/ipfs/QmQaD3Wb62F88SHqmpLttvF6wKuPDQep2LLUcKPekeRzvz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@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\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b50604051620014e2380380620014e28339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61125080620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610d60565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610dd5565b61012461011f366004610de8565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e1d565b6103a6565b005b61014f61015f366004610e47565b6104bc565b61014f610172366004610e47565b6104ed565b610124610185366004610de8565b610508565b61019d610198366004610e83565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610e9e565b610615565b61014f6101d4366004610ef0565b610624565b6101046101e7366004610de8565b61065c565b6100e76101fa366004610fcc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610fff565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610fff565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061103a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610fff565b610620338383610a49565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061103a565b61065684848484610b18565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b4b565b60405160200161072d92919061108b565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109245760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610381565b6001600160a01b0382166109865760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b610991600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109ba9084906110d0565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e89084906110e7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aab5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b238484846108a9565b610b2f84848484610c49565b6106565760405162461bcd60e51b8152600401610381906110ff565b606081610b6f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b995780610b8381611151565b9150610b929050600a83611182565b9150610b73565b60008167ffffffffffffffff811115610bb457610bb4610eda565b6040519080825280601f01601f191660200182016040528015610bde576020820181803683370190505b5090505b84156108a157610bf36001836110d0565b9150610c00600a86611196565b610c0b9060306110e7565b60f81b818381518110610c2057610c206111aa565b60200101906001600160f81b031916908160001a905350610c42600a86611182565b9450610be2565b60006001600160a01b0384163b15610d3c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c8d9033908990889088906004016111c0565b6020604051808303816000875af1925050508015610cc8575060408051601f3d908101601f19168201909252610cc5918101906111fd565b60015b610d22573d808015610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b508051610d1a5760405162461bcd60e51b8152600401610381906110ff565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b6001600160e01b031981168114610d5d57600080fd5b50565b600060208284031215610d7257600080fd5b813561073d81610d47565b60005b83811015610d98578181015183820152602001610d80565b838111156106565750506000910152565b60008151808452610dc1816020860160208601610d7d565b601f01601f19169290920160200192915050565b60208152600061073d6020830184610da9565b600060208284031215610dfa57600080fd5b5035919050565b80356001600160a01b0381168114610e1857600080fd5b919050565b60008060408385031215610e3057600080fd5b610e3983610e01565b946020939093013593505050565b600080600060608486031215610e5c57600080fd5b610e6584610e01565b9250610e7360208501610e01565b9150604084013590509250925092565b600060208284031215610e9557600080fd5b61073d82610e01565b60008060408385031215610eb157600080fd5b610eba83610e01565b915060208301358015158114610ecf57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f0657600080fd5b610f0f85610e01565b9350610f1d60208601610e01565b925060408501359150606085013567ffffffffffffffff80821115610f4157600080fd5b818701915087601f830112610f5557600080fd5b813581811115610f6757610f67610eda565b604051601f8201601f19908116603f01168101908382118183101715610f8f57610f8f610eda565b816040528281528a6020848701011115610fa857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610fdf57600080fd5b610fe883610e01565b9150610ff660208401610e01565b90509250929050565b600181811c9082168061101357607f821691505b6020821081141561103457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000835161109d818460208801610d7d565b8351908301906110b1818360208801610d7d565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110e2576110e26110ba565b500390565b600082198211156110fa576110fa6110ba565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415611165576111656110ba565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111915761119161116c565b500490565b6000826111a5576111a561116c565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f390830184610da9565b9695505050505050565b60006020828403121561120f57600080fd5b815161073d81610d4756fea2646970667358221220a8c6c7e228460662c9ae59467089873187ca06d167788f3d97a9e47cf8f2e9ba64736f6c634300080b0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610d60565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610dd5565b61012461011f366004610de8565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e1d565b6103a6565b005b61014f61015f366004610e47565b6104bc565b61014f610172366004610e47565b6104ed565b610124610185366004610de8565b610508565b61019d610198366004610e83565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610e9e565b610615565b61014f6101d4366004610ef0565b610624565b6101046101e7366004610de8565b61065c565b6100e76101fa366004610fcc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610fff565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610fff565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061103a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610fff565b610620338383610a49565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061103a565b61065684848484610b18565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b4b565b60405160200161072d92919061108b565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109245760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610381565b6001600160a01b0382166109865760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b610991600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109ba9084906110d0565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e89084906110e7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aab5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b238484846108a9565b610b2f84848484610c49565b6106565760405162461bcd60e51b8152600401610381906110ff565b606081610b6f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b995780610b8381611151565b9150610b929050600a83611182565b9150610b73565b60008167ffffffffffffffff811115610bb457610bb4610eda565b6040519080825280601f01601f191660200182016040528015610bde576020820181803683370190505b5090505b84156108a157610bf36001836110d0565b9150610c00600a86611196565b610c0b9060306110e7565b60f81b818381518110610c2057610c206111aa565b60200101906001600160f81b031916908160001a905350610c42600a86611182565b9450610be2565b60006001600160a01b0384163b15610d3c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c8d9033908990889088906004016111c0565b6020604051808303816000875af1925050508015610cc8575060408051601f3d908101601f19168201909252610cc5918101906111fd565b60015b610d22573d808015610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b508051610d1a5760405162461bcd60e51b8152600401610381906110ff565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b6001600160e01b031981168114610d5d57600080fd5b50565b600060208284031215610d7257600080fd5b813561073d81610d47565b60005b83811015610d98578181015183820152602001610d80565b838111156106565750506000910152565b60008151808452610dc1816020860160208601610d7d565b601f01601f19169290920160200192915050565b60208152600061073d6020830184610da9565b600060208284031215610dfa57600080fd5b5035919050565b80356001600160a01b0381168114610e1857600080fd5b919050565b60008060408385031215610e3057600080fd5b610e3983610e01565b946020939093013593505050565b600080600060608486031215610e5c57600080fd5b610e6584610e01565b9250610e7360208501610e01565b9150604084013590509250925092565b600060208284031215610e9557600080fd5b61073d82610e01565b60008060408385031215610eb157600080fd5b610eba83610e01565b915060208301358015158114610ecf57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f0657600080fd5b610f0f85610e01565b9350610f1d60208601610e01565b925060408501359150606085013567ffffffffffffffff80821115610f4157600080fd5b818701915087601f830112610f5557600080fd5b813581811115610f6757610f67610eda565b604051601f8201601f19908116603f01168101908382118183101715610f8f57610f8f610eda565b816040528281528a6020848701011115610fa857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610fdf57600080fd5b610fe883610e01565b9150610ff660208401610e01565b90509250929050565b600181811c9082168061101357607f821691505b6020821081141561103457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000835161109d818460208801610d7d565b8351908301906110b1818360208801610d7d565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110e2576110e26110ba565b500390565b600082198211156110fa576110fa6110ba565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415611165576111656110ba565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111915761119161116c565b500490565b6000826111a5576111a561116c565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f390830184610da9565b9695505050505050565b60006020828403121561120f57600080fd5b815161073d81610d4756fea2646970667358221220a8c6c7e228460662c9ae59467089873187ca06d167788f3d97a9e47cf8f2e9ba64736f6c634300080b0033",
"immutableReferences": {},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1985:15",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:15",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "46:95:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "63:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "70:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "75:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "66:3:15"
},
"nodeType": "YulFunctionCall",
"src": "66:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "56:6:15"
},
"nodeType": "YulFunctionCall",
"src": "56:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "56:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "106:4:15",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "96:6:15"
},
"nodeType": "YulFunctionCall",
"src": "96:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "96:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "127:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "130:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "120:6:15"
},
"nodeType": "YulFunctionCall",
"src": "120:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "120:15:15"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "14:127:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "210:821:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "259:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "268:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "271:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "261:6:15"
},
"nodeType": "YulFunctionCall",
"src": "261:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "261:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "238:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "246:4:15",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "234:3:15"
},
"nodeType": "YulFunctionCall",
"src": "234:17:15"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "253:3:15"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "230:3:15"
},
"nodeType": "YulFunctionCall",
"src": "230:27:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "223:6:15"
},
"nodeType": "YulFunctionCall",
"src": "223:35:15"
},
"nodeType": "YulIf",
"src": "220:55:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "284:23:15",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "300:6:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "294:5:15"
},
"nodeType": "YulFunctionCall",
"src": "294:13:15"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "288:2:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "316:28:15",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "334:2:15",
"type": "",
"value": "64"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "338:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "330:3:15"
},
"nodeType": "YulFunctionCall",
"src": "330:10:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "342:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "326:3:15"
},
"nodeType": "YulFunctionCall",
"src": "326:18:15"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "320:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "367:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "369:16:15"
},
"nodeType": "YulFunctionCall",
"src": "369:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "369:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "359:2:15"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "363:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "356:2:15"
},
"nodeType": "YulFunctionCall",
"src": "356:10:15"
},
"nodeType": "YulIf",
"src": "353:36:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "398:17:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "412:2:15",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "408:3:15"
},
"nodeType": "YulFunctionCall",
"src": "408:7:15"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "402:2:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "424:23:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "444:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "438:5:15"
},
"nodeType": "YulFunctionCall",
"src": "438:9:15"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "428:6:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "456:71:15",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "478:6:15"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "502:2:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "506:4:15",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "498:3:15"
},
"nodeType": "YulFunctionCall",
"src": "498:13:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "513:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "494:3:15"
},
"nodeType": "YulFunctionCall",
"src": "494:22:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "518:2:15",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "490:3:15"
},
"nodeType": "YulFunctionCall",
"src": "490:31:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "523:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "486:3:15"
},
"nodeType": "YulFunctionCall",
"src": "486:40:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "474:3:15"
},
"nodeType": "YulFunctionCall",
"src": "474:53:15"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "460:10:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "586:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "588:16:15"
},
"nodeType": "YulFunctionCall",
"src": "588:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "588:18:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "545:10:15"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "557:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "542:2:15"
},
"nodeType": "YulFunctionCall",
"src": "542:18:15"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "565:10:15"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "577:6:15"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "562:2:15"
},
"nodeType": "YulFunctionCall",
"src": "562:22:15"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "539:2:15"
},
"nodeType": "YulFunctionCall",
"src": "539:46:15"
},
"nodeType": "YulIf",
"src": "536:72:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "624:2:15",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "628:10:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "617:6:15"
},
"nodeType": "YulFunctionCall",
"src": "617:22:15"
},
"nodeType": "YulExpressionStatement",
"src": "617:22:15"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "655:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "663:2:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "648:6:15"
},
"nodeType": "YulFunctionCall",
"src": "648:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "648:18:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "675:14:15",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "685:4:15",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "679:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "744:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "747:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "737:6:15"
},
"nodeType": "YulFunctionCall",
"src": "737:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "737:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "712:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "720:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "708:3:15"
},
"nodeType": "YulFunctionCall",
"src": "708:15:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "725:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "704:3:15"
},
"nodeType": "YulFunctionCall",
"src": "704:24:15"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "730:3:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "701:2:15"
},
"nodeType": "YulFunctionCall",
"src": "701:33:15"
},
"nodeType": "YulIf",
"src": "698:53:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "760:10:15",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "769:1:15",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "764:1:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "825:87:15",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "854:6:15"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "862:1:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "850:3:15"
},
"nodeType": "YulFunctionCall",
"src": "850:14:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "866:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "846:3:15"
},
"nodeType": "YulFunctionCall",
"src": "846:23:15"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "885:6:15"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "893:1:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "881:3:15"
},
"nodeType": "YulFunctionCall",
"src": "881:14:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "897:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "877:3:15"
},
"nodeType": "YulFunctionCall",
"src": "877:23:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "871:5:15"
},
"nodeType": "YulFunctionCall",
"src": "871:30:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "839:6:15"
},
"nodeType": "YulFunctionCall",
"src": "839:63:15"
},
"nodeType": "YulExpressionStatement",
"src": "839:63:15"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "790:1:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "793:2:15"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "787:2:15"
},
"nodeType": "YulFunctionCall",
"src": "787:9:15"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "797:19:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "799:15:15",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "808:1:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "811:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "804:3:15"
},
"nodeType": "YulFunctionCall",
"src": "804:10:15"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "799:1:15"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "783:3:15",
"statements": []
},
"src": "779:133:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "942:59:15",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "971:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "979:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "967:3:15"
},
"nodeType": "YulFunctionCall",
"src": "967:15:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "984:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "963:3:15"
},
"nodeType": "YulFunctionCall",
"src": "963:24:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "989:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "956:6:15"
},
"nodeType": "YulFunctionCall",
"src": "956:35:15"
},
"nodeType": "YulExpressionStatement",
"src": "956:35:15"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "927:1:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "930:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "924:2:15"
},
"nodeType": "YulFunctionCall",
"src": "924:9:15"
},
"nodeType": "YulIf",
"src": "921:80:15"
},
{
"nodeType": "YulAssignment",
"src": "1010:15:15",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1019:6:15"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1010:5:15"
}
]
}
]
},
"name": "abi_decode_string_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "184:6:15",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "192:3:15",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "200:5:15",
"type": ""
}
],
"src": "146:885:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1154:444:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1200:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1209:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1212:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1202:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1202:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "1202:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1175:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1184:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1171:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1171:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1196:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1167:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1167:32:15"
},
"nodeType": "YulIf",
"src": "1164:52:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1225:30:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1245:9:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1239:5:15"
},
"nodeType": "YulFunctionCall",
"src": "1239:16:15"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1229:6:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1264:28:15",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1282:2:15",
"type": "",
"value": "64"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1286:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1278:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1278:10:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1290:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1274:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1274:18:15"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1268:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1319:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1328:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1331:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1321:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1321:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "1321:12:15"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1307:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1315:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1304:2:15"
},
"nodeType": "YulFunctionCall",
"src": "1304:14:15"
},
"nodeType": "YulIf",
"src": "1301:34:15"
},
{
"nodeType": "YulAssignment",
"src": "1344:71:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1387:9:15"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1398:6:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1383:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1383:22:15"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1407:7:15"
}
],
"functionName": {
"name": "abi_decode_string_fromMemory",
"nodeType": "YulIdentifier",
"src": "1354:28:15"
},
"nodeType": "YulFunctionCall",
"src": "1354:61:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1344:6:15"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1424:41:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1450:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1461:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1446:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1446:18:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1440:5:15"
},
"nodeType": "YulFunctionCall",
"src": "1440:25:15"
},
"variables": [
{
"name": "offset_1",
"nodeType": "YulTypedName",
"src": "1428:8:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1494:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1503:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1506:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1496:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1496:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "1496:12:15"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "1480:8:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1490:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1477:2:15"
},
"nodeType": "YulFunctionCall",
"src": "1477:16:15"
},
"nodeType": "YulIf",
"src": "1474:36:15"
},
{
"nodeType": "YulAssignment",
"src": "1519:73:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1562:9:15"
},
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "1573:8:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1558:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1558:24:15"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1584:7:15"
}
],
"functionName": {
"name": "abi_decode_string_fromMemory",
"nodeType": "YulIdentifier",
"src": "1529:28:15"
},
"nodeType": "YulFunctionCall",
"src": "1529:63:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1519:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1112:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1123:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1135:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1143:6:15",
"type": ""
}
],
"src": "1036:562:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1658:325:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1668:22:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1682:1:15",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1685:4:15"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "1678:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1678:12:15"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1668:6:15"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1699:38:15",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1729:4:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1735:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1725:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1725:12:15"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1703:18:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1776:31:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1778:27:15",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1792:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1800:4:15",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1788:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1788:17:15"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1778:6:15"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1756:18:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1749:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1749:26:15"
},
"nodeType": "YulIf",
"src": "1746:61:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1866:111:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1887:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1894:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1899:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1890:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1890:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1880:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1880:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "1880:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1931:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1934:4:15",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1924:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1924:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "1924:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1959:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1962:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1952:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1952:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "1952:15:15"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1822:18:15"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1845:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1853:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1842:2:15"
},
"nodeType": "YulFunctionCall",
"src": "1842:14:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1819:2:15"
},
"nodeType": "YulFunctionCall",
"src": "1819:38:15"
},
"nodeType": "YulIf",
"src": "1816:161:15"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1638:4:15",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1647:6:15",
"type": ""
}
],
"src": "1603:380:15"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 15,
"language": "Yul",
"name": "#utility.yul"
}
],
"deployedGeneratedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12313:15",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:15",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "58:87:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "123:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "132:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "135:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "125:6:15"
},
"nodeType": "YulFunctionCall",
"src": "125:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "125:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "81:5:15"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "92:5:15"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "108:10:15",
"type": "",
"value": "0xffffffff"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "99:3:15"
},
"nodeType": "YulFunctionCall",
"src": "99:20:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "88:3:15"
},
"nodeType": "YulFunctionCall",
"src": "88:32:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "78:2:15"
},
"nodeType": "YulFunctionCall",
"src": "78:43:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "71:6:15"
},
"nodeType": "YulFunctionCall",
"src": "71:51:15"
},
"nodeType": "YulIf",
"src": "68:71:15"
}
]
},
"name": "validator_revert_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "47:5:15",
"type": ""
}
],
"src": "14:131:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "219:176:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "265:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "274:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "277:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "267:6:15"
},
"nodeType": "YulFunctionCall",
"src": "267:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "267:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "240:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "249:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "236:3:15"
},
"nodeType": "YulFunctionCall",
"src": "236:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "261:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "232:3:15"
},
"nodeType": "YulFunctionCall",
"src": "232:32:15"
},
"nodeType": "YulIf",
"src": "229:52:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "290:36:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "316:9:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "303:12:15"
},
"nodeType": "YulFunctionCall",
"src": "303:23:15"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "359:5:15"
}
],
"functionName": {
"name": "validator_revert_bytes4",
"nodeType": "YulIdentifier",
"src": "335:23:15"
},
"nodeType": "YulFunctionCall",
"src": "335:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "335:30:15"
},
{
"nodeType": "YulAssignment",
"src": "374:15:15",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "384:5:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "374:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "185:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "196:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "208:6:15",
"type": ""
}
],
"src": "150:245:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "495:92:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "505:26:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "517:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "528:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "513:3:15"
},
"nodeType": "YulFunctionCall",
"src": "513:18:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "505:4:15"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "547:9:15"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "572:6:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "565:6:15"
},
"nodeType": "YulFunctionCall",
"src": "565:14:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "558:6:15"
},
"nodeType": "YulFunctionCall",
"src": "558:22:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "540:6:15"
},
"nodeType": "YulFunctionCall",
"src": "540:41:15"
},
"nodeType": "YulExpressionStatement",
"src": "540:41:15"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "464:9:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "475:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "486:4:15",
"type": ""
}
],
"src": "400:187:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "645:205:15",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "655:10:15",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "664:1:15",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "659:1:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "724:63:15",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "749:3:15"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "754:1:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "745:3:15"
},
"nodeType": "YulFunctionCall",
"src": "745:11:15"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "768:3:15"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "773:1:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "764:3:15"
},
"nodeType": "YulFunctionCall",
"src": "764:11:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "758:5:15"
},
"nodeType": "YulFunctionCall",
"src": "758:18:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "738:6:15"
},
"nodeType": "YulFunctionCall",
"src": "738:39:15"
},
"nodeType": "YulExpressionStatement",
"src": "738:39:15"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "685:1:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "688:6:15"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "682:2:15"
},
"nodeType": "YulFunctionCall",
"src": "682:13:15"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "696:19:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "698:15:15",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "707:1:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "710:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "703:3:15"
},
"nodeType": "YulFunctionCall",
"src": "703:10:15"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "698:1:15"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "678:3:15",
"statements": []
},
"src": "674:113:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "813:31:15",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "826:3:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "831:6:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "822:3:15"
},
"nodeType": "YulFunctionCall",
"src": "822:16:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "840:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "815:6:15"
},
"nodeType": "YulFunctionCall",
"src": "815:27:15"
},
"nodeType": "YulExpressionStatement",
"src": "815:27:15"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "802:1:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "805:6:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "799:2:15"
},
"nodeType": "YulFunctionCall",
"src": "799:13:15"
},
"nodeType": "YulIf",
"src": "796:48:15"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "623:3:15",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "628:3:15",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "633:6:15",
"type": ""
}
],
"src": "592:258:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "905:208:15",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "915:26:15",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "935:5:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "929:5:15"
},
"nodeType": "YulFunctionCall",
"src": "929:12:15"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "919:6:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "957:3:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "962:6:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "950:6:15"
},
"nodeType": "YulFunctionCall",
"src": "950:19:15"
},
"nodeType": "YulExpressionStatement",
"src": "950:19:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1004:5:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1011:4:15",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1000:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1000:16:15"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1022:3:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1027:4:15",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1018:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1018:14:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1034:6:15"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "978:21:15"
},
"nodeType": "YulFunctionCall",
"src": "978:63:15"
},
"nodeType": "YulExpressionStatement",
"src": "978:63:15"
},
{
"nodeType": "YulAssignment",
"src": "1050:57:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1065:3:15"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1078:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1086:2:15",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1074:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1074:15:15"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1095:2:15",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1091:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1091:7:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1070:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1070:29:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1061:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1061:39:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1102:4:15",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1057:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1057:50:15"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1050:3:15"
}
]
}
]
},
"name": "abi_encode_string",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "882:5:15",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "889:3:15",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "897:3:15",
"type": ""
}
],
"src": "855:258:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1239:99:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1256:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1267:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1249:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1249:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "1249:21:15"
},
{
"nodeType": "YulAssignment",
"src": "1279:53:15",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1305:6:15"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1317:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1328:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1313:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1313:18:15"
}
],
"functionName": {
"name": "abi_encode_string",
"nodeType": "YulIdentifier",
"src": "1287:17:15"
},
"nodeType": "YulFunctionCall",
"src": "1287:45:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1279:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1208:9:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1219:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1230:4:15",
"type": ""
}
],
"src": "1118:220:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1413:110:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1459:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1468:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1471:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1461:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1461:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "1461:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1434:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1443:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1430:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1430:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1455:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1426:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1426:32:15"
},
"nodeType": "YulIf",
"src": "1423:52:15"
},
{
"nodeType": "YulAssignment",
"src": "1484:33:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1507:9:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1494:12:15"
},
"nodeType": "YulFunctionCall",
"src": "1494:23:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1484:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1379:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1390:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1402:6:15",
"type": ""
}
],
"src": "1343:180:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1629:102:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1639:26:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1651:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1662:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1647:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1647:18:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1639:4:15"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1681:9:15"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1696:6:15"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1712:3:15",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1717:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1708:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1708:11:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1721:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1704:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1704:19:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1692:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1692:32:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1674:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1674:51:15"
},
"nodeType": "YulExpressionStatement",
"src": "1674:51:15"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1598:9:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1609:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1620:4:15",
"type": ""
}
],
"src": "1528:203:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1785:124:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1795:29:15",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1817:6:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1804:12:15"
},
"nodeType": "YulFunctionCall",
"src": "1804:20:15"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1795:5:15"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1887:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1896:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1899:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1889:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1889:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "1889:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1846:5:15"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1857:5:15"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1872:3:15",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1877:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1868:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1868:11:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1881:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1864:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1864:19:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1853:3:15"
},
"nodeType": "YulFunctionCall",
"src": "1853:31:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1843:2:15"
},
"nodeType": "YulFunctionCall",
"src": "1843:42:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1836:6:15"
},
"nodeType": "YulFunctionCall",
"src": "1836:50:15"
},
"nodeType": "YulIf",
"src": "1833:70:15"
}
]
},
"name": "abi_decode_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1764:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1775:5:15",
"type": ""
}
],
"src": "1736:173:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2001:167:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2047:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2056:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2059:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2049:6:15"
},
"nodeType": "YulFunctionCall",
"src": "2049:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "2049:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2022:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2031:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2018:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2018:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2043:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2014:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2014:32:15"
},
"nodeType": "YulIf",
"src": "2011:52:15"
},
{
"nodeType": "YulAssignment",
"src": "2072:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2101:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "2082:18:15"
},
"nodeType": "YulFunctionCall",
"src": "2082:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2072:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2120:42:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2147:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2158:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2143:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2143:18:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2130:12:15"
},
"nodeType": "YulFunctionCall",
"src": "2130:32:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2120:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1959:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1970:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1982:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1990:6:15",
"type": ""
}
],
"src": "1914:254:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2277:224:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2323:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2332:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2335:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2325:6:15"
},
"nodeType": "YulFunctionCall",
"src": "2325:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "2325:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2298:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2307:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2294:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2294:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2319:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2290:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2290:32:15"
},
"nodeType": "YulIf",
"src": "2287:52:15"
},
{
"nodeType": "YulAssignment",
"src": "2348:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2377:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "2358:18:15"
},
"nodeType": "YulFunctionCall",
"src": "2358:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2348:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2396:48:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2429:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2440:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2425:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2425:18:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "2406:18:15"
},
"nodeType": "YulFunctionCall",
"src": "2406:38:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2396:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2453:42:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2480:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2491:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2476:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2476:18:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2463:12:15"
},
"nodeType": "YulFunctionCall",
"src": "2463:32:15"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "2453:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2227:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2238:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2250:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2258:6:15",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "2266:6:15",
"type": ""
}
],
"src": "2173:328:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2576:116:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2622:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2631:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2634:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2624:6:15"
},
"nodeType": "YulFunctionCall",
"src": "2624:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "2624:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2597:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2606:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2593:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2593:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2618:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2589:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2589:32:15"
},
"nodeType": "YulIf",
"src": "2586:52:15"
},
{
"nodeType": "YulAssignment",
"src": "2647:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2676:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "2657:18:15"
},
"nodeType": "YulFunctionCall",
"src": "2657:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2647:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2542:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2553:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2565:6:15",
"type": ""
}
],
"src": "2506:186:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2798:76:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2808:26:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2820:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2831:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2816:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2816:18:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2808:4:15"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2850:9:15"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2861:6:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2843:6:15"
},
"nodeType": "YulFunctionCall",
"src": "2843:25:15"
},
"nodeType": "YulExpressionStatement",
"src": "2843:25:15"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2767:9:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2778:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2789:4:15",
"type": ""
}
],
"src": "2697:177:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2963:263:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3009:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3018:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3021:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3011:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3011:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "3011:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2984:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2993:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2980:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2980:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3005:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2976:3:15"
},
"nodeType": "YulFunctionCall",
"src": "2976:32:15"
},
"nodeType": "YulIf",
"src": "2973:52:15"
},
{
"nodeType": "YulAssignment",
"src": "3034:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3063:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "3044:18:15"
},
"nodeType": "YulFunctionCall",
"src": "3044:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3034:6:15"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3082:45:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3112:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3123:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3108:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3108:18:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3095:12:15"
},
"nodeType": "YulFunctionCall",
"src": "3095:32:15"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3086:5:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3180:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3189:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3192:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3182:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3182:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "3182:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3149:5:15"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3170:5:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3163:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3163:13:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3156:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3156:21:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3146:2:15"
},
"nodeType": "YulFunctionCall",
"src": "3146:32:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3139:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3139:40:15"
},
"nodeType": "YulIf",
"src": "3136:60:15"
},
{
"nodeType": "YulAssignment",
"src": "3205:15:15",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3215:5:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3205:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2921:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2932:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2944:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2952:6:15",
"type": ""
}
],
"src": "2879:347:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3263:95:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3280:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3287:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3292:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3283:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3283:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3273:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3273:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "3273:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3320:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3323:4:15",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3313:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3313:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "3313:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3344:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3347:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3337:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3337:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "3337:15:15"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3231:127:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3493:1008:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3540:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3549:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3552:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3542:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3542:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "3542:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3514:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3523:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3510:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3510:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3535:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3506:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3506:33:15"
},
"nodeType": "YulIf",
"src": "3503:53:15"
},
{
"nodeType": "YulAssignment",
"src": "3565:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3594:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "3575:18:15"
},
"nodeType": "YulFunctionCall",
"src": "3575:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3565:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3613:48:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3646:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3657:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3642:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3642:18:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "3623:18:15"
},
"nodeType": "YulFunctionCall",
"src": "3623:38:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3613:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3670:42:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3697:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3708:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3693:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3693:18:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3680:12:15"
},
"nodeType": "YulFunctionCall",
"src": "3680:32:15"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3670:6:15"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3721:46:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3752:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3763:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3748:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3748:18:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3735:12:15"
},
"nodeType": "YulFunctionCall",
"src": "3735:32:15"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3725:6:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3776:28:15",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3786:18:15",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "3780:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3831:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3840:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3843:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3833:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3833:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "3833:12:15"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3819:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3827:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3816:2:15"
},
"nodeType": "YulFunctionCall",
"src": "3816:14:15"
},
"nodeType": "YulIf",
"src": "3813:34:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3856:32:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3870:9:15"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3881:6:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3866:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3866:22:15"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "3860:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3936:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3945:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3948:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3938:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3938:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "3938:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "3915:2:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3919:4:15",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3911:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3911:13:15"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3926:7:15"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3907:3:15"
},
"nodeType": "YulFunctionCall",
"src": "3907:27:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3900:6:15"
},
"nodeType": "YulFunctionCall",
"src": "3900:35:15"
},
"nodeType": "YulIf",
"src": "3897:55:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3961:26:15",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "3984:2:15"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3971:12:15"
},
"nodeType": "YulFunctionCall",
"src": "3971:16:15"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "3965:2:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4010:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "4012:16:15"
},
"nodeType": "YulFunctionCall",
"src": "4012:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "4012:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4002:2:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4006:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3999:2:15"
},
"nodeType": "YulFunctionCall",
"src": "3999:10:15"
},
"nodeType": "YulIf",
"src": "3996:36:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4041:17:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4055:2:15",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4051:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4051:7:15"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "4045:2:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4067:23:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4087:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4081:5:15"
},
"nodeType": "YulFunctionCall",
"src": "4081:9:15"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "4071:6:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4099:71:15",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4121:6:15"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4145:2:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4149:4:15",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4141:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4141:13:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "4156:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4137:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4137:22:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4161:2:15",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4133:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4133:31:15"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "4166:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4129:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4129:40:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4117:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4117:53:15"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "4103:10:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4229:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "4231:16:15"
},
"nodeType": "YulFunctionCall",
"src": "4231:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "4231:18:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "4188:10:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4200:2:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4185:2:15"
},
"nodeType": "YulFunctionCall",
"src": "4185:18:15"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "4208:10:15"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4220:6:15"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4205:2:15"
},
"nodeType": "YulFunctionCall",
"src": "4205:22:15"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "4182:2:15"
},
"nodeType": "YulFunctionCall",
"src": "4182:46:15"
},
"nodeType": "YulIf",
"src": "4179:72:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4267:2:15",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "4271:10:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4260:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4260:22:15"
},
"nodeType": "YulExpressionStatement",
"src": "4260:22:15"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4298:6:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4306:2:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4291:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4291:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "4291:18:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4355:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4364:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4367:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4357:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4357:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "4357:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4332:2:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4336:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4328:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4328:11:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4341:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4324:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4324:20:15"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4346:7:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4321:2:15"
},
"nodeType": "YulFunctionCall",
"src": "4321:33:15"
},
"nodeType": "YulIf",
"src": "4318:53:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4397:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4405:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4393:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4393:15:15"
},
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4414:2:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4418:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4410:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4410:11:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4423:2:15"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "4380:12:15"
},
"nodeType": "YulFunctionCall",
"src": "4380:46:15"
},
"nodeType": "YulExpressionStatement",
"src": "4380:46:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4450:6:15"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4458:2:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4446:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4446:15:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4463:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4442:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4442:24:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4468:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4435:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4435:35:15"
},
"nodeType": "YulExpressionStatement",
"src": "4435:35:15"
},
{
"nodeType": "YulAssignment",
"src": "4479:16:15",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4489:6:15"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "4479:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3435:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3446:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3458:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3466:6:15",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3474:6:15",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3482:6:15",
"type": ""
}
],
"src": "3363:1138:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4593:173:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4639:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4648:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4651:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4641:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4641:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "4641:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4614:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4623:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4610:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4610:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4635:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4606:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4606:32:15"
},
"nodeType": "YulIf",
"src": "4603:52:15"
},
{
"nodeType": "YulAssignment",
"src": "4664:39:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4693:9:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "4674:18:15"
},
"nodeType": "YulFunctionCall",
"src": "4674:29:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4664:6:15"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4712:48:15",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4745:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4756:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4741:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4741:18:15"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "4722:18:15"
},
"nodeType": "YulFunctionCall",
"src": "4722:38:15"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4712:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4551:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4562:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4574:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "4582:6:15",
"type": ""
}
],
"src": "4506:260:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4826:325:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4836:22:15",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4850:1:15",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4853:4:15"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4846:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4846:12:15"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4836:6:15"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4867:38:15",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4897:4:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4903:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4893:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4893:12:15"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "4871:18:15",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4944:31:15",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4946:27:15",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4960:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4968:4:15",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4956:3:15"
},
"nodeType": "YulFunctionCall",
"src": "4956:17:15"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4946:6:15"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "4924:18:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4917:6:15"
},
"nodeType": "YulFunctionCall",
"src": "4917:26:15"
},
"nodeType": "YulIf",
"src": "4914:61:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5034:111:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5055:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5062:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5067:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "5058:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5058:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5048:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5048:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "5048:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5099:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5102:4:15",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5092:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5092:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "5092:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5127:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5130:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5120:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5120:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "5120:15:15"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "4990:18:15"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5013:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5021:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5010:2:15"
},
"nodeType": "YulFunctionCall",
"src": "5010:14:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4987:2:15"
},
"nodeType": "YulFunctionCall",
"src": "4987:38:15"
},
"nodeType": "YulIf",
"src": "4984:161:15"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4806:4:15",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4815:6:15",
"type": ""
}
],
"src": "4771:380:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5330:234:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5347:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5358:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5340:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5340:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "5340:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5381:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5392:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5377:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5377:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5397:2:15",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5370:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5370:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "5370:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5420:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5431:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5416:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5416:18:15"
},
{
"hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5436:34:15",
"type": "",
"value": "ERC721: approved query for nonex"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5409:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5409:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "5409:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5491:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5502:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5487:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5487:18:15"
},
{
"hexValue": "697374656e7420746f6b656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5507:14:15",
"type": "",
"value": "istent token"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5480:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5480:42:15"
},
"nodeType": "YulExpressionStatement",
"src": "5480:42:15"
},
{
"nodeType": "YulAssignment",
"src": "5531:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5543:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5554:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5539:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5539:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5531:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5307:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5321:4:15",
"type": ""
}
],
"src": "5156:408:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5743:223:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5760:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5771:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5753:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5753:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "5753:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5794:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5805:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5790:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5790:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5810:2:15",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5783:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5783:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "5783:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5833:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5844:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5829:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5829:18:15"
},
{
"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5849:34:15",
"type": "",
"value": "ERC721: approval to current owne"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5822:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5822:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "5822:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5904:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5915:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5900:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5900:18:15"
},
{
"hexValue": "72",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5920:3:15",
"type": "",
"value": "r"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5893:6:15"
},
"nodeType": "YulFunctionCall",
"src": "5893:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "5893:31:15"
},
{
"nodeType": "YulAssignment",
"src": "5933:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5945:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5956:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5941:3:15"
},
"nodeType": "YulFunctionCall",
"src": "5941:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5933:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5720:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5734:4:15",
"type": ""
}
],
"src": "5569:397:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6145:246:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6162:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6173:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6155:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6155:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "6155:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6196:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6207:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6192:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6192:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6212:2:15",
"type": "",
"value": "56"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6185:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6185:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "6185:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6235:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6246:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6231:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6231:18:15"
},
{
"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6251:34:15",
"type": "",
"value": "ERC721: approve caller is not ow"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6224:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6224:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "6224:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6306:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6317:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6302:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6302:18:15"
},
{
"hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6322:26:15",
"type": "",
"value": "ner nor approved for all"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6295:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6295:54:15"
},
"nodeType": "YulExpressionStatement",
"src": "6295:54:15"
},
{
"nodeType": "YulAssignment",
"src": "6358:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6370:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6381:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6366:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6366:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6358:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6122:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6136:4:15",
"type": ""
}
],
"src": "5971:420:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6570:239:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6587:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6598:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6580:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6580:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "6580:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6621:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6632:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6617:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6617:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6637:2:15",
"type": "",
"value": "49"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6610:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6610:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "6610:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6660:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6671:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6656:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6656:18:15"
},
{
"hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6676:34:15",
"type": "",
"value": "ERC721: transfer caller is not o"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6649:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6649:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "6649:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6731:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6742:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6727:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6727:18:15"
},
{
"hexValue": "776e6572206e6f7220617070726f766564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6747:19:15",
"type": "",
"value": "wner nor approved"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6720:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6720:47:15"
},
"nodeType": "YulExpressionStatement",
"src": "6720:47:15"
},
{
"nodeType": "YulAssignment",
"src": "6776:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6788:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6799:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6784:3:15"
},
"nodeType": "YulFunctionCall",
"src": "6784:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6776:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6547:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6561:4:15",
"type": ""
}
],
"src": "6396:413:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6988:231:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7005:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7016:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6998:6:15"
},
"nodeType": "YulFunctionCall",
"src": "6998:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "6998:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7039:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7050:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7035:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7035:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7055:2:15",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7028:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7028:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "7028:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7078:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7089:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7074:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7074:18:15"
},
{
"hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7094:34:15",
"type": "",
"value": "ERC721: owner query for nonexist"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7067:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7067:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "7067:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7149:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7160:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7145:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7145:18:15"
},
{
"hexValue": "656e7420746f6b656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7165:11:15",
"type": "",
"value": "ent token"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7138:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7138:39:15"
},
"nodeType": "YulExpressionStatement",
"src": "7138:39:15"
},
{
"nodeType": "YulAssignment",
"src": "7186:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7198:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7209:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7194:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7194:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7186:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6965:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6979:4:15",
"type": ""
}
],
"src": "6814:405:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7398:232:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7415:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7426:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7408:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7408:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "7408:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7449:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7460:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7445:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7445:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7465:2:15",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7438:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7438:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "7438:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7488:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7499:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7484:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7484:18:15"
},
{
"hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7504:34:15",
"type": "",
"value": "ERC721: balance query for the ze"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7477:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7477:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "7477:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7559:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7570:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7555:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7555:18:15"
},
{
"hexValue": "726f2061646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7575:12:15",
"type": "",
"value": "ro address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7548:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7548:40:15"
},
"nodeType": "YulExpressionStatement",
"src": "7548:40:15"
},
{
"nodeType": "YulAssignment",
"src": "7597:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7609:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7620:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7605:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7605:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7597:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7375:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7389:4:15",
"type": ""
}
],
"src": "7224:406:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7809:237:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7826:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7837:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7819:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7819:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "7819:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7860:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7871:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7856:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7856:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7876:2:15",
"type": "",
"value": "47"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7849:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7849:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "7849:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7899:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7910:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7895:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7895:18:15"
},
{
"hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7915:34:15",
"type": "",
"value": "ERC721Metadata: URI query for no"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7888:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7888:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "7888:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7970:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7981:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7966:3:15"
},
"nodeType": "YulFunctionCall",
"src": "7966:18:15"
},
{
"hexValue": "6e6578697374656e7420746f6b656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7986:17:15",
"type": "",
"value": "nexistent token"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7959:6:15"
},
"nodeType": "YulFunctionCall",
"src": "7959:45:15"
},
"nodeType": "YulExpressionStatement",
"src": "7959:45:15"
},
{
"nodeType": "YulAssignment",
"src": "8013:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8025:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8036:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8021:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8021:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8013:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7786:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7800:4:15",
"type": ""
}
],
"src": "7635:411:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8238:283:15",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8248:27:15",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8268:6:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "8262:5:15"
},
"nodeType": "YulFunctionCall",
"src": "8262:13:15"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8252:6:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8310:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8318:4:15",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8306:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8306:17:15"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8325:3:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8330:6:15"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "8284:21:15"
},
"nodeType": "YulFunctionCall",
"src": "8284:53:15"
},
"nodeType": "YulExpressionStatement",
"src": "8284:53:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "8346:29:15",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8363:3:15"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8368:6:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8359:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8359:16:15"
},
"variables": [
{
"name": "end_1",
"nodeType": "YulTypedName",
"src": "8350:5:15",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8384:29:15",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8406:6:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "8400:5:15"
},
"nodeType": "YulFunctionCall",
"src": "8400:13:15"
},
"variables": [
{
"name": "length_1",
"nodeType": "YulTypedName",
"src": "8388:8:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8448:6:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8456:4:15",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8444:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8444:17:15"
},
{
"name": "end_1",
"nodeType": "YulIdentifier",
"src": "8463:5:15"
},
{
"name": "length_1",
"nodeType": "YulIdentifier",
"src": "8470:8:15"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "8422:21:15"
},
"nodeType": "YulFunctionCall",
"src": "8422:57:15"
},
"nodeType": "YulExpressionStatement",
"src": "8422:57:15"
},
{
"nodeType": "YulAssignment",
"src": "8488:27:15",
"value": {
"arguments": [
{
"name": "end_1",
"nodeType": "YulIdentifier",
"src": "8499:5:15"
},
{
"name": "length_1",
"nodeType": "YulIdentifier",
"src": "8506:8:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8495:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8495:20:15"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8488:3:15"
}
]
}
]
},
"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": "8206:3:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8211:6:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8219:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8230:3:15",
"type": ""
}
],
"src": "8051:470:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8700:234:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8717:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8728:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8710:6:15"
},
"nodeType": "YulFunctionCall",
"src": "8710:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "8710:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8751:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8762:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8747:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8747:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8767:2:15",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8740:6:15"
},
"nodeType": "YulFunctionCall",
"src": "8740:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "8740:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8790:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8801:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8786:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8786:18:15"
},
{
"hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8806:34:15",
"type": "",
"value": "ERC721: operator query for nonex"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8779:6:15"
},
"nodeType": "YulFunctionCall",
"src": "8779:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "8779:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8861:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8872:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8857:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8857:18:15"
},
{
"hexValue": "697374656e7420746f6b656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8877:14:15",
"type": "",
"value": "istent token"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8850:6:15"
},
"nodeType": "YulFunctionCall",
"src": "8850:42:15"
},
"nodeType": "YulExpressionStatement",
"src": "8850:42:15"
},
{
"nodeType": "YulAssignment",
"src": "8901:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8913:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8924:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8909:3:15"
},
"nodeType": "YulFunctionCall",
"src": "8909:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8901:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8677:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8691:4:15",
"type": ""
}
],
"src": "8526:408:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9113:231:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9130:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9141:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9123:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9123:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "9123:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9164:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9175:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9160:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9160:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9180:2:15",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9153:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9153:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "9153:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9203:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9214:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9199:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9199:18:15"
},
{
"hexValue": "4552433732313a207472616e73666572206f6620746f6b656e20746861742069",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9219:34:15",
"type": "",
"value": "ERC721: transfer of token that i"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9192:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9192:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "9192:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9274:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9285:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9270:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9270:18:15"
},
{
"hexValue": "73206e6f74206f776e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9290:11:15",
"type": "",
"value": "s not own"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9263:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9263:39:15"
},
"nodeType": "YulExpressionStatement",
"src": "9263:39:15"
},
{
"nodeType": "YulAssignment",
"src": "9311:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9323:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9334:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9319:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9319:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9311:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9090:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9104:4:15",
"type": ""
}
],
"src": "8939:405:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9523:226:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9540:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9551:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9533:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9533:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "9533:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9574:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9585:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9570:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9570:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9590:2:15",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9563:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9563:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "9563:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9613:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9624:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9609:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9609:18:15"
},
{
"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9629:34:15",
"type": "",
"value": "ERC721: transfer to the zero add"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9602:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9602:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "9602:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9684:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9695:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9680:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9680:18:15"
},
{
"hexValue": "72657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9700:6:15",
"type": "",
"value": "ress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9673:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9673:34:15"
},
"nodeType": "YulExpressionStatement",
"src": "9673:34:15"
},
{
"nodeType": "YulAssignment",
"src": "9716:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9728:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9739:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9724:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9724:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9716:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9500:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9514:4:15",
"type": ""
}
],
"src": "9349:400:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9786:95:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9803:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9810:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9815:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "9806:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9806:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9796:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9796:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "9796:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9843:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9846:4:15",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9836:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9836:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "9836:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9867:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9870:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9860:6:15"
},
"nodeType": "YulFunctionCall",
"src": "9860:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "9860:15:15"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "9754:127:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9935:76:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9957:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9959:16:15"
},
"nodeType": "YulFunctionCall",
"src": "9959:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "9959:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9951:1:15"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9954:1:15"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "9948:2:15"
},
"nodeType": "YulFunctionCall",
"src": "9948:8:15"
},
"nodeType": "YulIf",
"src": "9945:34:15"
},
{
"nodeType": "YulAssignment",
"src": "9988:17:15",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10000:1:15"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10003:1:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9996:3:15"
},
"nodeType": "YulFunctionCall",
"src": "9996:9:15"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "9988:4:15"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "9917:1:15",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "9920:1:15",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "9926:4:15",
"type": ""
}
],
"src": "9886:125:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10064:80:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "10091:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "10093:16:15"
},
"nodeType": "YulFunctionCall",
"src": "10093:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "10093:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10080:1:15"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10087:1:15"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "10083:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10083:6:15"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10077:2:15"
},
"nodeType": "YulFunctionCall",
"src": "10077:13:15"
},
"nodeType": "YulIf",
"src": "10074:39:15"
},
{
"nodeType": "YulAssignment",
"src": "10122:16:15",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10133:1:15"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10136:1:15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10129:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10129:9:15"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "10122:3:15"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "10047:1:15",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "10050:1:15",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "10056:3:15",
"type": ""
}
],
"src": "10016:128:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10323:175:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10340:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10351:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10333:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10333:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "10333:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10374:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10385:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10370:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10370:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10390:2:15",
"type": "",
"value": "25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10363:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10363:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "10363:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10413:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10424:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10409:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10409:18:15"
},
{
"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10429:27:15",
"type": "",
"value": "ERC721: approve to caller"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10402:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10402:55:15"
},
"nodeType": "YulExpressionStatement",
"src": "10402:55:15"
},
{
"nodeType": "YulAssignment",
"src": "10466:26:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10478:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10489:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10474:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10474:18:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10466:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10300:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10314:4:15",
"type": ""
}
],
"src": "10149:349:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10677:240:15",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10694:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10705:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10687:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10687:21:15"
},
"nodeType": "YulExpressionStatement",
"src": "10687:21:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10728:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10739:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10724:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10724:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10744:2:15",
"type": "",
"value": "50"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10717:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10717:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "10717:30:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10767:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10778:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10763:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10763:18:15"
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10783:34:15",
"type": "",
"value": "ERC721: transfer to non ERC721Re"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10756:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10756:62:15"
},
"nodeType": "YulExpressionStatement",
"src": "10756:62:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10838:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10849:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10834:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10834:18:15"
},
{
"hexValue": "63656976657220696d706c656d656e746572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "10854:20:15",
"type": "",
"value": "ceiver implementer"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10827:6:15"
},
"nodeType": "YulFunctionCall",
"src": "10827:48:15"
},
"nodeType": "YulExpressionStatement",
"src": "10827:48:15"
},
{
"nodeType": "YulAssignment",
"src": "10884:27:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10896:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10907:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10892:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10892:19:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10884:4:15"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10654:9:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10668:4:15",
"type": ""
}
],
"src": "10503:414:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10969:88:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11000:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "11002:16:15"
},
"nodeType": "YulFunctionCall",
"src": "11002:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "11002:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10985:5:15"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10996:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "10992:3:15"
},
"nodeType": "YulFunctionCall",
"src": "10992:6:15"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "10982:2:15"
},
"nodeType": "YulFunctionCall",
"src": "10982:17:15"
},
"nodeType": "YulIf",
"src": "10979:43:15"
},
{
"nodeType": "YulAssignment",
"src": "11031:20:15",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11042:5:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11049:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11038:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11038:13:15"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "11031:3:15"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10951:5:15",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "10961:3:15",
"type": ""
}
],
"src": "10922:135:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11094:95:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11111:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11118:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11123:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11114:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11114:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11104:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11104:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "11104:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11151:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11154:4:15",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11144:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11144:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "11144:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11175:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11178:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11168:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11168:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "11168:15:15"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "11062:127:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11240:74:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11263:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "11265:16:15"
},
"nodeType": "YulFunctionCall",
"src": "11265:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "11265:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11260:1:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11253:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11253:9:15"
},
"nodeType": "YulIf",
"src": "11250:35:15"
},
{
"nodeType": "YulAssignment",
"src": "11294:14:15",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11303:1:15"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11306:1:15"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "11299:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11299:9:15"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "11294:1:15"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11225:1:15",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11228:1:15",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "11234:1:15",
"type": ""
}
],
"src": "11194:120:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11357:74:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11380:22:15",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "11382:16:15"
},
"nodeType": "YulFunctionCall",
"src": "11382:18:15"
},
"nodeType": "YulExpressionStatement",
"src": "11382:18:15"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11377:1:15"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11370:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11370:9:15"
},
"nodeType": "YulIf",
"src": "11367:35:15"
},
{
"nodeType": "YulAssignment",
"src": "11411:14:15",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "11420:1:15"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "11423:1:15"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "11416:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11416:9:15"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "11411:1:15"
}
]
}
]
},
"name": "mod_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "11342:1:15",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "11345:1:15",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "11351:1:15",
"type": ""
}
],
"src": "11319:112:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11468:95:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11485:1:15",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11492:3:15",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11497:10:15",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11488:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11488:20:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11478:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11478:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "11478:31:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11525:1:15",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11528:4:15",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11518:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11518:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "11518:15:15"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11549:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11552:4:15",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11542:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11542:15:15"
},
"nodeType": "YulExpressionStatement",
"src": "11542:15:15"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "11436:127:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11771:286:15",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11781:29:15",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11799:3:15",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11804:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11795:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11795:11:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11808:1:15",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11791:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11791:19:15"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "11785:2:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11826:9:15"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11841:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "11849:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11837:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11837:15:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11819:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11819:34:15"
},
"nodeType": "YulExpressionStatement",
"src": "11819:34:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11873:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11884:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11869:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11869:18:15"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11893:6:15"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "11901:2:15"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11889:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11889:15:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11862:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11862:43:15"
},
"nodeType": "YulExpressionStatement",
"src": "11862:43:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11925:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11936:2:15",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11921:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11921:18:15"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11941:6:15"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11914:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11914:34:15"
},
"nodeType": "YulExpressionStatement",
"src": "11914:34:15"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11968:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11979:2:15",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11964:3:15"
},
"nodeType": "YulFunctionCall",
"src": "11964:18:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11984:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11957:6:15"
},
"nodeType": "YulFunctionCall",
"src": "11957:31:15"
},
"nodeType": "YulExpressionStatement",
"src": "11957:31:15"
},
{
"nodeType": "YulAssignment",
"src": "11997:54:15",
"value": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "12023:6:15"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12035:9:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12046:3:15",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12031:3:15"
},
"nodeType": "YulFunctionCall",
"src": "12031:19:15"
}
],
"functionName": {
"name": "abi_encode_string",
"nodeType": "YulIdentifier",
"src": "12005:17:15"
},
"nodeType": "YulFunctionCall",
"src": "12005:46:15"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11997:4:15"
}
]
}
]
},
"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": "11716:9:15",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "11727:6:15",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11735:6:15",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11743:6:15",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11751:6:15",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11762:4:15",
"type": ""
}
],
"src": "11568:489:15"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12142:169:15",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12188:16:15",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12197:1:15",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12200:1:15",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12190:6:15"
},
"nodeType": "YulFunctionCall",
"src": "12190:12:15"
},
"nodeType": "YulExpressionStatement",
"src": "12190:12:15"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "12163:7:15"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12172:9:15"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "12159:3:15"
},
"nodeType": "YulFunctionCall",
"src": "12159:23:15"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12184:2:15",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "12155:3:15"
},
"nodeType": "YulFunctionCall",
"src": "12155:32:15"
},
"nodeType": "YulIf",
"src": "12152:52:15"
},
{
"nodeType": "YulVariableDeclaration",
"src": "12213:29:15",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12232:9:15"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12226:5:15"
},
"nodeType": "YulFunctionCall",
"src": "12226:16:15"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12217:5:15",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12275:5:15"
}
],
"functionName": {
"name": "validator_revert_bytes4",
"nodeType": "YulIdentifier",
"src": "12251:23:15"
},
"nodeType": "YulFunctionCall",
"src": "12251:30:15"
},
"nodeType": "YulExpressionStatement",
"src": "12251:30:15"
},
{
"nodeType": "YulAssignment",
"src": "12290:15:15",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "12300:5:15"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12290:6:15"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12108:9:15",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "12119:7:15",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12131:6:15",
"type": ""
}
],
"src": "12062:249:15"
}
]
},
"contents": "{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory(src, dst, length)\n {\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) { mstore(add(dst, length), 0) }\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n mstore(add(headStart, 96), \"istent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n mstore(add(headStart, 96), \"ner nor approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 49)\n mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n mstore(add(headStart, 96), \"wner nor approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: owner query for nonexist\")\n mstore(add(headStart, 96), \"ent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n mstore(add(headStart, 96), \"ro address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n mstore(add(headStart, 96), \"nexistent token\")\n tail := add(headStart, 128)\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 let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"ERC721: operator query for nonex\")\n mstore(add(headStart, 96), \"istent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: transfer of token that i\")\n mstore(add(headStart, 96), \"s not own\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\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 {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}",
"id": 15,
"language": "Yul",
"name": "#utility.yul"
}
],
"sourceMap": "613:13006:1:-:0;;;1375:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1441:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1464:17:1;;;;:7;;:17;;;;;:::i;:::-;;1375:113;;613:13006;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;613:13006:1;;;-1:-1:-1;613:13006:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:15;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:15;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:15;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:15:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:15;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;613:13006:1;;;;;;",
"deployedSourceMap": "613:13006:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1555:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:15;;558:22;540:41;;528:2;513:18;1555:300:1;;;;;;;;2473:98;;;:::i;:::-;;;;;;;:::i;3984:217::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:15;;;1674:51;;1662:2;1647:18;3984:217:1;1528:203:15;3522:401:1;;;;;;:::i;:::-;;:::i;:::-;;4711:330;;;;;;:::i;:::-;;:::i;5107:179::-;;;;;;:::i;:::-;;:::i;2176:235::-;;;;;;:::i;:::-;;:::i;1914:205::-;;;;;;:::i;:::-;;:::i;:::-;;;2843:25:15;;;2831:2;2816:18;1914:205:1;2697:177:15;2635:102:1;;;:::i;4268:153::-;;;;;;:::i;:::-;;:::i;5352:320::-;;;;;;:::i;:::-;;:::i;2803:329::-;;;;;;:::i;:::-;;:::i;4487:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4607:25:1;;;4584:4;4607:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4487:162;1555:300;1657:4;-1:-1:-1;;;;;;1692:40:1;;-1:-1:-1;;;1692:40:1;;:104;;-1:-1:-1;;;;;;;1748:48:1;;-1:-1:-1;;;1748:48:1;1692:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:10;;;1812:36:1;1673:175;1555:300;-1:-1:-1;;1555:300:1:o;2473:98::-;2527:13;2559:5;2552:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:98;:::o;3984:217::-;4060:7;7232:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7232:16:1;4079:73;;;;-1:-1:-1;;;4079:73:1;;5358:2:15;4079:73:1;;;5340:21:15;5397:2;5377:18;;;5370:30;5436:34;5416:18;;;5409:62;-1:-1:-1;;;5487:18:15;;;5480:42;5539:19;;4079:73:1;;;;;;;;;-1:-1:-1;4170:24:1;;;;:15;:24;;;;;;-1:-1:-1;;;;;4170:24:1;;3984:217::o;3522:401::-;3602:13;3618:23;3633:7;3618:14;:23::i;:::-;3602:39;;3665:5;-1:-1:-1;;;;;3659:11:1;:2;-1:-1:-1;;;;;3659:11:1;;;3651:57;;;;-1:-1:-1;;;3651:57:1;;5771:2:15;3651:57:1;;;5753:21:15;5810:2;5790:18;;;5783:30;5849:34;5829:18;;;5822:62;-1:-1:-1;;;5900:18:15;;;5893:31;5941:19;;3651:57:1;5569:397:15;3651:57:1;719:10:7;-1:-1:-1;;;;;3740:21:1;;;;:62;;-1:-1:-1;3765:37:1;3782:5;719:10:7;4487:162:1;:::i;3765:37::-;3719:165;;;;-1:-1:-1;;;3719:165:1;;6173:2:15;3719:165:1;;;6155:21:15;6212:2;6192:18;;;6185:30;6251:34;6231:18;;;6224:62;6322:26;6302:18;;;6295:54;6366:19;;3719:165:1;5971:420:15;3719:165:1;3895:21;3904:2;3908:7;3895:8;:21::i;:::-;3592:331;3522:401;;:::o;4711:330::-;4900:41;719:10:7;4933:7:1;4900:18;:41::i;:::-;4892:103;;;;-1:-1:-1;;;4892:103:1;;;;;;;:::i;:::-;5006:28;5016:4;5022:2;5026:7;5006:9;:28::i;5107:179::-;5240:39;5257:4;5263:2;5267:7;5240:39;;;;;;;;;;;;:16;:39::i;2176:235::-;2248:7;2283:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2283:16:1;2317:19;2309:73;;;;-1:-1:-1;;;2309:73:1;;7016:2:15;2309:73:1;;;6998:21:15;7055:2;7035:18;;;7028:30;7094:34;7074:18;;;7067:62;-1:-1:-1;;;7145:18:15;;;7138:39;7194:19;;2309:73:1;6814:405:15;1914:205:1;1986:7;-1:-1:-1;;;;;2013:19:1;;2005:74;;;;-1:-1:-1;;;2005:74:1;;7426:2:15;2005:74:1;;;7408:21:15;7465:2;7445:18;;;7438:30;7504:34;7484:18;;;7477:62;-1:-1:-1;;;7555:18:15;;;7548:40;7605:19;;2005:74:1;7224:406:15;2005:74:1;-1:-1:-1;;;;;;2096:16:1;;;;;:9;:16;;;;;;;1914:205::o;2635:102::-;2691:13;2723:7;2716:14;;;;;:::i;4268:153::-;4362:52;719:10:7;4395:8:1;4405;4362:18;:52::i;:::-;4268:153;;:::o;5352:320::-;5521:41;719:10:7;5554:7:1;5521:18;:41::i;:::-;5513:103;;;;-1:-1:-1;;;5513:103:1;;;;;;;:::i;:::-;5626:39;5640:4;5646:2;5650:7;5659:5;5626:13;:39::i;:::-;5352:320;;;;:::o;2803:329::-;7209:4;7232:16;;;:7;:16;;;;;;2876:13;;-1:-1:-1;;;;;7232:16:1;2901:76;;;;-1:-1:-1;;;2901:76:1;;7837:2:15;2901:76:1;;;7819:21:15;7876:2;7856:18;;;7849:30;7915:34;7895:18;;;7888:62;-1:-1:-1;;;7966:18:15;;;7959:45;8021:19;;2901:76:1;7635:411:15;2901:76:1;2988:21;3012:10;3449:9;;;;;;;;;-1:-1:-1;3449:9:1;;;3373:92;3012:10;2988:34;;3063:1;3045:7;3039:21;:25;:86;;;;;;;;;;;;;;;;;3091:7;3100:18;:7;:16;:18::i;:::-;3074:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3039:86;3032:93;2803:329;-1:-1:-1;;;2803:329:1:o;10995:171::-;11069:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11069:29:1;-1:-1:-1;;;;;11069:29:1;;;;;;;;:24;;11122:23;11069:24;11122:14;:23::i;:::-;-1:-1:-1;;;;;11113:46:1;;;;;;;;;;;10995:171;;:::o;7427:344::-;7520:4;7232:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7232:16:1;7536:73;;;;-1:-1:-1;;;7536:73:1;;8728:2:15;7536:73:1;;;8710:21:15;8767:2;8747:18;;;8740:30;8806:34;8786:18;;;8779:62;-1:-1:-1;;;8857:18:15;;;8850:42;8909:19;;7536:73:1;8526:408:15;7536:73:1;7619:13;7635:23;7650:7;7635:14;:23::i;:::-;7619:39;;7687:5;-1:-1:-1;;;;;7676:16:1;:7;-1:-1:-1;;;;;7676:16:1;;:51;;;;7720:7;-1:-1:-1;;;;;7696:31:1;:20;7708:7;7696:11;:20::i;:::-;-1:-1:-1;;;;;7696:31:1;;7676:51;:87;;;-1:-1:-1;;;;;;4607:25:1;;;4584:4;4607:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7731:32;7668:96;7427:344;-1:-1:-1;;;;7427:344:1:o;10324:560::-;10478:4;-1:-1:-1;;;;;10451:31:1;:23;10466:7;10451:14;:23::i;:::-;-1:-1:-1;;;;;10451:31:1;;10443:85;;;;-1:-1:-1;;;10443:85:1;;9141:2:15;10443:85:1;;;9123:21:15;9180:2;9160:18;;;9153:30;9219:34;9199:18;;;9192:62;-1:-1:-1;;;9270:18:15;;;9263:39;9319:19;;10443:85:1;8939:405:15;10443:85:1;-1:-1:-1;;;;;10546:16:1;;10538:65;;;;-1:-1:-1;;;10538:65:1;;9551:2:15;10538:65:1;;;9533:21:15;9590:2;9570:18;;;9563:30;9629:34;9609:18;;;9602:62;-1:-1:-1;;;9680:18:15;;;9673:34;9724:19;;10538:65:1;9349:400:15;10538:65:1;10715:29;10732:1;10736:7;10715:8;:29::i;:::-;-1:-1:-1;;;;;10755:15:1;;;;;;:9;:15;;;;;:20;;10774:1;;10755:15;:20;;10774:1;;10755:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10785:13:1;;;;;;:9;:13;;;;;:18;;10802:1;;10785:13;:18;;10802:1;;10785:18;:::i;:::-;;;;-1:-1:-1;;10813:16:1;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10813:21:1;-1:-1:-1;;;;;10813:21:1;;;;;;;;;10850:27;;10813:16;;10850:27;;;;;;;10324:560;;;:::o;11301:307::-;11451:8;-1:-1:-1;;;;;11442:17:1;:5;-1:-1:-1;;;;;11442:17:1;;;11434:55;;;;-1:-1:-1;;;11434:55:1;;10351:2:15;11434:55:1;;;10333:21:15;10390:2;10370:18;;;10363:30;10429:27;10409:18;;;10402:55;10474:18;;11434:55:1;10149:349:15;11434:55:1;-1:-1:-1;;;;;11499:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11499:46:1;;;;;;;;;;11560:41;;540::15;;;11560::1;;513:18:15;11560:41:1;;;;;;;11301:307;;;:::o;6534:::-;6685:28;6695:4;6701:2;6705:7;6685:9;:28::i;:::-;6731:48;6754:4;6760:2;6764:7;6773:5;6731:22;:48::i;:::-;6723:111;;;;-1:-1:-1;;;6723:111:1;;;;;;;:::i;328:703:9:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:9;;;;;;;;;;;;-1:-1:-1;;;627:10:9;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:9;;-1:-1:-1;773:2:9;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:9;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:9;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:9;;;;;;;;-1:-1:-1;972:11:9;981:2;972:11;;:::i;:::-;;;844:150;;12161:778:1;12311:4;-1:-1:-1;;;;;12331:13:1;;1087:20:6;1133:8;12327:606:1;;12366:72;;-1:-1:-1;;;12366:72:1;;-1:-1:-1;;;;;12366:36:1;;;;;:72;;719:10:7;;12417:4:1;;12423:7;;12432:5;;12366:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12366:72:1;;;;;;;;-1:-1:-1;;12366:72:1;;;;;;;;;;;;:::i;:::-;;;12362:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12605:13:1;;12601:266;;12647:60;;-1:-1:-1;;;12647:60:1;;;;;;;:::i;12601:266::-;12819:6;12813:13;12804:6;12800:2;12796:15;12789:38;12362:519;-1:-1:-1;;;;;;12488:51:1;-1:-1:-1;;;12488:51:1;;-1:-1:-1;12481:58:1;;12327:606;-1:-1:-1;12918:4:1;12161:778;;;;;;:::o;14:131:15:-;-1:-1:-1;;;;;;88:32:15;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:15;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:15;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:15:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:15;;1343:180;-1:-1:-1;1343:180:15:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:15;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:15:o;2173:328::-;2250:6;2258;2266;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:29;2377:9;2358:29;:::i;:::-;2348:39;;2406:38;2440:2;2429:9;2425:18;2406:38;:::i;:::-;2396:48;;2491:2;2480:9;2476:18;2463:32;2453:42;;2173:328;;;;;:::o;2506:186::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;2879:347::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;;3123:2;3112:9;3108:18;3095:32;3170:5;3163:13;3156:21;3149:5;3146:32;3136:60;;3192:1;3189;3182:12;3136:60;3215:5;3205:15;;;2879:347;;;;;:::o;3231:127::-;3292:10;3287:3;3283:20;3280:1;3273:31;3323:4;3320:1;3313:15;3347:4;3344:1;3337:15;3363:1138;3458:6;3466;3474;3482;3535:3;3523:9;3514:7;3510:23;3506:33;3503:53;;;3552:1;3549;3542:12;3503:53;3575:29;3594:9;3575:29;:::i;:::-;3565:39;;3623:38;3657:2;3646:9;3642:18;3623:38;:::i;:::-;3613:48;;3708:2;3697:9;3693:18;3680:32;3670:42;;3763:2;3752:9;3748:18;3735:32;3786:18;3827:2;3819:6;3816:14;3813:34;;;3843:1;3840;3833:12;3813:34;3881:6;3870:9;3866:22;3856:32;;3926:7;3919:4;3915:2;3911:13;3907:27;3897:55;;3948:1;3945;3938:12;3897:55;3984:2;3971:16;4006:2;4002;3999:10;3996:36;;;4012:18;;:::i;:::-;4087:2;4081:9;4055:2;4141:13;;-1:-1:-1;;4137:22:15;;;4161:2;4133:31;4129:40;4117:53;;;4185:18;;;4205:22;;;4182:46;4179:72;;;4231:18;;:::i;:::-;4271:10;4267:2;4260:22;4306:2;4298:6;4291:18;4346:7;4341:2;4336;4332;4328:11;4324:20;4321:33;4318:53;;;4367:1;4364;4357:12;4318:53;4423:2;4418;4414;4410:11;4405:2;4397:6;4393:15;4380:46;4468:1;4463:2;4458;4450:6;4446:15;4442:24;4435:35;4489:6;4479:16;;;;;;;3363:1138;;;;;;;:::o;4506:260::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4674:29;4693:9;4674:29;:::i;:::-;4664:39;;4722:38;4756:2;4745:9;4741:18;4722:38;:::i;:::-;4712:48;;4506:260;;;;;:::o;4771:380::-;4850:1;4846:12;;;;4893;;;4914:61;;4968:4;4960:6;4956:17;4946:27;;4914:61;5021:2;5013:6;5010:14;4990:18;4987:38;4984:161;;;5067:10;5062:3;5058:20;5055:1;5048:31;5102:4;5099:1;5092:15;5130:4;5127:1;5120:15;4984:161;;4771:380;;;:::o;6396:413::-;6598:2;6580:21;;;6637:2;6617:18;;;6610:30;6676:34;6671:2;6656:18;;6649:62;-1:-1:-1;;;6742:2:15;6727:18;;6720:47;6799:3;6784:19;;6396:413::o;8051:470::-;8230:3;8268:6;8262:13;8284:53;8330:6;8325:3;8318:4;8310:6;8306:17;8284:53;:::i;:::-;8400:13;;8359:16;;;;8422:57;8400:13;8359:16;8456:4;8444:17;;8422:57;:::i;:::-;8495:20;;8051:470;-1:-1:-1;;;;8051:470:15:o;9754:127::-;9815:10;9810:3;9806:20;9803:1;9796:31;9846:4;9843:1;9836:15;9870:4;9867:1;9860:15;9886:125;9926:4;9954:1;9951;9948:8;9945:34;;;9959:18;;:::i;:::-;-1:-1:-1;9996:9:15;;9886:125::o;10016:128::-;10056:3;10087:1;10083:6;10080:1;10077:13;10074:39;;;10093:18;;:::i;:::-;-1:-1:-1;10129:9:15;;10016:128::o;10503:414::-;10705:2;10687:21;;;10744:2;10724:18;;;10717:30;10783:34;10778:2;10763:18;;10756:62;-1:-1:-1;;;10849:2:15;10834:18;;10827:48;10907:3;10892:19;;10503:414::o;10922:135::-;10961:3;-1:-1:-1;;10982:17:15;;10979:43;;;11002:18;;:::i;:::-;-1:-1:-1;11049:1:15;11038:13;;10922:135::o;11062:127::-;11123:10;11118:3;11114:20;11111:1;11104:31;11154:4;11151:1;11144:15;11178:4;11175:1;11168:15;11194:120;11234:1;11260;11250:35;;11265:18;;:::i;:::-;-1:-1:-1;11299:9:15;;11194:120::o;11319:112::-;11351:1;11377;11367:35;;11382:18;;:::i;:::-;-1:-1:-1;11416:9:15;;11319:112::o;11436:127::-;11497:10;11492:3;11488:20;11485:1;11478:31;11528:4;11525:1;11518:15;11552:4;11549:1;11542:15;11568:489;-1:-1:-1;;;;;11837:15:15;;;11819:34;;11889:15;;11884:2;11869:18;;11862:43;11936:2;11921:18;;11914:34;;;11984:3;11979:2;11964:18;;11957:31;;;11762:4;;12005:46;;12031:19;;12023:6;12005:46;:::i;:::-;11997:54;11568:489;-1:-1:-1;;;;;;11568:489:15:o;12062:249::-;12131:6;12184:2;12172:9;12163:7;12159:23;12155:32;12152:52;;;12200:1;12197;12190:12;12152:52;12232:9;12226:16;12251:30;12275:5;12251:30;:::i",
"source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: balance query for the zero address\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: owner query for nonexistent token\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overriden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n _safeTransfer(from, to, tokenId, _data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory _data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, _data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits a {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits a {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n",
"sourcePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
"ast": {
"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
"exportedSymbols": {
"Address": [
1521
],
"Context": [
1543
],
"ERC165": [
1844
],
"ERC721": [
935
],
"IERC165": [
1856
],
"IERC721": [
1051
],
"IERC721Metadata": [
1224
],
"IERC721Receiver": [
1069
],
"Strings": [
1820
]
},
"id": 936,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 106,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "92:23:1"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"file": "./IERC721.sol",
"id": 107,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1052,
"src": "117:23:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
"file": "./IERC721Receiver.sol",
"id": 108,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1070,
"src": "141:31:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
"file": "./extensions/IERC721Metadata.sol",
"id": 109,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1225,
"src": "173:42:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"file": "../../utils/Address.sol",
"id": 110,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1522,
"src": "216:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Context.sol",
"file": "../../utils/Context.sol",
"id": 111,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1544,
"src": "250:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
"file": "../../utils/Strings.sol",
"id": 112,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1821,
"src": "284:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
"file": "../../utils/introspection/ERC165.sol",
"id": 113,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1845,
"src": "318:46:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 115,
"name": "Context",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1543,
"src": "632:7:1"
},
"id": 116,
"nodeType": "InheritanceSpecifier",
"src": "632:7:1"
},
{
"baseName": {
"id": 117,
"name": "ERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1844,
"src": "641:6:1"
},
"id": 118,
"nodeType": "InheritanceSpecifier",
"src": "641:6:1"
},
{
"baseName": {
"id": 119,
"name": "IERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1051,
"src": "649:7:1"
},
"id": 120,
"nodeType": "InheritanceSpecifier",
"src": "649:7:1"
},
{
"baseName": {
"id": 121,
"name": "IERC721Metadata",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1224,
"src": "658:15:1"
},
"id": 122,
"nodeType": "InheritanceSpecifier",
"src": "658:15:1"
}
],
"canonicalName": "ERC721",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 114,
"nodeType": "StructuredDocumentation",
"src": "366:246:1",
"text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
},
"fullyImplemented": true,
"id": 935,
"linearizedBaseContracts": [
935,
1224,
1051,
1844,
1856,
1543
],
"name": "ERC721",
"nameLocation": "622:6:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 125,
"libraryName": {
"id": 123,
"name": "Address",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1521,
"src": "686:7:1"
},
"nodeType": "UsingForDirective",
"src": "680:26:1",
"typeName": {
"id": 124,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "698:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 128,
"libraryName": {
"id": 126,
"name": "Strings",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1820,
"src": "717:7:1"
},
"nodeType": "UsingForDirective",
"src": "711:26:1",
"typeName": {
"id": 127,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "729:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"id": 130,
"mutability": "mutable",
"name": "_name",
"nameLocation": "776:5:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "761:20:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 129,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "761:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"constant": false,
"id": 132,
"mutability": "mutable",
"name": "_symbol",
"nameLocation": "823:7:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "808:22:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 131,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "808:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"constant": false,
"id": 136,
"mutability": "mutable",
"name": "_owners",
"nameLocation": "919:7:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "883:43:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 135,
"keyType": {
"id": 133,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "891:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "883:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 134,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "902:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 140,
"mutability": "mutable",
"name": "_balances",
"nameLocation": "1013:9:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "977:45:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 139,
"keyType": {
"id": 137,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "985:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "977:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 138,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "996:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 144,
"mutability": "mutable",
"name": "_tokenApprovals",
"nameLocation": "1114:15:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "1078:51:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 143,
"keyType": {
"id": 141,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1086:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "1078:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 142,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1097:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 150,
"mutability": "mutable",
"name": "_operatorApprovals",
"nameLocation": "1237:18:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "1184:71:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"typeName": {
"id": 149,
"keyType": {
"id": 145,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1192:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1184:44:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"valueType": {
"id": 148,
"keyType": {
"id": 146,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1211:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1203:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 147,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1222:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"visibility": "private"
},
{
"body": {
"id": 166,
"nodeType": "Block",
"src": "1431:57:1",
"statements": [
{
"expression": {
"id": 160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 158,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "1441:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 159,
"name": "name_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 153,
"src": "1449:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1441:13:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 161,
"nodeType": "ExpressionStatement",
"src": "1441:13:1"
},
{
"expression": {
"id": 164,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 162,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 132,
"src": "1464:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 163,
"name": "symbol_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 155,
"src": "1474:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1464:17:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 165,
"nodeType": "ExpressionStatement",
"src": "1464:17:1"
}
]
},
"documentation": {
"id": 151,
"nodeType": "StructuredDocumentation",
"src": "1262:108:1",
"text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
},
"id": 167,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 156,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 153,
"mutability": "mutable",
"name": "name_",
"nameLocation": "1401:5:1",
"nodeType": "VariableDeclaration",
"scope": 167,
"src": "1387:19:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 152,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1387:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 155,
"mutability": "mutable",
"name": "symbol_",
"nameLocation": "1422:7:1",
"nodeType": "VariableDeclaration",
"scope": 167,
"src": "1408:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 154,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1408:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1386:44:1"
},
"returnParameters": {
"id": 157,
"nodeType": "ParameterList",
"parameters": [],
"src": "1431:0:1"
},
"scope": 935,
"src": "1375:113:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
1843,
1855
],
"body": {
"id": 197,
"nodeType": "Block",
"src": "1663:192:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 178,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1692:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 180,
"name": "IERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1051,
"src": "1712:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$",
"typeString": "type(contract IERC721)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$",
"typeString": "type(contract IERC721)"
}
],
"id": 179,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967269,
"src": "1707:4:1",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 181,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1707:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1051",
"typeString": "type(contract IERC721)"
}
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1707:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1692:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 184,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1748:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 186,
"name": "IERC721Metadata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1224,
"src": "1768:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$",
"typeString": "type(contract IERC721Metadata)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$",
"typeString": "type(contract IERC721Metadata)"
}
],
"id": 185,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967269,
"src": "1763:4:1",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1763:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1224",
"typeString": "type(contract IERC721Metadata)"
}
},
"id": 188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1763:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1748:48:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1692:104:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 193,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1836:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
],
"expression": {
"id": 191,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967271,
"src": "1812:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_ERC721_$935_$",
"typeString": "type(contract super ERC721)"
}
},
"id": 192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "supportsInterface",
"nodeType": "MemberAccess",
"referencedDeclaration": 1843,
"src": "1812:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
"typeString": "function (bytes4) view returns (bool)"
}
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1812:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1692:156:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 177,
"id": 196,
"nodeType": "Return",
"src": "1673:175:1"
}
]
},
"documentation": {
"id": 168,
"nodeType": "StructuredDocumentation",
"src": "1494:56:1",
"text": " @dev See {IERC165-supportsInterface}."
},
"functionSelector": "01ffc9a7",
"id": 198,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "supportsInterface",
"nameLocation": "1564:17:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 174,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 172,
"name": "ERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1844,
"src": "1631:6:1"
},
{
"id": 173,
"name": "IERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1856,
"src": "1639:7:1"
}
],
"src": "1622:25:1"
},
"parameters": {
"id": 171,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 170,
"mutability": "mutable",
"name": "interfaceId",
"nameLocation": "1589:11:1",
"nodeType": "VariableDeclaration",
"scope": 198,
"src": "1582:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 169,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "1582:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "1581:20:1"
},
"returnParameters": {
"id": 177,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 176,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 198,
"src": "1657:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 175,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1657:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1656:6:1"
},
"scope": 935,
"src": "1555:300:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
976
],
"body": {
"id": 221,
"nodeType": "Block",
"src": "1995:124:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 213,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 208,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 201,
"src": "2013:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 211,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2030:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 210,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2022:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 209,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2022:7:1",
"typeDescriptions": {}
}
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2022:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2013:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
"id": 214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2034:44:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
"typeString": "literal_string \"ERC721: balance query for the zero address\""
},
"value": "ERC721: balance query for the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
"typeString": "literal_string \"ERC721: balance query for the zero address\""
}
],
"id": 207,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2005:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2005:74:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 216,
"nodeType": "ExpressionStatement",
"src": "2005:74:1"
},
{
"expression": {
"baseExpression": {
"id": 217,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "2096:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 219,
"indexExpression": {
"id": 218,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 201,
"src": "2106:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2096:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 206,
"id": 220,
"nodeType": "Return",
"src": "2089:23:1"
}
]
},
"documentation": {
"id": 199,
"nodeType": "StructuredDocumentation",
"src": "1861:48:1",
"text": " @dev See {IERC721-balanceOf}."
},
"functionSelector": "70a08231",
"id": 222,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "1923:9:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 203,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1968:8:1"
},
"parameters": {
"id": 202,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 201,
"mutability": "mutable",
"name": "owner",
"nameLocation": "1941:5:1",
"nodeType": "VariableDeclaration",
"scope": 222,
"src": "1933:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 200,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1933:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1932:15:1"
},
"returnParameters": {
"id": 206,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 205,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 222,
"src": "1986:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 204,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1986:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1985:9:1"
},
"scope": 935,
"src": "1914:205:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
984
],
"body": {
"id": 249,
"nodeType": "Block",
"src": "2257:154:1",
"statements": [
{
"assignments": [
232
],
"declarations": [
{
"constant": false,
"id": 232,
"mutability": "mutable",
"name": "owner",
"nameLocation": "2275:5:1",
"nodeType": "VariableDeclaration",
"scope": 249,
"src": "2267:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 231,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2267:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 236,
"initialValue": {
"baseExpression": {
"id": 233,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "2283:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 235,
"indexExpression": {
"id": 234,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "2291:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2283:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2267:32:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 238,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "2317:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2334:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 240,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2326:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 239,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2326:7:1",
"typeDescriptions": {}
}
},
"id": 242,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2326:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2317:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 244,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2338:43:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
"typeString": "literal_string \"ERC721: owner query for nonexistent token\""
},
"value": "ERC721: owner query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
"typeString": "literal_string \"ERC721: owner query for nonexistent token\""
}
],
"id": 237,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2309:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2309:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 246,
"nodeType": "ExpressionStatement",
"src": "2309:73:1"
},
{
"expression": {
"id": 247,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "2399:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 230,
"id": 248,
"nodeType": "Return",
"src": "2392:12:1"
}
]
},
"documentation": {
"id": 223,
"nodeType": "StructuredDocumentation",
"src": "2125:46:1",
"text": " @dev See {IERC721-ownerOf}."
},
"functionSelector": "6352211e",
"id": 250,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "ownerOf",
"nameLocation": "2185:7:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 227,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2230:8:1"
},
"parameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2201:7:1",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "2193:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2193:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2192:17:1"
},
"returnParameters": {
"id": 230,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 229,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "2248:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 228,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2248:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2247:9:1"
},
"scope": 935,
"src": "2176:235:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1209
],
"body": {
"id": 259,
"nodeType": "Block",
"src": "2542:29:1",
"statements": [
{
"expression": {
"id": 257,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2559:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 256,
"id": 258,
"nodeType": "Return",
"src": "2552:12:1"
}
]
},
"documentation": {
"id": 251,
"nodeType": "StructuredDocumentation",
"src": "2417:51:1",
"text": " @dev See {IERC721Metadata-name}."
},
"functionSelector": "06fdde03",
"id": 260,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nameLocation": "2482:4:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 253,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2509:8:1"
},
"parameters": {
"id": 252,
"nodeType": "ParameterList",
"parameters": [],
"src": "2486:2:1"
},
"returnParameters": {
"id": 256,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 255,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 260,
"src": "2527:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 254,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2527:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2526:15:1"
},
"scope": 935,
"src": "2473:98:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1215
],
"body": {
"id": 269,
"nodeType": "Block",
"src": "2706:31:1",
"statements": [
{
"expression": {
"id": 267,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 132,
"src": "2723:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 266,
"id": 268,
"nodeType": "Return",
"src": "2716:14:1"
}
]
},
"documentation": {
"id": 261,
"nodeType": "StructuredDocumentation",
"src": "2577:53:1",
"text": " @dev See {IERC721Metadata-symbol}."
},
"functionSelector": "95d89b41",
"id": 270,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nameLocation": "2644:6:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 263,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2673:8:1"
},
"parameters": {
"id": 262,
"nodeType": "ParameterList",
"parameters": [],
"src": "2650:2:1"
},
"returnParameters": {
"id": 266,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 265,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 270,
"src": "2691:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 264,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2691:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2690:15:1"
},
"scope": 935,
"src": "2635:102:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1223
],
"body": {
"id": 311,
"nodeType": "Block",
"src": "2891:241:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 281,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 273,
"src": "2917:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 280,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "2909:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2909:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2927:49:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
"typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
},
"value": "ERC721Metadata: URI query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
"typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
}
],
"id": 279,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2901:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2901:76:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 285,
"nodeType": "ExpressionStatement",
"src": "2901:76:1"
},
{
"assignments": [
287
],
"declarations": [
{
"constant": false,
"id": 287,
"mutability": "mutable",
"name": "baseURI",
"nameLocation": "3002:7:1",
"nodeType": "VariableDeclaration",
"scope": 311,
"src": "2988:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 286,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2988:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 290,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 288,
"name": "_baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 321,
"src": "3012:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view returns (string memory)"
}
},
"id": 289,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3012:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2988:34:1"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 297,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 293,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 287,
"src": "3045:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 292,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3039:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 291,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3039:5:1",
"typeDescriptions": {}
}
},
"id": 294,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3039:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 296,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3063:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3039:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"hexValue": "",
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3123:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "3039:86:1",
"trueExpression": {
"arguments": [
{
"arguments": [
{
"id": 302,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 287,
"src": "3091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 303,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 273,
"src": "3100:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toString",
"nodeType": "MemberAccess",
"referencedDeclaration": 1702,
"src": "3100:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (string memory)"
}
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3100:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"id": 300,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "3074:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 301,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "3074:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 306,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3074:45:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3067:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 298,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3067:6:1",
"typeDescriptions": {}
}
},
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3067:53:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 278,
"id": 310,
"nodeType": "Return",
"src": "3032:93:1"
}
]
},
"documentation": {
"id": 271,
"nodeType": "StructuredDocumentation",
"src": "2743:55:1",
"text": " @dev See {IERC721Metadata-tokenURI}."
},
"functionSelector": "c87b56dd",
"id": 312,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "tokenURI",
"nameLocation": "2812:8:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 275,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2858:8:1"
},
"parameters": {
"id": 274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 273,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2829:7:1",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "2821:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 272,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2821:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2820:17:1"
},
"returnParameters": {
"id": 278,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 277,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "2876:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 276,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2876:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2875:15:1"
},
"scope": 935,
"src": "2803:329:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 320,
"nodeType": "Block",
"src": "3439:26:1",
"statements": [
{
"expression": {
"hexValue": "",
"id": 318,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3456:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"functionReturnParameters": 317,
"id": 319,
"nodeType": "Return",
"src": "3449:9:1"
}
]
},
"documentation": {
"id": 313,
"nodeType": "StructuredDocumentation",
"src": "3138:230:1",
"text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts."
},
"id": 321,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_baseURI",
"nameLocation": "3382:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 314,
"nodeType": "ParameterList",
"parameters": [],
"src": "3390:2:1"
},
"returnParameters": {
"id": 317,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 316,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 321,
"src": "3424:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 315,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3424:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "3423:15:1"
},
"scope": 935,
"src": "3373:92:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"baseFunctions": [
1012
],
"body": {
"id": 363,
"nodeType": "Block",
"src": "3592:331:1",
"statements": [
{
"assignments": [
331
],
"declarations": [
{
"constant": false,
"id": 331,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3610:5:1",
"nodeType": "VariableDeclaration",
"scope": 363,
"src": "3602:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 330,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3602:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 336,
"initialValue": {
"arguments": [
{
"id": 334,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 326,
"src": "3633:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 332,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "3618:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "3618:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3618:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3602:39:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 338,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 324,
"src": "3659:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 339,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3665:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3659:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3672:35:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
"typeString": "literal_string \"ERC721: approval to current owner\""
},
"value": "ERC721: approval to current owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
"typeString": "literal_string \"ERC721: approval to current owner\""
}
],
"id": 337,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "3651:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3651:57:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 343,
"nodeType": "ExpressionStatement",
"src": "3651:57:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 348,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 345,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "3740:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3740:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 347,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3756:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3740:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 350,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3782:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 351,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "3789:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 352,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3789:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 349,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 420,
"src": "3765:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3765:37:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3740:62:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
"id": 355,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3816:58:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
"typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
},
"value": "ERC721: approve caller is not owner nor approved for all"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
"typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
}
],
"id": 344,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "3719:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3719:165:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 357,
"nodeType": "ExpressionStatement",
"src": "3719:165:1"
},
{
"expression": {
"arguments": [
{
"id": 359,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 324,
"src": "3904:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 360,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 326,
"src": "3908:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 358,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "3895:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3895:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 362,
"nodeType": "ExpressionStatement",
"src": "3895:21:1"
}
]
},
"documentation": {
"id": 322,
"nodeType": "StructuredDocumentation",
"src": "3471:46:1",
"text": " @dev See {IERC721-approve}."
},
"functionSelector": "095ea7b3",
"id": 364,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "approve",
"nameLocation": "3531:7:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 328,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3583:8:1"
},
"parameters": {
"id": 327,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 324,
"mutability": "mutable",
"name": "to",
"nameLocation": "3547:2:1",
"nodeType": "VariableDeclaration",
"scope": 364,
"src": "3539:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 323,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3539:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 326,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "3559:7:1",
"nodeType": "VariableDeclaration",
"scope": 364,
"src": "3551:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 325,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3551:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3538:29:1"
},
"returnParameters": {
"id": 329,
"nodeType": "ParameterList",
"parameters": [],
"src": "3592:0:1"
},
"scope": 935,
"src": "3522:401:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1020
],
"body": {
"id": 384,
"nodeType": "Block",
"src": "4069:132:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 375,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 367,
"src": "4095:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 374,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "4087:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 376,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4087:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 377,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4105:46:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
"typeString": "literal_string \"ERC721: approved query for nonexistent token\""
},
"value": "ERC721: approved query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
"typeString": "literal_string \"ERC721: approved query for nonexistent token\""
}
],
"id": 373,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "4079:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4079:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 379,
"nodeType": "ExpressionStatement",
"src": "4079:73:1"
},
{
"expression": {
"baseExpression": {
"id": 380,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 144,
"src": "4170:15:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 382,
"indexExpression": {
"id": 381,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 367,
"src": "4186:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4170:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 372,
"id": 383,
"nodeType": "Return",
"src": "4163:31:1"
}
]
},
"documentation": {
"id": 365,
"nodeType": "StructuredDocumentation",
"src": "3929:50:1",
"text": " @dev See {IERC721-getApproved}."
},
"functionSelector": "081812fc",
"id": 385,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getApproved",
"nameLocation": "3993:11:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 369,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4042:8:1"
},
"parameters": {
"id": 368,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 367,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "4013:7:1",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "4005:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 366,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4005:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4004:17:1"
},
"returnParameters": {
"id": 372,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 371,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "4060:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4060:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4059:9:1"
},
"scope": 935,
"src": "3984:217:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1028
],
"body": {
"id": 401,
"nodeType": "Block",
"src": "4352:69:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 395,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "4381:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4381:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 397,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 388,
"src": "4395:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 398,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 390,
"src": "4405:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 394,
"name": "_setApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 861,
"src": "4362:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 399,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4362:52:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 400,
"nodeType": "ExpressionStatement",
"src": "4362:52:1"
}
]
},
"documentation": {
"id": 386,
"nodeType": "StructuredDocumentation",
"src": "4207:56:1",
"text": " @dev See {IERC721-setApprovalForAll}."
},
"functionSelector": "a22cb465",
"id": 402,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setApprovalForAll",
"nameLocation": "4277:17:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 392,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4343:8:1"
},
"parameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 388,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4303:8:1",
"nodeType": "VariableDeclaration",
"scope": 402,
"src": "4295:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 387,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4295:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 390,
"mutability": "mutable",
"name": "approved",
"nameLocation": "4318:8:1",
"nodeType": "VariableDeclaration",
"scope": 402,
"src": "4313:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 389,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4313:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4294:33:1"
},
"returnParameters": {
"id": 393,
"nodeType": "ParameterList",
"parameters": [],
"src": "4352:0:1"
},
"scope": 935,
"src": "4268:153:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1038
],
"body": {
"id": 419,
"nodeType": "Block",
"src": "4590:59:1",
"statements": [
{
"expression": {
"baseExpression": {
"baseExpression": {
"id": 413,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 150,
"src": "4607:18:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 415,
"indexExpression": {
"id": 414,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4626:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4607:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 417,
"indexExpression": {
"id": 416,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "4633:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4607:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 412,
"id": 418,
"nodeType": "Return",
"src": "4600:42:1"
}
]
},
"documentation": {
"id": 403,
"nodeType": "StructuredDocumentation",
"src": "4427:55:1",
"text": " @dev See {IERC721-isApprovedForAll}."
},
"functionSelector": "e985e9c5",
"id": 420,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isApprovedForAll",
"nameLocation": "4496:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 409,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4566:8:1"
},
"parameters": {
"id": 408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 405,
"mutability": "mutable",
"name": "owner",
"nameLocation": "4521:5:1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4513:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 404,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4513:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 407,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4536:8:1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4528:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 406,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4528:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4512:33:1"
},
"returnParameters": {
"id": 412,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 411,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4584:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 410,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4584:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4583:6:1"
},
"scope": 935,
"src": "4487:162:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1004
],
"body": {
"id": 446,
"nodeType": "Block",
"src": "4830:211:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 433,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "4919:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4919:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 435,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 427,
"src": "4933:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 432,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 584,
"src": "4900:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4900:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
"id": 437,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4943:51:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
},
"value": "ERC721: transfer caller is not owner nor approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
}
],
"id": 431,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "4892:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4892:103:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 439,
"nodeType": "ExpressionStatement",
"src": "4892:103:1"
},
{
"expression": {
"arguments": [
{
"id": 441,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 423,
"src": "5016:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 442,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 425,
"src": "5022:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 443,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 427,
"src": "5026:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 440,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5006:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5006:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 445,
"nodeType": "ExpressionStatement",
"src": "5006:28:1"
}
]
},
"documentation": {
"id": 421,
"nodeType": "StructuredDocumentation",
"src": "4655:51:1",
"text": " @dev See {IERC721-transferFrom}."
},
"functionSelector": "23b872dd",
"id": 447,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nameLocation": "4720:12:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 429,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4821:8:1"
},
"parameters": {
"id": 428,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 423,
"mutability": "mutable",
"name": "from",
"nameLocation": "4750:4:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4742:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 422,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4742:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 425,
"mutability": "mutable",
"name": "to",
"nameLocation": "4772:2:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4764:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4764:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 427,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "4792:7:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4784:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 426,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4784:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4732:73:1"
},
"returnParameters": {
"id": 430,
"nodeType": "ParameterList",
"parameters": [],
"src": "4830:0:1"
},
"scope": 935,
"src": "4711:330:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
994
],
"body": {
"id": 465,
"nodeType": "Block",
"src": "5230:56:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 459,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 450,
"src": "5257:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 460,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 452,
"src": "5263:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 461,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 454,
"src": "5267:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 462,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5276:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"id": 458,
"name": "safeTransferFrom",
"nodeType": "Identifier",
"overloadedDeclarations": [
466,
496
],
"referencedDeclaration": 496,
"src": "5240:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,address,uint256,bytes memory)"
}
},
"id": 463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5240:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 464,
"nodeType": "ExpressionStatement",
"src": "5240:39:1"
}
]
},
"documentation": {
"id": 448,
"nodeType": "StructuredDocumentation",
"src": "5047:55:1",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "42842e0e",
"id": 466,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5116:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 456,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5221:8:1"
},
"parameters": {
"id": 455,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 450,
"mutability": "mutable",
"name": "from",
"nameLocation": "5150:4:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5142:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 449,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5142:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 452,
"mutability": "mutable",
"name": "to",
"nameLocation": "5172:2:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5164:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 451,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5164:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 454,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5192:7:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5184:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 453,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5184:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5132:73:1"
},
"returnParameters": {
"id": 457,
"nodeType": "ParameterList",
"parameters": [],
"src": "5230:0:1"
},
"scope": 935,
"src": "5107:179:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1050
],
"body": {
"id": 495,
"nodeType": "Block",
"src": "5503:169:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 481,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "5540:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5540:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 483,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "5554:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 480,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 584,
"src": "5521:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5521:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
"id": 485,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5564:51:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
},
"value": "ERC721: transfer caller is not owner nor approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
}
],
"id": 479,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "5513:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5513:103:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 487,
"nodeType": "ExpressionStatement",
"src": "5513:103:1"
},
{
"expression": {
"arguments": [
{
"id": 489,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 469,
"src": "5640:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 490,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 471,
"src": "5646:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 491,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "5650:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 492,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 475,
"src": "5659:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 488,
"name": "_safeTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 525,
"src": "5626:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,address,uint256,bytes memory)"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5626:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 494,
"nodeType": "ExpressionStatement",
"src": "5626:39:1"
}
]
},
"documentation": {
"id": 467,
"nodeType": "StructuredDocumentation",
"src": "5292:55:1",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "b88d4fde",
"id": 496,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5361:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 477,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5494:8:1"
},
"parameters": {
"id": 476,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 469,
"mutability": "mutable",
"name": "from",
"nameLocation": "5395:4:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5387:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 468,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5387:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 471,
"mutability": "mutable",
"name": "to",
"nameLocation": "5417:2:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5409:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 470,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5409:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 473,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5437:7:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5429:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 472,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5429:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 475,
"mutability": "mutable",
"name": "_data",
"nameLocation": "5467:5:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5454:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 474,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5454:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5377:101:1"
},
"returnParameters": {
"id": 478,
"nodeType": "ParameterList",
"parameters": [],
"src": "5503:0:1"
},
"scope": 935,
"src": "5352:320:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 524,
"nodeType": "Block",
"src": "6675:166:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 509,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "6695:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 510,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 501,
"src": "6701:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 511,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
"src": "6705:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 508,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "6685:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6685:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 513,
"nodeType": "ExpressionStatement",
"src": "6685:28:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 516,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "6754:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 517,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 501,
"src": "6760:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 518,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
"src": "6764:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 519,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 505,
"src": "6773:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 515,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 923,
"src": "6731:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory) returns (bool)"
}
},
"id": 520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6731:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 521,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6781:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 514,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "6723:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6723:111:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 523,
"nodeType": "ExpressionStatement",
"src": "6723:111:1"
}
]
},
"documentation": {
"id": 497,
"nodeType": "StructuredDocumentation",
"src": "5678:851:1",
"text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
},
"id": 525,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeTransfer",
"nameLocation": "6543:13:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 506,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 499,
"mutability": "mutable",
"name": "from",
"nameLocation": "6574:4:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6566:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 498,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6566:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 501,
"mutability": "mutable",
"name": "to",
"nameLocation": "6596:2:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6588:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 500,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6588:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 503,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "6616:7:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6608:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 502,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6608:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 505,
"mutability": "mutable",
"name": "_data",
"nameLocation": "6646:5:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6633:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 504,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6633:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6556:101:1"
},
"returnParameters": {
"id": 507,
"nodeType": "ParameterList",
"parameters": [],
"src": "6675:0:1"
},
"scope": 935,
"src": "6534:307:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 542,
"nodeType": "Block",
"src": "7215:54:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 540,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"baseExpression": {
"id": 533,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "7232:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 535,
"indexExpression": {
"id": 534,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 528,
"src": "7240:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7232:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 538,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7260:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 537,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7252:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 536,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7252:7:1",
"typeDescriptions": {}
}
},
"id": 539,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7252:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7232:30:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 532,
"id": 541,
"nodeType": "Return",
"src": "7225:37:1"
}
]
},
"documentation": {
"id": 526,
"nodeType": "StructuredDocumentation",
"src": "6847:292:1",
"text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
},
"id": 543,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_exists",
"nameLocation": "7153:7:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 529,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 528,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7169:7:1",
"nodeType": "VariableDeclaration",
"scope": 543,
"src": "7161:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 527,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7161:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7160:17:1"
},
"returnParameters": {
"id": 532,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 531,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 543,
"src": "7209:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 530,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7209:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7208:6:1"
},
"scope": 935,
"src": "7144:125:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 583,
"nodeType": "Block",
"src": "7526:245:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 555,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7552:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 554,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "7544:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 556,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7544:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 557,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7562:46:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
"typeString": "literal_string \"ERC721: operator query for nonexistent token\""
},
"value": "ERC721: operator query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
"typeString": "literal_string \"ERC721: operator query for nonexistent token\""
}
],
"id": 553,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "7536:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 558,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7536:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 559,
"nodeType": "ExpressionStatement",
"src": "7536:73:1"
},
{
"assignments": [
561
],
"declarations": [
{
"constant": false,
"id": 561,
"mutability": "mutable",
"name": "owner",
"nameLocation": "7627:5:1",
"nodeType": "VariableDeclaration",
"scope": 583,
"src": "7619:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 560,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7619:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 566,
"initialValue": {
"arguments": [
{
"id": 564,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7650:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 562,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "7635:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "7635:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 565,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7635:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7619:39:1"
},
{
"expression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 567,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7676:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 568,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "7687:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7676:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 571,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7708:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 570,
"name": "getApproved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "7696:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7696:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 573,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7720:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7696:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7676:51:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 577,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "7748:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 578,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7755:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 576,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 420,
"src": "7731:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7731:32:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7676:87:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 581,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7675:89:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 552,
"id": 582,
"nodeType": "Return",
"src": "7668:96:1"
}
]
},
"documentation": {
"id": 544,
"nodeType": "StructuredDocumentation",
"src": "7275:147:1",
"text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
},
"id": 584,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_isApprovedOrOwner",
"nameLocation": "7436:18:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 549,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 546,
"mutability": "mutable",
"name": "spender",
"nameLocation": "7463:7:1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7455:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 545,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7455:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 548,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7480:7:1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7472:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 547,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7472:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7454:34:1"
},
"returnParameters": {
"id": 552,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 551,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7520:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 550,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7520:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7519:6:1"
},
"scope": 935,
"src": "7427:344:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 598,
"nodeType": "Block",
"src": "8166:43:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 593,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 587,
"src": "8186:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 594,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "8190:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 595,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8199:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"id": 592,
"name": "_safeMint",
"nodeType": "Identifier",
"overloadedDeclarations": [
599,
628
],
"referencedDeclaration": 628,
"src": "8176:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,uint256,bytes memory)"
}
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8176:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 597,
"nodeType": "ExpressionStatement",
"src": "8176:26:1"
}
]
},
"documentation": {
"id": 585,
"nodeType": "StructuredDocumentation",
"src": "7777:319:1",
"text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
},
"id": 599,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8110:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 590,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 587,
"mutability": "mutable",
"name": "to",
"nameLocation": "8128:2:1",
"nodeType": "VariableDeclaration",
"scope": 599,
"src": "8120:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 586,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8120:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 589,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8140:7:1",
"nodeType": "VariableDeclaration",
"scope": 599,
"src": "8132:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 588,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8132:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "8119:29:1"
},
"returnParameters": {
"id": 591,
"nodeType": "ParameterList",
"parameters": [],
"src": "8166:0:1"
},
"scope": 935,
"src": "8101:108:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 627,
"nodeType": "Block",
"src": "8545:196:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 610,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 602,
"src": "8561:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 611,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 604,
"src": "8565:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 609,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 685,
"src": "8555:5:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8555:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 613,
"nodeType": "ExpressionStatement",
"src": "8555:18:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 618,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8635:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8627:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 616,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8627:7:1",
"typeDescriptions": {}
}
},
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8627:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 620,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 602,
"src": "8639:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 621,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 604,
"src": "8643:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 622,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 606,
"src": "8652:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 615,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 923,
"src": "8604:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory) returns (bool)"
}
},
"id": 623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8604:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 624,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8672:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 614,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "8583:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 625,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8583:151:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 626,
"nodeType": "ExpressionStatement",
"src": "8583:151:1"
}
]
},
"documentation": {
"id": 600,
"nodeType": "StructuredDocumentation",
"src": "8215:210:1",
"text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
},
"id": 628,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8439:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 607,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 602,
"mutability": "mutable",
"name": "to",
"nameLocation": "8466:2:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8458:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 601,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8458:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 604,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8486:7:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8478:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 603,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8478:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 606,
"mutability": "mutable",
"name": "_data",
"nameLocation": "8516:5:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8503:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 605,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8503:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "8448:79:1"
},
"returnParameters": {
"id": 608,
"nodeType": "ParameterList",
"parameters": [],
"src": "8545:0:1"
},
"scope": 935,
"src": "8430:311:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 684,
"nodeType": "Block",
"src": "9124:311:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 637,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9142:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 640,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9156:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9148:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 638,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9148:7:1",
"typeDescriptions": {}
}
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9148:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9142:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9160:34:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
"typeString": "literal_string \"ERC721: mint to the zero address\""
},
"value": "ERC721: mint to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
"typeString": "literal_string \"ERC721: mint to the zero address\""
}
],
"id": 636,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "9134:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9134:61:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 645,
"nodeType": "ExpressionStatement",
"src": "9134:61:1"
},
{
"expression": {
"arguments": [
{
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9213:17:1",
"subExpression": {
"arguments": [
{
"id": 648,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9222:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 647,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "9214:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9214:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9232:30:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
"typeString": "literal_string \"ERC721: token already minted\""
},
"value": "ERC721: token already minted"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
"typeString": "literal_string \"ERC721: token already minted\""
}
],
"id": 646,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "9205:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 652,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9205:58:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 653,
"nodeType": "ExpressionStatement",
"src": "9205:58:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9303:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 656,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9295:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 655,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9295:7:1",
"typeDescriptions": {}
}
},
"id": 658,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9295:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 659,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9307:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 660,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9311:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 654,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "9274:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9274:45:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 662,
"nodeType": "ExpressionStatement",
"src": "9274:45:1"
},
{
"expression": {
"id": 667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 663,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "9330:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 665,
"indexExpression": {
"id": 664,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9340:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9330:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9347:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9330:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 668,
"nodeType": "ExpressionStatement",
"src": "9330:18:1"
},
{
"expression": {
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 669,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "9358:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 671,
"indexExpression": {
"id": 670,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9358:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 672,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9377:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9358:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 674,
"nodeType": "ExpressionStatement",
"src": "9358:21:1"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9412:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 677,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9404:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 676,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9404:7:1",
"typeDescriptions": {}
}
},
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9404:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 680,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9416:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 681,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9420:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 675,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "9395:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 682,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9395:33:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 683,
"nodeType": "EmitStatement",
"src": "9390:38:1"
}
]
},
"documentation": {
"id": 629,
"nodeType": "StructuredDocumentation",
"src": "8747:311:1",
"text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
},
"id": 685,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nameLocation": "9072:5:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 634,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 631,
"mutability": "mutable",
"name": "to",
"nameLocation": "9086:2:1",
"nodeType": "VariableDeclaration",
"scope": 685,
"src": "9078:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 630,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9078:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 633,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "9098:7:1",
"nodeType": "VariableDeclaration",
"scope": 685,
"src": "9090:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 632,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9090:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9077:29:1"
},
"returnParameters": {
"id": 635,
"nodeType": "ParameterList",
"parameters": [],
"src": "9124:0:1"
},
"scope": 935,
"src": "9063:372:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 735,
"nodeType": "Block",
"src": "9701:299:1",
"statements": [
{
"assignments": [
692
],
"declarations": [
{
"constant": false,
"id": 692,
"mutability": "mutable",
"name": "owner",
"nameLocation": "9719:5:1",
"nodeType": "VariableDeclaration",
"scope": 735,
"src": "9711:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 691,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9711:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 697,
"initialValue": {
"arguments": [
{
"id": 695,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9742:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 693,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "9727:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "9727:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 696,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9727:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9711:39:1"
},
{
"expression": {
"arguments": [
{
"id": 699,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9782:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9797:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9789:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 700,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9789:7:1",
"typeDescriptions": {}
}
},
"id": 703,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9789:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 704,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9801:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 698,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "9761:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 705,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9761:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 706,
"nodeType": "ExpressionStatement",
"src": "9761:48:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 710,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9864:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 709,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9856:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 708,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9856:7:1",
"typeDescriptions": {}
}
},
"id": 711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9856:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 712,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9868:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 707,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "9847:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9847:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 714,
"nodeType": "ExpressionStatement",
"src": "9847:29:1"
},
{
"expression": {
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 715,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "9887:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 717,
"indexExpression": {
"id": 716,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9897:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9887:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 718,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9907:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9887:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 720,
"nodeType": "ExpressionStatement",
"src": "9887:21:1"
},
{
"expression": {
"id": 724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "9918:23:1",
"subExpression": {
"baseExpression": {
"id": 721,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "9925:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 723,
"indexExpression": {
"id": 722,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9933:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9925:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 725,
"nodeType": "ExpressionStatement",
"src": "9918:23:1"
},
{
"eventCall": {
"arguments": [
{
"id": 727,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9966:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 730,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9981:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 729,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9973:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 728,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9973:7:1",
"typeDescriptions": {}
}
},
"id": 731,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9973:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 732,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9985:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 726,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "9957:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9957:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 734,
"nodeType": "EmitStatement",
"src": "9952:41:1"
}
]
},
"documentation": {
"id": 686,
"nodeType": "StructuredDocumentation",
"src": "9441:206:1",
"text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
},
"id": 736,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nameLocation": "9661:5:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 689,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 688,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "9675:7:1",
"nodeType": "VariableDeclaration",
"scope": 736,
"src": "9667:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 687,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9667:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9666:17:1"
},
"returnParameters": {
"id": 690,
"nodeType": "ParameterList",
"parameters": [],
"src": "9701:0:1"
},
"scope": 935,
"src": "9652:348:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 804,
"nodeType": "Block",
"src": "10433:451:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 749,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10466:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 747,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "10451:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 748,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "10451:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10451:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 751,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10478:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10451:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e",
"id": 753,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10484:43:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
"typeString": "literal_string \"ERC721: transfer of token that is not own\""
},
"value": "ERC721: transfer of token that is not own"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
"typeString": "literal_string \"ERC721: transfer of token that is not own\""
}
],
"id": 746,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "10443:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 754,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10443:85:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 755,
"nodeType": "ExpressionStatement",
"src": "10443:85:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 762,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 757,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10546:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 760,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10560:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10552:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 758,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10552:7:1",
"typeDescriptions": {}
}
},
"id": 761,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10552:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10546:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
"id": 763,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10564:38:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
"typeString": "literal_string \"ERC721: transfer to the zero address\""
},
"value": "ERC721: transfer to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
"typeString": "literal_string \"ERC721: transfer to the zero address\""
}
],
"id": 756,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "10538:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10538:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 765,
"nodeType": "ExpressionStatement",
"src": "10538:65:1"
},
{
"expression": {
"arguments": [
{
"id": 767,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10635:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 768,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10641:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 769,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10645:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 766,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "10614:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 770,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10614:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 771,
"nodeType": "ExpressionStatement",
"src": "10614:39:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 775,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10732:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 774,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10724:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 773,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10724:7:1",
"typeDescriptions": {}
}
},
"id": 776,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10724:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 777,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10736:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 772,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "10715:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10715:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 779,
"nodeType": "ExpressionStatement",
"src": "10715:29:1"
},
{
"expression": {
"id": 784,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 780,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "10755:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 782,
"indexExpression": {
"id": 781,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10765:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10755:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10774:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10755:20:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 785,
"nodeType": "ExpressionStatement",
"src": "10755:20:1"
},
{
"expression": {
"id": 790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 786,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "10785:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 788,
"indexExpression": {
"id": 787,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10795:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10785:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10802:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10785:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 791,
"nodeType": "ExpressionStatement",
"src": "10785:18:1"
},
{
"expression": {
"id": 796,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 792,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "10813:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 794,
"indexExpression": {
"id": 793,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10821:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10813:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 795,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10832:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10813:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 797,
"nodeType": "ExpressionStatement",
"src": "10813:21:1"
},
{
"eventCall": {
"arguments": [
{
"id": 799,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10859:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 800,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10865:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 801,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10869:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 798,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "10850:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10850:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 803,
"nodeType": "EmitStatement",
"src": "10845:32:1"
}
]
},
"documentation": {
"id": 737,
"nodeType": "StructuredDocumentation",
"src": "10006:313:1",
"text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
},
"id": 805,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "10333:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 744,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 739,
"mutability": "mutable",
"name": "from",
"nameLocation": "10360:4:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10352:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 738,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10352:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 741,
"mutability": "mutable",
"name": "to",
"nameLocation": "10382:2:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10374:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 740,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10374:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 743,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "10402:7:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10394:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 742,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10394:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "10342:73:1"
},
"returnParameters": {
"id": 745,
"nodeType": "ParameterList",
"parameters": [],
"src": "10433:0:1"
},
"scope": 935,
"src": "10324:560:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 828,
"nodeType": "Block",
"src": "11059:107:1",
"statements": [
{
"expression": {
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 813,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 144,
"src": "11069:15:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 815,
"indexExpression": {
"id": 814,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11085:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11069:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 816,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 808,
"src": "11096:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11069:29:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 818,
"nodeType": "ExpressionStatement",
"src": "11069:29:1"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"id": 822,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11137:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 820,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "11122:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "11122:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 823,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11122:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 824,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 808,
"src": "11147:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 825,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11151:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 819,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 959,
"src": "11113:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 826,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11113:46:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 827,
"nodeType": "EmitStatement",
"src": "11108:51:1"
}
]
},
"documentation": {
"id": 806,
"nodeType": "StructuredDocumentation",
"src": "10890:100:1",
"text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event."
},
"id": 829,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_approve",
"nameLocation": "11004:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 811,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 808,
"mutability": "mutable",
"name": "to",
"nameLocation": "11021:2:1",
"nodeType": "VariableDeclaration",
"scope": 829,
"src": "11013:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 807,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11013:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 810,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "11033:7:1",
"nodeType": "VariableDeclaration",
"scope": 829,
"src": "11025:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 809,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11025:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11012:29:1"
},
"returnParameters": {
"id": 812,
"nodeType": "ParameterList",
"parameters": [],
"src": "11059:0:1"
},
"scope": 935,
"src": "10995:171:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 860,
"nodeType": "Block",
"src": "11424:184:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 842,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 840,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11442:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 841,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11451:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11442:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
"id": 843,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11461:27:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
"typeString": "literal_string \"ERC721: approve to caller\""
},
"value": "ERC721: approve to caller"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
"typeString": "literal_string \"ERC721: approve to caller\""
}
],
"id": 839,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "11434:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11434:55:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 845,
"nodeType": "ExpressionStatement",
"src": "11434:55:1"
},
{
"expression": {
"id": 852,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 846,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 150,
"src": "11499:18:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 849,
"indexExpression": {
"id": 847,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11518:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11499:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 850,
"indexExpression": {
"id": 848,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11525:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11499:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 851,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 836,
"src": "11537:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "11499:46:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 853,
"nodeType": "ExpressionStatement",
"src": "11499:46:1"
},
{
"eventCall": {
"arguments": [
{
"id": 855,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11575:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 856,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11582:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 857,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 836,
"src": "11592:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 854,
"name": "ApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 968,
"src": "11560:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11560:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 859,
"nodeType": "EmitStatement",
"src": "11555:46:1"
}
]
},
"documentation": {
"id": 830,
"nodeType": "StructuredDocumentation",
"src": "11172:124:1",
"text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event."
},
"id": 861,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setApprovalForAll",
"nameLocation": "11310:18:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 837,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 832,
"mutability": "mutable",
"name": "owner",
"nameLocation": "11346:5:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11338:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 831,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11338:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 834,
"mutability": "mutable",
"name": "operator",
"nameLocation": "11369:8:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11361:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 833,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11361:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 836,
"mutability": "mutable",
"name": "approved",
"nameLocation": "11392:8:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11387:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 835,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "11387:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "11328:78:1"
},
"returnParameters": {
"id": 838,
"nodeType": "ParameterList",
"parameters": [],
"src": "11424:0:1"
},
"scope": 935,
"src": "11301:307:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 922,
"nodeType": "Block",
"src": "12317:622:1",
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 875,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 866,
"src": "12331:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isContract",
"nodeType": "MemberAccess",
"referencedDeclaration": 1244,
"src": "12331:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 877,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12331:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 920,
"nodeType": "Block",
"src": "12897:36:1",
"statements": [
{
"expression": {
"hexValue": "74727565",
"id": 918,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12918:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 874,
"id": 919,
"nodeType": "Return",
"src": "12911:11:1"
}
]
},
"id": 921,
"nodeType": "IfStatement",
"src": "12327:606:1",
"trueBody": {
"id": 917,
"nodeType": "Block",
"src": "12348:543:1",
"statements": [
{
"clauses": [
{
"block": {
"id": 897,
"nodeType": "Block",
"src": "12463:91:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 891,
"name": "retval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "12488:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"expression": {
"id": 892,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "12498:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 893,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 1068,
"src": "12498:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
"typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
}
},
"id": 894,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "12498:41:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "12488:51:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 874,
"id": 896,
"nodeType": "Return",
"src": "12481:58:1"
}
]
},
"errorName": "",
"id": 898,
"nodeType": "TryCatchClause",
"parameters": {
"id": 890,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 889,
"mutability": "mutable",
"name": "retval",
"nameLocation": "12455:6:1",
"nodeType": "VariableDeclaration",
"scope": 898,
"src": "12448:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 888,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "12448:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "12447:15:1"
},
"src": "12439:115:1"
},
{
"block": {
"id": 914,
"nodeType": "Block",
"src": "12583:298:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 905,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 902,
"name": "reason",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 900,
"src": "12605:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 903,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "12605:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 904,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12622:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "12605:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 912,
"nodeType": "Block",
"src": "12732:135:1",
"statements": [
{
"AST": {
"nodeType": "YulBlock",
"src": "12763:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12800:2:1",
"type": "",
"value": "32"
},
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "12804:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12796:3:1"
},
"nodeType": "YulFunctionCall",
"src": "12796:15:1"
},
{
"arguments": [
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "12819:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12813:5:1"
},
"nodeType": "YulFunctionCall",
"src": "12813:13:1"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12789:6:1"
},
"nodeType": "YulFunctionCall",
"src": "12789:38:1"
},
"nodeType": "YulExpressionStatement",
"src": "12789:38:1"
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 900,
"isOffset": false,
"isSlot": false,
"src": "12804:6:1",
"valueSize": 1
},
{
"declaration": 900,
"isOffset": false,
"isSlot": false,
"src": "12819:6:1",
"valueSize": 1
}
],
"id": 911,
"nodeType": "InlineAssembly",
"src": "12754:95:1"
}
]
},
"id": 913,
"nodeType": "IfStatement",
"src": "12601:266:1",
"trueBody": {
"id": 910,
"nodeType": "Block",
"src": "12625:101:1",
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12654:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 906,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967277,
4294967277
],
"referencedDeclaration": 4294967277,
"src": "12647:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12647:60:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 909,
"nodeType": "ExpressionStatement",
"src": "12647:60:1"
}
]
}
}
]
},
"errorName": "",
"id": 915,
"nodeType": "TryCatchClause",
"parameters": {
"id": 901,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 900,
"mutability": "mutable",
"name": "reason",
"nameLocation": "12575:6:1",
"nodeType": "VariableDeclaration",
"scope": 915,
"src": "12562:19:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 899,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12562:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "12561:21:1"
},
"src": "12555:326:1"
}
],
"externalCall": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 882,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "12403:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12403:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 884,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 864,
"src": "12417:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 885,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "12423:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 886,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 870,
"src": "12432:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"arguments": [
{
"id": 879,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 866,
"src": "12382:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 878,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "12366:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12366:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC721Receiver_$1069",
"typeString": "contract IERC721Receiver"
}
},
"id": 881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 1068,
"src": "12366:36:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
"typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
}
},
"id": 887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12366:72:1",
"tryCall": true,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"id": 916,
"nodeType": "TryStatement",
"src": "12362:519:1"
}
]
}
}
]
},
"documentation": {
"id": 862,
"nodeType": "StructuredDocumentation",
"src": "11614:542:1",
"text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
},
"id": 923,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_checkOnERC721Received",
"nameLocation": "12170:22:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 871,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 864,
"mutability": "mutable",
"name": "from",
"nameLocation": "12210:4:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12202:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 863,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12202:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 866,
"mutability": "mutable",
"name": "to",
"nameLocation": "12232:2:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12224:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 865,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12224:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 868,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "12252:7:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12244:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 867,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12244:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 870,
"mutability": "mutable",
"name": "_data",
"nameLocation": "12282:5:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12269:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 869,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12269:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "12192:101:1"
},
"returnParameters": {
"id": 874,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 873,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12311:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 872,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12311:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "12310:6:1"
},
"scope": 935,
"src": "12161:778:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 933,
"nodeType": "Block",
"src": "13615:2:1",
"statements": []
},
"documentation": {
"id": 924,
"nodeType": "StructuredDocumentation",
"src": "12945:545:1",
"text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"id": 934,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_beforeTokenTransfer",
"nameLocation": "13504:20:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 931,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 926,
"mutability": "mutable",
"name": "from",
"nameLocation": "13542:4:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13534:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 925,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13534:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 928,
"mutability": "mutable",
"name": "to",
"nameLocation": "13564:2:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13556:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 927,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13556:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 930,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "13584:7:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13576:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 929,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13576:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13524:73:1"
},
"returnParameters": {
"id": 932,
"nodeType": "ParameterList",
"parameters": [],
"src": "13615:0:1"
},
"scope": 935,
"src": "13495:122:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
}
],
"scope": 936,
"src": "613:13006:1",
"usedErrors": []
}
],
"src": "92:13528:1"
},
"legacyAST": {
"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
"exportedSymbols": {
"Address": [
1521
],
"Context": [
1543
],
"ERC165": [
1844
],
"ERC721": [
935
],
"IERC165": [
1856
],
"IERC721": [
1051
],
"IERC721Metadata": [
1224
],
"IERC721Receiver": [
1069
],
"Strings": [
1820
]
},
"id": 936,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 106,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "92:23:1"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"file": "./IERC721.sol",
"id": 107,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1052,
"src": "117:23:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
"file": "./IERC721Receiver.sol",
"id": 108,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1070,
"src": "141:31:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
"file": "./extensions/IERC721Metadata.sol",
"id": 109,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1225,
"src": "173:42:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"file": "../../utils/Address.sol",
"id": 110,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1522,
"src": "216:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Context.sol",
"file": "../../utils/Context.sol",
"id": 111,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1544,
"src": "250:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
"file": "../../utils/Strings.sol",
"id": 112,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1821,
"src": "284:33:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
"file": "../../utils/introspection/ERC165.sol",
"id": 113,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 936,
"sourceUnit": 1845,
"src": "318:46:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 115,
"name": "Context",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1543,
"src": "632:7:1"
},
"id": 116,
"nodeType": "InheritanceSpecifier",
"src": "632:7:1"
},
{
"baseName": {
"id": 117,
"name": "ERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1844,
"src": "641:6:1"
},
"id": 118,
"nodeType": "InheritanceSpecifier",
"src": "641:6:1"
},
{
"baseName": {
"id": 119,
"name": "IERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1051,
"src": "649:7:1"
},
"id": 120,
"nodeType": "InheritanceSpecifier",
"src": "649:7:1"
},
{
"baseName": {
"id": 121,
"name": "IERC721Metadata",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1224,
"src": "658:15:1"
},
"id": 122,
"nodeType": "InheritanceSpecifier",
"src": "658:15:1"
}
],
"canonicalName": "ERC721",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 114,
"nodeType": "StructuredDocumentation",
"src": "366:246:1",
"text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
},
"fullyImplemented": true,
"id": 935,
"linearizedBaseContracts": [
935,
1224,
1051,
1844,
1856,
1543
],
"name": "ERC721",
"nameLocation": "622:6:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 125,
"libraryName": {
"id": 123,
"name": "Address",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1521,
"src": "686:7:1"
},
"nodeType": "UsingForDirective",
"src": "680:26:1",
"typeName": {
"id": 124,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "698:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 128,
"libraryName": {
"id": 126,
"name": "Strings",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1820,
"src": "717:7:1"
},
"nodeType": "UsingForDirective",
"src": "711:26:1",
"typeName": {
"id": 127,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "729:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"id": 130,
"mutability": "mutable",
"name": "_name",
"nameLocation": "776:5:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "761:20:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 129,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "761:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"constant": false,
"id": 132,
"mutability": "mutable",
"name": "_symbol",
"nameLocation": "823:7:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "808:22:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 131,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "808:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"constant": false,
"id": 136,
"mutability": "mutable",
"name": "_owners",
"nameLocation": "919:7:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "883:43:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 135,
"keyType": {
"id": 133,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "891:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "883:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 134,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "902:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 140,
"mutability": "mutable",
"name": "_balances",
"nameLocation": "1013:9:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "977:45:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 139,
"keyType": {
"id": 137,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "985:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "977:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 138,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "996:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 144,
"mutability": "mutable",
"name": "_tokenApprovals",
"nameLocation": "1114:15:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "1078:51:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 143,
"keyType": {
"id": 141,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1086:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "1078:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 142,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1097:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"constant": false,
"id": 150,
"mutability": "mutable",
"name": "_operatorApprovals",
"nameLocation": "1237:18:1",
"nodeType": "VariableDeclaration",
"scope": 935,
"src": "1184:71:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"typeName": {
"id": 149,
"keyType": {
"id": 145,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1192:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1184:44:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"valueType": {
"id": 148,
"keyType": {
"id": 146,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1211:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1203:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 147,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1222:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"visibility": "private"
},
{
"body": {
"id": 166,
"nodeType": "Block",
"src": "1431:57:1",
"statements": [
{
"expression": {
"id": 160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 158,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "1441:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 159,
"name": "name_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 153,
"src": "1449:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1441:13:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 161,
"nodeType": "ExpressionStatement",
"src": "1441:13:1"
},
{
"expression": {
"id": 164,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 162,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 132,
"src": "1464:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 163,
"name": "symbol_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 155,
"src": "1474:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1464:17:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 165,
"nodeType": "ExpressionStatement",
"src": "1464:17:1"
}
]
},
"documentation": {
"id": 151,
"nodeType": "StructuredDocumentation",
"src": "1262:108:1",
"text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
},
"id": 167,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 156,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 153,
"mutability": "mutable",
"name": "name_",
"nameLocation": "1401:5:1",
"nodeType": "VariableDeclaration",
"scope": 167,
"src": "1387:19:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 152,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1387:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 155,
"mutability": "mutable",
"name": "symbol_",
"nameLocation": "1422:7:1",
"nodeType": "VariableDeclaration",
"scope": 167,
"src": "1408:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 154,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1408:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1386:44:1"
},
"returnParameters": {
"id": 157,
"nodeType": "ParameterList",
"parameters": [],
"src": "1431:0:1"
},
"scope": 935,
"src": "1375:113:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
1843,
1855
],
"body": {
"id": 197,
"nodeType": "Block",
"src": "1663:192:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 178,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1692:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 180,
"name": "IERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1051,
"src": "1712:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$",
"typeString": "type(contract IERC721)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$",
"typeString": "type(contract IERC721)"
}
],
"id": 179,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967269,
"src": "1707:4:1",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 181,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1707:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1051",
"typeString": "type(contract IERC721)"
}
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1707:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1692:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 184,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1748:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 186,
"name": "IERC721Metadata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1224,
"src": "1768:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$",
"typeString": "type(contract IERC721Metadata)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$",
"typeString": "type(contract IERC721Metadata)"
}
],
"id": 185,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967269,
"src": "1763:4:1",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1763:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1224",
"typeString": "type(contract IERC721Metadata)"
}
},
"id": 188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1763:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1748:48:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1692:104:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 193,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 170,
"src": "1836:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
],
"expression": {
"id": 191,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967271,
"src": "1812:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_ERC721_$935_$",
"typeString": "type(contract super ERC721)"
}
},
"id": 192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "supportsInterface",
"nodeType": "MemberAccess",
"referencedDeclaration": 1843,
"src": "1812:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
"typeString": "function (bytes4) view returns (bool)"
}
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1812:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1692:156:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 177,
"id": 196,
"nodeType": "Return",
"src": "1673:175:1"
}
]
},
"documentation": {
"id": 168,
"nodeType": "StructuredDocumentation",
"src": "1494:56:1",
"text": " @dev See {IERC165-supportsInterface}."
},
"functionSelector": "01ffc9a7",
"id": 198,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "supportsInterface",
"nameLocation": "1564:17:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 174,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 172,
"name": "ERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1844,
"src": "1631:6:1"
},
{
"id": 173,
"name": "IERC165",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1856,
"src": "1639:7:1"
}
],
"src": "1622:25:1"
},
"parameters": {
"id": 171,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 170,
"mutability": "mutable",
"name": "interfaceId",
"nameLocation": "1589:11:1",
"nodeType": "VariableDeclaration",
"scope": 198,
"src": "1582:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 169,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "1582:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "1581:20:1"
},
"returnParameters": {
"id": 177,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 176,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 198,
"src": "1657:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 175,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1657:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1656:6:1"
},
"scope": 935,
"src": "1555:300:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
976
],
"body": {
"id": 221,
"nodeType": "Block",
"src": "1995:124:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 213,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 208,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 201,
"src": "2013:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 211,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2030:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 210,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2022:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 209,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2022:7:1",
"typeDescriptions": {}
}
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2022:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2013:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
"id": 214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2034:44:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
"typeString": "literal_string \"ERC721: balance query for the zero address\""
},
"value": "ERC721: balance query for the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
"typeString": "literal_string \"ERC721: balance query for the zero address\""
}
],
"id": 207,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2005:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2005:74:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 216,
"nodeType": "ExpressionStatement",
"src": "2005:74:1"
},
{
"expression": {
"baseExpression": {
"id": 217,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "2096:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 219,
"indexExpression": {
"id": 218,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 201,
"src": "2106:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2096:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 206,
"id": 220,
"nodeType": "Return",
"src": "2089:23:1"
}
]
},
"documentation": {
"id": 199,
"nodeType": "StructuredDocumentation",
"src": "1861:48:1",
"text": " @dev See {IERC721-balanceOf}."
},
"functionSelector": "70a08231",
"id": 222,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "1923:9:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 203,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1968:8:1"
},
"parameters": {
"id": 202,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 201,
"mutability": "mutable",
"name": "owner",
"nameLocation": "1941:5:1",
"nodeType": "VariableDeclaration",
"scope": 222,
"src": "1933:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 200,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1933:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1932:15:1"
},
"returnParameters": {
"id": 206,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 205,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 222,
"src": "1986:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 204,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1986:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1985:9:1"
},
"scope": 935,
"src": "1914:205:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
984
],
"body": {
"id": 249,
"nodeType": "Block",
"src": "2257:154:1",
"statements": [
{
"assignments": [
232
],
"declarations": [
{
"constant": false,
"id": 232,
"mutability": "mutable",
"name": "owner",
"nameLocation": "2275:5:1",
"nodeType": "VariableDeclaration",
"scope": 249,
"src": "2267:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 231,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2267:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 236,
"initialValue": {
"baseExpression": {
"id": 233,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "2283:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 235,
"indexExpression": {
"id": 234,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "2291:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2283:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2267:32:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 238,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "2317:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2334:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 240,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2326:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 239,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2326:7:1",
"typeDescriptions": {}
}
},
"id": 242,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2326:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2317:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 244,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2338:43:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
"typeString": "literal_string \"ERC721: owner query for nonexistent token\""
},
"value": "ERC721: owner query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
"typeString": "literal_string \"ERC721: owner query for nonexistent token\""
}
],
"id": 237,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2309:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2309:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 246,
"nodeType": "ExpressionStatement",
"src": "2309:73:1"
},
{
"expression": {
"id": 247,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "2399:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 230,
"id": 248,
"nodeType": "Return",
"src": "2392:12:1"
}
]
},
"documentation": {
"id": 223,
"nodeType": "StructuredDocumentation",
"src": "2125:46:1",
"text": " @dev See {IERC721-ownerOf}."
},
"functionSelector": "6352211e",
"id": 250,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "ownerOf",
"nameLocation": "2185:7:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 227,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2230:8:1"
},
"parameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2201:7:1",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "2193:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2193:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2192:17:1"
},
"returnParameters": {
"id": 230,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 229,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "2248:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 228,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2248:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2247:9:1"
},
"scope": 935,
"src": "2176:235:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1209
],
"body": {
"id": 259,
"nodeType": "Block",
"src": "2542:29:1",
"statements": [
{
"expression": {
"id": 257,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2559:5:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 256,
"id": 258,
"nodeType": "Return",
"src": "2552:12:1"
}
]
},
"documentation": {
"id": 251,
"nodeType": "StructuredDocumentation",
"src": "2417:51:1",
"text": " @dev See {IERC721Metadata-name}."
},
"functionSelector": "06fdde03",
"id": 260,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nameLocation": "2482:4:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 253,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2509:8:1"
},
"parameters": {
"id": 252,
"nodeType": "ParameterList",
"parameters": [],
"src": "2486:2:1"
},
"returnParameters": {
"id": 256,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 255,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 260,
"src": "2527:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 254,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2527:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2526:15:1"
},
"scope": 935,
"src": "2473:98:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1215
],
"body": {
"id": 269,
"nodeType": "Block",
"src": "2706:31:1",
"statements": [
{
"expression": {
"id": 267,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 132,
"src": "2723:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 266,
"id": 268,
"nodeType": "Return",
"src": "2716:14:1"
}
]
},
"documentation": {
"id": 261,
"nodeType": "StructuredDocumentation",
"src": "2577:53:1",
"text": " @dev See {IERC721Metadata-symbol}."
},
"functionSelector": "95d89b41",
"id": 270,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nameLocation": "2644:6:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 263,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2673:8:1"
},
"parameters": {
"id": 262,
"nodeType": "ParameterList",
"parameters": [],
"src": "2650:2:1"
},
"returnParameters": {
"id": 266,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 265,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 270,
"src": "2691:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 264,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2691:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2690:15:1"
},
"scope": 935,
"src": "2635:102:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1223
],
"body": {
"id": 311,
"nodeType": "Block",
"src": "2891:241:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 281,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 273,
"src": "2917:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 280,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "2909:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2909:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2927:49:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
"typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
},
"value": "ERC721Metadata: URI query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
"typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
}
],
"id": 279,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2901:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2901:76:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 285,
"nodeType": "ExpressionStatement",
"src": "2901:76:1"
},
{
"assignments": [
287
],
"declarations": [
{
"constant": false,
"id": 287,
"mutability": "mutable",
"name": "baseURI",
"nameLocation": "3002:7:1",
"nodeType": "VariableDeclaration",
"scope": 311,
"src": "2988:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 286,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2988:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 290,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 288,
"name": "_baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 321,
"src": "3012:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view returns (string memory)"
}
},
"id": 289,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3012:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2988:34:1"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 297,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 293,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 287,
"src": "3045:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 292,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3039:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 291,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3039:5:1",
"typeDescriptions": {}
}
},
"id": 294,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3039:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 296,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3063:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3039:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"hexValue": "",
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3123:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "3039:86:1",
"trueExpression": {
"arguments": [
{
"arguments": [
{
"id": 302,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 287,
"src": "3091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 303,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 273,
"src": "3100:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toString",
"nodeType": "MemberAccess",
"referencedDeclaration": 1702,
"src": "3100:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (string memory)"
}
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3100:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"id": 300,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "3074:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 301,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "3074:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 306,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3074:45:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3067:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 298,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3067:6:1",
"typeDescriptions": {}
}
},
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3067:53:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 278,
"id": 310,
"nodeType": "Return",
"src": "3032:93:1"
}
]
},
"documentation": {
"id": 271,
"nodeType": "StructuredDocumentation",
"src": "2743:55:1",
"text": " @dev See {IERC721Metadata-tokenURI}."
},
"functionSelector": "c87b56dd",
"id": 312,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "tokenURI",
"nameLocation": "2812:8:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 275,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2858:8:1"
},
"parameters": {
"id": 274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 273,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2829:7:1",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "2821:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 272,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2821:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2820:17:1"
},
"returnParameters": {
"id": 278,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 277,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "2876:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 276,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2876:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2875:15:1"
},
"scope": 935,
"src": "2803:329:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 320,
"nodeType": "Block",
"src": "3439:26:1",
"statements": [
{
"expression": {
"hexValue": "",
"id": 318,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3456:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"functionReturnParameters": 317,
"id": 319,
"nodeType": "Return",
"src": "3449:9:1"
}
]
},
"documentation": {
"id": 313,
"nodeType": "StructuredDocumentation",
"src": "3138:230:1",
"text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts."
},
"id": 321,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_baseURI",
"nameLocation": "3382:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 314,
"nodeType": "ParameterList",
"parameters": [],
"src": "3390:2:1"
},
"returnParameters": {
"id": 317,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 316,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 321,
"src": "3424:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 315,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3424:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "3423:15:1"
},
"scope": 935,
"src": "3373:92:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"baseFunctions": [
1012
],
"body": {
"id": 363,
"nodeType": "Block",
"src": "3592:331:1",
"statements": [
{
"assignments": [
331
],
"declarations": [
{
"constant": false,
"id": 331,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3610:5:1",
"nodeType": "VariableDeclaration",
"scope": 363,
"src": "3602:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 330,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3602:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 336,
"initialValue": {
"arguments": [
{
"id": 334,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 326,
"src": "3633:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 332,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "3618:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "3618:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3618:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3602:39:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 338,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 324,
"src": "3659:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 339,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3665:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3659:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3672:35:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
"typeString": "literal_string \"ERC721: approval to current owner\""
},
"value": "ERC721: approval to current owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
"typeString": "literal_string \"ERC721: approval to current owner\""
}
],
"id": 337,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "3651:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3651:57:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 343,
"nodeType": "ExpressionStatement",
"src": "3651:57:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 348,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 345,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "3740:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3740:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 347,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3756:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3740:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 350,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "3782:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 351,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "3789:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 352,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3789:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 349,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 420,
"src": "3765:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3765:37:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3740:62:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
"id": 355,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3816:58:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
"typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
},
"value": "ERC721: approve caller is not owner nor approved for all"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
"typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
}
],
"id": 344,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "3719:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3719:165:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 357,
"nodeType": "ExpressionStatement",
"src": "3719:165:1"
},
{
"expression": {
"arguments": [
{
"id": 359,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 324,
"src": "3904:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 360,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 326,
"src": "3908:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 358,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "3895:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3895:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 362,
"nodeType": "ExpressionStatement",
"src": "3895:21:1"
}
]
},
"documentation": {
"id": 322,
"nodeType": "StructuredDocumentation",
"src": "3471:46:1",
"text": " @dev See {IERC721-approve}."
},
"functionSelector": "095ea7b3",
"id": 364,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "approve",
"nameLocation": "3531:7:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 328,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3583:8:1"
},
"parameters": {
"id": 327,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 324,
"mutability": "mutable",
"name": "to",
"nameLocation": "3547:2:1",
"nodeType": "VariableDeclaration",
"scope": 364,
"src": "3539:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 323,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3539:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 326,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "3559:7:1",
"nodeType": "VariableDeclaration",
"scope": 364,
"src": "3551:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 325,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3551:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3538:29:1"
},
"returnParameters": {
"id": 329,
"nodeType": "ParameterList",
"parameters": [],
"src": "3592:0:1"
},
"scope": 935,
"src": "3522:401:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1020
],
"body": {
"id": 384,
"nodeType": "Block",
"src": "4069:132:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 375,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 367,
"src": "4095:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 374,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "4087:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 376,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4087:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 377,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4105:46:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
"typeString": "literal_string \"ERC721: approved query for nonexistent token\""
},
"value": "ERC721: approved query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
"typeString": "literal_string \"ERC721: approved query for nonexistent token\""
}
],
"id": 373,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "4079:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4079:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 379,
"nodeType": "ExpressionStatement",
"src": "4079:73:1"
},
{
"expression": {
"baseExpression": {
"id": 380,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 144,
"src": "4170:15:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 382,
"indexExpression": {
"id": 381,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 367,
"src": "4186:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4170:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 372,
"id": 383,
"nodeType": "Return",
"src": "4163:31:1"
}
]
},
"documentation": {
"id": 365,
"nodeType": "StructuredDocumentation",
"src": "3929:50:1",
"text": " @dev See {IERC721-getApproved}."
},
"functionSelector": "081812fc",
"id": 385,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getApproved",
"nameLocation": "3993:11:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 369,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4042:8:1"
},
"parameters": {
"id": 368,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 367,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "4013:7:1",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "4005:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 366,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4005:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4004:17:1"
},
"returnParameters": {
"id": 372,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 371,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "4060:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4060:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4059:9:1"
},
"scope": 935,
"src": "3984:217:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1028
],
"body": {
"id": 401,
"nodeType": "Block",
"src": "4352:69:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 395,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "4381:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4381:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 397,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 388,
"src": "4395:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 398,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 390,
"src": "4405:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 394,
"name": "_setApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 861,
"src": "4362:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 399,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4362:52:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 400,
"nodeType": "ExpressionStatement",
"src": "4362:52:1"
}
]
},
"documentation": {
"id": 386,
"nodeType": "StructuredDocumentation",
"src": "4207:56:1",
"text": " @dev See {IERC721-setApprovalForAll}."
},
"functionSelector": "a22cb465",
"id": 402,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setApprovalForAll",
"nameLocation": "4277:17:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 392,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4343:8:1"
},
"parameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 388,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4303:8:1",
"nodeType": "VariableDeclaration",
"scope": 402,
"src": "4295:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 387,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4295:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 390,
"mutability": "mutable",
"name": "approved",
"nameLocation": "4318:8:1",
"nodeType": "VariableDeclaration",
"scope": 402,
"src": "4313:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 389,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4313:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4294:33:1"
},
"returnParameters": {
"id": 393,
"nodeType": "ParameterList",
"parameters": [],
"src": "4352:0:1"
},
"scope": 935,
"src": "4268:153:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1038
],
"body": {
"id": 419,
"nodeType": "Block",
"src": "4590:59:1",
"statements": [
{
"expression": {
"baseExpression": {
"baseExpression": {
"id": 413,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 150,
"src": "4607:18:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 415,
"indexExpression": {
"id": 414,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "4626:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4607:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 417,
"indexExpression": {
"id": 416,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "4633:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4607:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 412,
"id": 418,
"nodeType": "Return",
"src": "4600:42:1"
}
]
},
"documentation": {
"id": 403,
"nodeType": "StructuredDocumentation",
"src": "4427:55:1",
"text": " @dev See {IERC721-isApprovedForAll}."
},
"functionSelector": "e985e9c5",
"id": 420,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isApprovedForAll",
"nameLocation": "4496:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 409,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4566:8:1"
},
"parameters": {
"id": 408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 405,
"mutability": "mutable",
"name": "owner",
"nameLocation": "4521:5:1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4513:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 404,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4513:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 407,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4536:8:1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4528:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 406,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4528:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4512:33:1"
},
"returnParameters": {
"id": 412,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 411,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "4584:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 410,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4584:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4583:6:1"
},
"scope": 935,
"src": "4487:162:1",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1004
],
"body": {
"id": 446,
"nodeType": "Block",
"src": "4830:211:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 433,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "4919:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4919:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 435,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 427,
"src": "4933:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 432,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 584,
"src": "4900:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4900:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
"id": 437,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4943:51:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
},
"value": "ERC721: transfer caller is not owner nor approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
}
],
"id": 431,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "4892:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4892:103:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 439,
"nodeType": "ExpressionStatement",
"src": "4892:103:1"
},
{
"expression": {
"arguments": [
{
"id": 441,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 423,
"src": "5016:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 442,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 425,
"src": "5022:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 443,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 427,
"src": "5026:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 440,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5006:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 444,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5006:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 445,
"nodeType": "ExpressionStatement",
"src": "5006:28:1"
}
]
},
"documentation": {
"id": 421,
"nodeType": "StructuredDocumentation",
"src": "4655:51:1",
"text": " @dev See {IERC721-transferFrom}."
},
"functionSelector": "23b872dd",
"id": 447,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nameLocation": "4720:12:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 429,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4821:8:1"
},
"parameters": {
"id": 428,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 423,
"mutability": "mutable",
"name": "from",
"nameLocation": "4750:4:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4742:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 422,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4742:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 425,
"mutability": "mutable",
"name": "to",
"nameLocation": "4772:2:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4764:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4764:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 427,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "4792:7:1",
"nodeType": "VariableDeclaration",
"scope": 447,
"src": "4784:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 426,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4784:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4732:73:1"
},
"returnParameters": {
"id": 430,
"nodeType": "ParameterList",
"parameters": [],
"src": "4830:0:1"
},
"scope": 935,
"src": "4711:330:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
994
],
"body": {
"id": 465,
"nodeType": "Block",
"src": "5230:56:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 459,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 450,
"src": "5257:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 460,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 452,
"src": "5263:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 461,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 454,
"src": "5267:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 462,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5276:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"id": 458,
"name": "safeTransferFrom",
"nodeType": "Identifier",
"overloadedDeclarations": [
466,
496
],
"referencedDeclaration": 496,
"src": "5240:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,address,uint256,bytes memory)"
}
},
"id": 463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5240:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 464,
"nodeType": "ExpressionStatement",
"src": "5240:39:1"
}
]
},
"documentation": {
"id": 448,
"nodeType": "StructuredDocumentation",
"src": "5047:55:1",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "42842e0e",
"id": 466,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5116:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 456,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5221:8:1"
},
"parameters": {
"id": 455,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 450,
"mutability": "mutable",
"name": "from",
"nameLocation": "5150:4:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5142:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 449,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5142:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 452,
"mutability": "mutable",
"name": "to",
"nameLocation": "5172:2:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5164:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 451,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5164:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 454,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5192:7:1",
"nodeType": "VariableDeclaration",
"scope": 466,
"src": "5184:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 453,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5184:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5132:73:1"
},
"returnParameters": {
"id": 457,
"nodeType": "ParameterList",
"parameters": [],
"src": "5230:0:1"
},
"scope": 935,
"src": "5107:179:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
1050
],
"body": {
"id": 495,
"nodeType": "Block",
"src": "5503:169:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 481,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "5540:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5540:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 483,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "5554:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 480,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 584,
"src": "5521:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5521:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
"id": 485,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5564:51:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
},
"value": "ERC721: transfer caller is not owner nor approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
}
],
"id": 479,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "5513:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5513:103:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 487,
"nodeType": "ExpressionStatement",
"src": "5513:103:1"
},
{
"expression": {
"arguments": [
{
"id": 489,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 469,
"src": "5640:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 490,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 471,
"src": "5646:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 491,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "5650:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 492,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 475,
"src": "5659:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 488,
"name": "_safeTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 525,
"src": "5626:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,address,uint256,bytes memory)"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5626:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 494,
"nodeType": "ExpressionStatement",
"src": "5626:39:1"
}
]
},
"documentation": {
"id": 467,
"nodeType": "StructuredDocumentation",
"src": "5292:55:1",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "b88d4fde",
"id": 496,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5361:16:1",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 477,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5494:8:1"
},
"parameters": {
"id": 476,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 469,
"mutability": "mutable",
"name": "from",
"nameLocation": "5395:4:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5387:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 468,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5387:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 471,
"mutability": "mutable",
"name": "to",
"nameLocation": "5417:2:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5409:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 470,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5409:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 473,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5437:7:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5429:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 472,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5429:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 475,
"mutability": "mutable",
"name": "_data",
"nameLocation": "5467:5:1",
"nodeType": "VariableDeclaration",
"scope": 496,
"src": "5454:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 474,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5454:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5377:101:1"
},
"returnParameters": {
"id": 478,
"nodeType": "ParameterList",
"parameters": [],
"src": "5503:0:1"
},
"scope": 935,
"src": "5352:320:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 524,
"nodeType": "Block",
"src": "6675:166:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 509,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "6695:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 510,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 501,
"src": "6701:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 511,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
"src": "6705:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 508,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "6685:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6685:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 513,
"nodeType": "ExpressionStatement",
"src": "6685:28:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 516,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "6754:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 517,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 501,
"src": "6760:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 518,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
"src": "6764:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 519,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 505,
"src": "6773:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 515,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 923,
"src": "6731:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory) returns (bool)"
}
},
"id": 520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6731:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 521,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6781:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 514,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "6723:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6723:111:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 523,
"nodeType": "ExpressionStatement",
"src": "6723:111:1"
}
]
},
"documentation": {
"id": 497,
"nodeType": "StructuredDocumentation",
"src": "5678:851:1",
"text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
},
"id": 525,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeTransfer",
"nameLocation": "6543:13:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 506,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 499,
"mutability": "mutable",
"name": "from",
"nameLocation": "6574:4:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6566:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 498,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6566:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 501,
"mutability": "mutable",
"name": "to",
"nameLocation": "6596:2:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6588:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 500,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6588:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 503,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "6616:7:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6608:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 502,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6608:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 505,
"mutability": "mutable",
"name": "_data",
"nameLocation": "6646:5:1",
"nodeType": "VariableDeclaration",
"scope": 525,
"src": "6633:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 504,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6633:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6556:101:1"
},
"returnParameters": {
"id": 507,
"nodeType": "ParameterList",
"parameters": [],
"src": "6675:0:1"
},
"scope": 935,
"src": "6534:307:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 542,
"nodeType": "Block",
"src": "7215:54:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 540,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"baseExpression": {
"id": 533,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "7232:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 535,
"indexExpression": {
"id": 534,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 528,
"src": "7240:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7232:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 538,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7260:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 537,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7252:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 536,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7252:7:1",
"typeDescriptions": {}
}
},
"id": 539,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7252:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7232:30:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 532,
"id": 541,
"nodeType": "Return",
"src": "7225:37:1"
}
]
},
"documentation": {
"id": 526,
"nodeType": "StructuredDocumentation",
"src": "6847:292:1",
"text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
},
"id": 543,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_exists",
"nameLocation": "7153:7:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 529,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 528,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7169:7:1",
"nodeType": "VariableDeclaration",
"scope": 543,
"src": "7161:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 527,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7161:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7160:17:1"
},
"returnParameters": {
"id": 532,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 531,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 543,
"src": "7209:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 530,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7209:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7208:6:1"
},
"scope": 935,
"src": "7144:125:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 583,
"nodeType": "Block",
"src": "7526:245:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 555,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7552:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 554,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "7544:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 556,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7544:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
"id": 557,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7562:46:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
"typeString": "literal_string \"ERC721: operator query for nonexistent token\""
},
"value": "ERC721: operator query for nonexistent token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
"typeString": "literal_string \"ERC721: operator query for nonexistent token\""
}
],
"id": 553,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "7536:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 558,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7536:73:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 559,
"nodeType": "ExpressionStatement",
"src": "7536:73:1"
},
{
"assignments": [
561
],
"declarations": [
{
"constant": false,
"id": 561,
"mutability": "mutable",
"name": "owner",
"nameLocation": "7627:5:1",
"nodeType": "VariableDeclaration",
"scope": 583,
"src": "7619:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 560,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7619:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 566,
"initialValue": {
"arguments": [
{
"id": 564,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7650:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 562,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "7635:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "7635:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 565,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7635:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7619:39:1"
},
{
"expression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 567,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7676:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 568,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "7687:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7676:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 571,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 548,
"src": "7708:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 570,
"name": "getApproved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "7696:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7696:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 573,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7720:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7696:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7676:51:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 577,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "7748:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 578,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 546,
"src": "7755:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 576,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 420,
"src": "7731:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7731:32:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7676:87:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 581,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7675:89:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 552,
"id": 582,
"nodeType": "Return",
"src": "7668:96:1"
}
]
},
"documentation": {
"id": 544,
"nodeType": "StructuredDocumentation",
"src": "7275:147:1",
"text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
},
"id": 584,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_isApprovedOrOwner",
"nameLocation": "7436:18:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 549,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 546,
"mutability": "mutable",
"name": "spender",
"nameLocation": "7463:7:1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7455:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 545,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7455:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 548,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7480:7:1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7472:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 547,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7472:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7454:34:1"
},
"returnParameters": {
"id": 552,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 551,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 584,
"src": "7520:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 550,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7520:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7519:6:1"
},
"scope": 935,
"src": "7427:344:1",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 598,
"nodeType": "Block",
"src": "8166:43:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 593,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 587,
"src": "8186:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 594,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "8190:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 595,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8199:2:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"id": 592,
"name": "_safeMint",
"nodeType": "Identifier",
"overloadedDeclarations": [
599,
628
],
"referencedDeclaration": 628,
"src": "8176:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,uint256,bytes memory)"
}
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8176:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 597,
"nodeType": "ExpressionStatement",
"src": "8176:26:1"
}
]
},
"documentation": {
"id": 585,
"nodeType": "StructuredDocumentation",
"src": "7777:319:1",
"text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
},
"id": 599,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8110:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 590,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 587,
"mutability": "mutable",
"name": "to",
"nameLocation": "8128:2:1",
"nodeType": "VariableDeclaration",
"scope": 599,
"src": "8120:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 586,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8120:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 589,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8140:7:1",
"nodeType": "VariableDeclaration",
"scope": 599,
"src": "8132:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 588,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8132:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "8119:29:1"
},
"returnParameters": {
"id": 591,
"nodeType": "ParameterList",
"parameters": [],
"src": "8166:0:1"
},
"scope": 935,
"src": "8101:108:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 627,
"nodeType": "Block",
"src": "8545:196:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 610,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 602,
"src": "8561:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 611,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 604,
"src": "8565:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 609,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 685,
"src": "8555:5:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8555:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 613,
"nodeType": "ExpressionStatement",
"src": "8555:18:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 618,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8635:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8627:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 616,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8627:7:1",
"typeDescriptions": {}
}
},
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8627:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 620,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 602,
"src": "8639:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 621,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 604,
"src": "8643:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 622,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 606,
"src": "8652:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 615,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 923,
"src": "8604:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory) returns (bool)"
}
},
"id": 623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8604:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 624,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8672:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 614,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "8583:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 625,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8583:151:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 626,
"nodeType": "ExpressionStatement",
"src": "8583:151:1"
}
]
},
"documentation": {
"id": 600,
"nodeType": "StructuredDocumentation",
"src": "8215:210:1",
"text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
},
"id": 628,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8439:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 607,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 602,
"mutability": "mutable",
"name": "to",
"nameLocation": "8466:2:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8458:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 601,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8458:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 604,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8486:7:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8478:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 603,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8478:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 606,
"mutability": "mutable",
"name": "_data",
"nameLocation": "8516:5:1",
"nodeType": "VariableDeclaration",
"scope": 628,
"src": "8503:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 605,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8503:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "8448:79:1"
},
"returnParameters": {
"id": 608,
"nodeType": "ParameterList",
"parameters": [],
"src": "8545:0:1"
},
"scope": 935,
"src": "8430:311:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 684,
"nodeType": "Block",
"src": "9124:311:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 637,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9142:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 640,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9156:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9148:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 638,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9148:7:1",
"typeDescriptions": {}
}
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9148:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9142:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9160:34:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
"typeString": "literal_string \"ERC721: mint to the zero address\""
},
"value": "ERC721: mint to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
"typeString": "literal_string \"ERC721: mint to the zero address\""
}
],
"id": 636,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "9134:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9134:61:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 645,
"nodeType": "ExpressionStatement",
"src": "9134:61:1"
},
{
"expression": {
"arguments": [
{
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9213:17:1",
"subExpression": {
"arguments": [
{
"id": 648,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9222:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 647,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "9214:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9214:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9232:30:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
"typeString": "literal_string \"ERC721: token already minted\""
},
"value": "ERC721: token already minted"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
"typeString": "literal_string \"ERC721: token already minted\""
}
],
"id": 646,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "9205:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 652,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9205:58:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 653,
"nodeType": "ExpressionStatement",
"src": "9205:58:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9303:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 656,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9295:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 655,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9295:7:1",
"typeDescriptions": {}
}
},
"id": 658,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9295:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 659,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9307:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 660,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9311:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 654,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "9274:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9274:45:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 662,
"nodeType": "ExpressionStatement",
"src": "9274:45:1"
},
{
"expression": {
"id": 667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 663,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "9330:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 665,
"indexExpression": {
"id": 664,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9340:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9330:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9347:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9330:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 668,
"nodeType": "ExpressionStatement",
"src": "9330:18:1"
},
{
"expression": {
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 669,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "9358:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 671,
"indexExpression": {
"id": 670,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9358:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 672,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9377:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9358:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 674,
"nodeType": "ExpressionStatement",
"src": "9358:21:1"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9412:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 677,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9404:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 676,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9404:7:1",
"typeDescriptions": {}
}
},
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9404:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 680,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 631,
"src": "9416:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 681,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "9420:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 675,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "9395:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 682,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9395:33:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 683,
"nodeType": "EmitStatement",
"src": "9390:38:1"
}
]
},
"documentation": {
"id": 629,
"nodeType": "StructuredDocumentation",
"src": "8747:311:1",
"text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
},
"id": 685,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nameLocation": "9072:5:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 634,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 631,
"mutability": "mutable",
"name": "to",
"nameLocation": "9086:2:1",
"nodeType": "VariableDeclaration",
"scope": 685,
"src": "9078:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 630,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9078:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 633,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "9098:7:1",
"nodeType": "VariableDeclaration",
"scope": 685,
"src": "9090:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 632,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9090:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9077:29:1"
},
"returnParameters": {
"id": 635,
"nodeType": "ParameterList",
"parameters": [],
"src": "9124:0:1"
},
"scope": 935,
"src": "9063:372:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 735,
"nodeType": "Block",
"src": "9701:299:1",
"statements": [
{
"assignments": [
692
],
"declarations": [
{
"constant": false,
"id": 692,
"mutability": "mutable",
"name": "owner",
"nameLocation": "9719:5:1",
"nodeType": "VariableDeclaration",
"scope": 735,
"src": "9711:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 691,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9711:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 697,
"initialValue": {
"arguments": [
{
"id": 695,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9742:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 693,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "9727:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "9727:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 696,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9727:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9711:39:1"
},
{
"expression": {
"arguments": [
{
"id": 699,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9782:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9797:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9789:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 700,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9789:7:1",
"typeDescriptions": {}
}
},
"id": 703,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9789:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 704,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9801:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 698,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "9761:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 705,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9761:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 706,
"nodeType": "ExpressionStatement",
"src": "9761:48:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 710,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9864:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 709,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9856:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 708,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9856:7:1",
"typeDescriptions": {}
}
},
"id": 711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9856:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 712,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9868:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 707,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "9847:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9847:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 714,
"nodeType": "ExpressionStatement",
"src": "9847:29:1"
},
{
"expression": {
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 715,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "9887:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 717,
"indexExpression": {
"id": 716,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9897:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9887:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 718,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9907:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9887:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 720,
"nodeType": "ExpressionStatement",
"src": "9887:21:1"
},
{
"expression": {
"id": 724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "9918:23:1",
"subExpression": {
"baseExpression": {
"id": 721,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "9925:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 723,
"indexExpression": {
"id": 722,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9933:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9925:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 725,
"nodeType": "ExpressionStatement",
"src": "9918:23:1"
},
{
"eventCall": {
"arguments": [
{
"id": 727,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "9966:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 730,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9981:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 729,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9973:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 728,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9973:7:1",
"typeDescriptions": {}
}
},
"id": 731,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9973:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 732,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 688,
"src": "9985:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 726,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "9957:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9957:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 734,
"nodeType": "EmitStatement",
"src": "9952:41:1"
}
]
},
"documentation": {
"id": 686,
"nodeType": "StructuredDocumentation",
"src": "9441:206:1",
"text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
},
"id": 736,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nameLocation": "9661:5:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 689,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 688,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "9675:7:1",
"nodeType": "VariableDeclaration",
"scope": 736,
"src": "9667:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 687,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9667:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9666:17:1"
},
"returnParameters": {
"id": 690,
"nodeType": "ParameterList",
"parameters": [],
"src": "9701:0:1"
},
"scope": 935,
"src": "9652:348:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 804,
"nodeType": "Block",
"src": "10433:451:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 749,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10466:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 747,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "10451:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 748,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "10451:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10451:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 751,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10478:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10451:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e",
"id": 753,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10484:43:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
"typeString": "literal_string \"ERC721: transfer of token that is not own\""
},
"value": "ERC721: transfer of token that is not own"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
"typeString": "literal_string \"ERC721: transfer of token that is not own\""
}
],
"id": 746,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "10443:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 754,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10443:85:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 755,
"nodeType": "ExpressionStatement",
"src": "10443:85:1"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 762,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 757,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10546:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 760,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10560:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10552:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 758,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10552:7:1",
"typeDescriptions": {}
}
},
"id": 761,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10552:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10546:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
"id": 763,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10564:38:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
"typeString": "literal_string \"ERC721: transfer to the zero address\""
},
"value": "ERC721: transfer to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
"typeString": "literal_string \"ERC721: transfer to the zero address\""
}
],
"id": 756,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "10538:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10538:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 765,
"nodeType": "ExpressionStatement",
"src": "10538:65:1"
},
{
"expression": {
"arguments": [
{
"id": 767,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10635:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 768,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10641:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 769,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10645:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 766,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "10614:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 770,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10614:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 771,
"nodeType": "ExpressionStatement",
"src": "10614:39:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 775,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10732:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 774,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10724:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 773,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10724:7:1",
"typeDescriptions": {}
}
},
"id": 776,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10724:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 777,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10736:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 772,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 829,
"src": "10715:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10715:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 779,
"nodeType": "ExpressionStatement",
"src": "10715:29:1"
},
{
"expression": {
"id": 784,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 780,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "10755:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 782,
"indexExpression": {
"id": 781,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10765:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10755:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10774:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10755:20:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 785,
"nodeType": "ExpressionStatement",
"src": "10755:20:1"
},
{
"expression": {
"id": 790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 786,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 140,
"src": "10785:9:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 788,
"indexExpression": {
"id": 787,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10795:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10785:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10802:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10785:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 791,
"nodeType": "ExpressionStatement",
"src": "10785:18:1"
},
{
"expression": {
"id": 796,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 792,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 136,
"src": "10813:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 794,
"indexExpression": {
"id": 793,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10821:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10813:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 795,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10832:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10813:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 797,
"nodeType": "ExpressionStatement",
"src": "10813:21:1"
},
{
"eventCall": {
"arguments": [
{
"id": 799,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "10859:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 800,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "10865:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 801,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "10869:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 798,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 950,
"src": "10850:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10850:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 803,
"nodeType": "EmitStatement",
"src": "10845:32:1"
}
]
},
"documentation": {
"id": 737,
"nodeType": "StructuredDocumentation",
"src": "10006:313:1",
"text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
},
"id": 805,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "10333:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 744,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 739,
"mutability": "mutable",
"name": "from",
"nameLocation": "10360:4:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10352:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 738,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10352:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 741,
"mutability": "mutable",
"name": "to",
"nameLocation": "10382:2:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10374:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 740,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10374:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 743,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "10402:7:1",
"nodeType": "VariableDeclaration",
"scope": 805,
"src": "10394:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 742,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10394:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "10342:73:1"
},
"returnParameters": {
"id": 745,
"nodeType": "ParameterList",
"parameters": [],
"src": "10433:0:1"
},
"scope": 935,
"src": "10324:560:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 828,
"nodeType": "Block",
"src": "11059:107:1",
"statements": [
{
"expression": {
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 813,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 144,
"src": "11069:15:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 815,
"indexExpression": {
"id": 814,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11085:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11069:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 816,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 808,
"src": "11096:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11069:29:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 818,
"nodeType": "ExpressionStatement",
"src": "11069:29:1"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"id": 822,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11137:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 820,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "11122:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$935_$",
"typeString": "type(contract ERC721)"
}
},
"id": 821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 250,
"src": "11122:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 823,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11122:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 824,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 808,
"src": "11147:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 825,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "11151:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 819,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 959,
"src": "11113:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 826,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11113:46:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 827,
"nodeType": "EmitStatement",
"src": "11108:51:1"
}
]
},
"documentation": {
"id": 806,
"nodeType": "StructuredDocumentation",
"src": "10890:100:1",
"text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event."
},
"id": 829,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_approve",
"nameLocation": "11004:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 811,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 808,
"mutability": "mutable",
"name": "to",
"nameLocation": "11021:2:1",
"nodeType": "VariableDeclaration",
"scope": 829,
"src": "11013:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 807,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11013:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 810,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "11033:7:1",
"nodeType": "VariableDeclaration",
"scope": 829,
"src": "11025:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 809,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11025:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11012:29:1"
},
"returnParameters": {
"id": 812,
"nodeType": "ParameterList",
"parameters": [],
"src": "11059:0:1"
},
"scope": 935,
"src": "10995:171:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 860,
"nodeType": "Block",
"src": "11424:184:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 842,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 840,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11442:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 841,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11451:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11442:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
"id": 843,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11461:27:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
"typeString": "literal_string \"ERC721: approve to caller\""
},
"value": "ERC721: approve to caller"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
"typeString": "literal_string \"ERC721: approve to caller\""
}
],
"id": 839,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "11434:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11434:55:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 845,
"nodeType": "ExpressionStatement",
"src": "11434:55:1"
},
{
"expression": {
"id": 852,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 846,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 150,
"src": "11499:18:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 849,
"indexExpression": {
"id": 847,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11518:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11499:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 850,
"indexExpression": {
"id": 848,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11525:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11499:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 851,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 836,
"src": "11537:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "11499:46:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 853,
"nodeType": "ExpressionStatement",
"src": "11499:46:1"
},
{
"eventCall": {
"arguments": [
{
"id": 855,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "11575:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 856,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "11582:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 857,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 836,
"src": "11592:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 854,
"name": "ApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 968,
"src": "11560:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11560:41:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 859,
"nodeType": "EmitStatement",
"src": "11555:46:1"
}
]
},
"documentation": {
"id": 830,
"nodeType": "StructuredDocumentation",
"src": "11172:124:1",
"text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event."
},
"id": 861,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setApprovalForAll",
"nameLocation": "11310:18:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 837,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 832,
"mutability": "mutable",
"name": "owner",
"nameLocation": "11346:5:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11338:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 831,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11338:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 834,
"mutability": "mutable",
"name": "operator",
"nameLocation": "11369:8:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11361:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 833,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11361:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 836,
"mutability": "mutable",
"name": "approved",
"nameLocation": "11392:8:1",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "11387:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 835,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "11387:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "11328:78:1"
},
"returnParameters": {
"id": 838,
"nodeType": "ParameterList",
"parameters": [],
"src": "11424:0:1"
},
"scope": 935,
"src": "11301:307:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 922,
"nodeType": "Block",
"src": "12317:622:1",
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 875,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 866,
"src": "12331:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isContract",
"nodeType": "MemberAccess",
"referencedDeclaration": 1244,
"src": "12331:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 877,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12331:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 920,
"nodeType": "Block",
"src": "12897:36:1",
"statements": [
{
"expression": {
"hexValue": "74727565",
"id": 918,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12918:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 874,
"id": 919,
"nodeType": "Return",
"src": "12911:11:1"
}
]
},
"id": 921,
"nodeType": "IfStatement",
"src": "12327:606:1",
"trueBody": {
"id": 917,
"nodeType": "Block",
"src": "12348:543:1",
"statements": [
{
"clauses": [
{
"block": {
"id": 897,
"nodeType": "Block",
"src": "12463:91:1",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 891,
"name": "retval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "12488:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"expression": {
"id": 892,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "12498:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 893,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 1068,
"src": "12498:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
"typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
}
},
"id": 894,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "12498:41:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "12488:51:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 874,
"id": 896,
"nodeType": "Return",
"src": "12481:58:1"
}
]
},
"errorName": "",
"id": 898,
"nodeType": "TryCatchClause",
"parameters": {
"id": 890,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 889,
"mutability": "mutable",
"name": "retval",
"nameLocation": "12455:6:1",
"nodeType": "VariableDeclaration",
"scope": 898,
"src": "12448:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 888,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "12448:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "12447:15:1"
},
"src": "12439:115:1"
},
{
"block": {
"id": 914,
"nodeType": "Block",
"src": "12583:298:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 905,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 902,
"name": "reason",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 900,
"src": "12605:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 903,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "12605:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 904,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12622:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "12605:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 912,
"nodeType": "Block",
"src": "12732:135:1",
"statements": [
{
"AST": {
"nodeType": "YulBlock",
"src": "12763:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12800:2:1",
"type": "",
"value": "32"
},
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "12804:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12796:3:1"
},
"nodeType": "YulFunctionCall",
"src": "12796:15:1"
},
{
"arguments": [
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "12819:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12813:5:1"
},
"nodeType": "YulFunctionCall",
"src": "12813:13:1"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12789:6:1"
},
"nodeType": "YulFunctionCall",
"src": "12789:38:1"
},
"nodeType": "YulExpressionStatement",
"src": "12789:38:1"
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 900,
"isOffset": false,
"isSlot": false,
"src": "12804:6:1",
"valueSize": 1
},
{
"declaration": 900,
"isOffset": false,
"isSlot": false,
"src": "12819:6:1",
"valueSize": 1
}
],
"id": 911,
"nodeType": "InlineAssembly",
"src": "12754:95:1"
}
]
},
"id": 913,
"nodeType": "IfStatement",
"src": "12601:266:1",
"trueBody": {
"id": 910,
"nodeType": "Block",
"src": "12625:101:1",
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12654:52:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
},
"value": "ERC721: transfer to non ERC721Receiver implementer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
}
],
"id": 906,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967277,
4294967277
],
"referencedDeclaration": 4294967277,
"src": "12647:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12647:60:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 909,
"nodeType": "ExpressionStatement",
"src": "12647:60:1"
}
]
}
}
]
},
"errorName": "",
"id": 915,
"nodeType": "TryCatchClause",
"parameters": {
"id": 901,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 900,
"mutability": "mutable",
"name": "reason",
"nameLocation": "12575:6:1",
"nodeType": "VariableDeclaration",
"scope": 915,
"src": "12562:19:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 899,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12562:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "12561:21:1"
},
"src": "12555:326:1"
}
],
"externalCall": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 882,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1533,
"src": "12403:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12403:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 884,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 864,
"src": "12417:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 885,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "12423:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 886,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 870,
"src": "12432:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"arguments": [
{
"id": 879,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 866,
"src": "12382:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 878,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "12366:15:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12366:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC721Receiver_$1069",
"typeString": "contract IERC721Receiver"
}
},
"id": 881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 1068,
"src": "12366:36:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
"typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
}
},
"id": 887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12366:72:1",
"tryCall": true,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"id": 916,
"nodeType": "TryStatement",
"src": "12362:519:1"
}
]
}
}
]
},
"documentation": {
"id": 862,
"nodeType": "StructuredDocumentation",
"src": "11614:542:1",
"text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
},
"id": 923,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_checkOnERC721Received",
"nameLocation": "12170:22:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 871,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 864,
"mutability": "mutable",
"name": "from",
"nameLocation": "12210:4:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12202:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 863,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12202:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 866,
"mutability": "mutable",
"name": "to",
"nameLocation": "12232:2:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12224:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 865,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12224:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 868,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "12252:7:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12244:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 867,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12244:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 870,
"mutability": "mutable",
"name": "_data",
"nameLocation": "12282:5:1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12269:18:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 869,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12269:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "12192:101:1"
},
"returnParameters": {
"id": 874,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 873,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 923,
"src": "12311:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 872,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12311:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "12310:6:1"
},
"scope": 935,
"src": "12161:778:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 933,
"nodeType": "Block",
"src": "13615:2:1",
"statements": []
},
"documentation": {
"id": 924,
"nodeType": "StructuredDocumentation",
"src": "12945:545:1",
"text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"id": 934,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_beforeTokenTransfer",
"nameLocation": "13504:20:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 931,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 926,
"mutability": "mutable",
"name": "from",
"nameLocation": "13542:4:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13534:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 925,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13534:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 928,
"mutability": "mutable",
"name": "to",
"nameLocation": "13564:2:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13556:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 927,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13556:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 930,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "13584:7:1",
"nodeType": "VariableDeclaration",
"scope": 934,
"src": "13576:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 929,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13576:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13524:73:1"
},
"returnParameters": {
"id": 932,
"nodeType": "ParameterList",
"parameters": [],
"src": "13615:0:1"
},
"scope": 935,
"src": "13495:122:1",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
}
],
"scope": 936,
"src": "613:13006:1",
"usedErrors": []
}
],
"src": "92:13528:1"
},
"compiler": {
"name": "solc",
"version": "0.8.11+commit.d7f03943.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.4.4",
"updatedAt": "2021-12-29T22:14:28.587Z",
"devdoc": {
"details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
"kind": "dev",
"methods": {
"approve(address,uint256)": {
"details": "See {IERC721-approve}."
},
"balanceOf(address)": {
"details": "See {IERC721-balanceOf}."
},
"constructor": {
"details": "Initializes the contract by setting a `name` and a `symbol` to the token collection."
},
"getApproved(uint256)": {
"details": "See {IERC721-getApproved}."
},
"isApprovedForAll(address,address)": {
"details": "See {IERC721-isApprovedForAll}."
},
"name()": {
"details": "See {IERC721Metadata-name}."
},
"ownerOf(uint256)": {
"details": "See {IERC721-ownerOf}."
},
"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}."
},
"tokenURI(uint256)": {
"details": "See {IERC721Metadata-tokenURI}."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC721-transferFrom}."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}