non-fungible-apps/out/ERC721.sol/ERC721.json

13268 lines
560 KiB
JSON

{
"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"
}
],
"bytecode": {
"object": "0x608060405234620003195762001189803803806200001d816200031e565b928339810190604081830312620003195780516001600160401b03908181116200031957836200004f91840162000344565b916020938482015183811162000319576200006b920162000344565b825190828211620003035760008054926001958685811c95168015620002f8575b88861014620002e4578190601f9586811162000291575b5088908683116001146200022d57849262000221575b5050600019600383901b1c191690861b1781555b81519384116200020d5784548581811c9116801562000202575b87821014620001ee57838111620001a6575b50859284116001146200014157839495509262000135575b5050600019600383901b1c191690821b1790555b604051610dd29081620003b78239f35b01519050388062000111565b9190601f1984169585845280842093905b8782106200018e5750508385961062000174575b505050811b01905562000125565b015160001960f88460031b161c1916905538808062000166565b80878596829496860151815501950193019062000152565b8582528682208480870160051c820192898810620001e4575b0160051c019086905b828110620001d8575050620000f9565b838155018690620001c8565b92508192620001bf565b634e487b7160e01b82526022600452602482fd5b90607f1690620000e7565b634e487b7160e01b81526041600452602490fd5b015190503880620000b9565b8480528985208994509190601f198416865b8c8282106200027a575050841162000260575b505050811b018155620000cd565b015160001960f88460031b161c1916905538808062000252565b8385015186558c979095019493840193016200023f565b9091508380528884208680850160051c8201928b8610620002da575b918a91869594930160051c01915b828110620002cb575050620000a3565b8681558594508a9101620002bb565b92508192620002ad565b634e487b7160e01b83526022600452602483fd5b94607f16946200008c565b634e487b7160e01b600052604160045260246000fd5b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200030357604052565b919080601f84011215620003195782516001600160401b03811162000303576020906200037a601f8201601f191683016200031e565b92818452828287010111620003195760005b818110620003a257508260009394955001015290565b85810183015184820184015282016200038c56fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a7146107645750816306fdde0314610699578163081812fc14610679578163095ea7b31461050b57816323b872dd146104e157816342842e0e146104935781636352211e1461046257816370a08231146103cc57816395d89b41146102b3578163a22cb465146101e3578163b88d4fde14610155578163c87b56dd14610104575063e985e9c5146100b457600080fd5b3461010057806003193601126101005760ff816020936100d261080f565b6100da61082a565b6001600160a01b0391821683526005875283832091168252855220549151911615158152f35b5080fd5b838334610100576020366003190112610100576101246101519335610c56565b81815161013081610875565b5280519161013d83610875565b8252519182916020835260208301906107cf565b0390f35b919050346101df5760803660031901126101df5761017161080f565b61017961082a565b846064359467ffffffffffffffff8611610100573660238701121561010057850135946101b16101a8876108c9565b955195866108a7565b858552366024878301011161010057856101dc966024602093018388013785010152604435916109dd565b80f35b8280fd5b919050346101df57806003193601126101df576101fe61080f565b90602435918215158093036102af576001600160a01b03169233841461026d5750338452600560205280842083855260205280842060ff1981541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b6020606492519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b8480fd5b8284346103c957806003193601126103c9578151918160019283549384811c918186169586156103bf575b60209687851081146103ac578899509688969785829a52918260001461038557505060011461032a575b505050610151929161031b9103856108a7565b519282849384528301906107cf565b91908693508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b82841061036d575050508201018161031b610151610308565b8054848a018601528895508794909301928101610354565b60ff19168782015293151560051b8601909301935084925061031b91506101519050610308565b634e487b7160e01b835260228a52602483fd5b92607f16926102de565b80fd5b83915034610100576020366003190112610100576001600160a01b036103f061080f565b1690811561040d5760208480858581526003845220549051908152f35b608490602085519162461bcd60e51b8352820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152fd5b8284346103c95760203660031901126103c9575061048260209235610931565b90516001600160a01b039091168152f35b838334610100576104a336610840565b91835193602085019085821067ffffffffffffffff8311176104ce576101dc969750528584526109dd565b634e487b7160e01b875260418852602487fd5b83346103c9576101dc6104f336610840565b916105066105018433610a78565b61097b565b610b40565b9050346101df57816003193601126101df5761052561080f565b6024359290916001600160a01b039190828061054087610931565b1694169380851461062c5780331490811561060d575b50156105a557848652602052842080546001600160a01b0319168317905561057d83610931565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b6020608492519162461bcd60e51b8352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b90508652600560205281862033875260205260ff828720541638610556565b506020608492519162461bcd60e51b8352820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152fd5b8284346103c95760203660031901126103c9575061048260209235610957565b8284346103c957806003193601126103c95781519181825492600184811c9181861695861561075a575b60209687851081146103ac578899509688969785829a5291826000146103855750506001146106ff57505050610151929161031b9103856108a7565b91908693508280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828410610742575050508201018161031b610151610308565b8054848a018601528895508794909301928101610729565b92607f16926106c3565b8491346101df5760203660031901126101df573563ffffffff60e01b81168091036101df57602092506380ac58cd60e01b81149081156107be575b81156107ad575b5015158152f35b6301ffc9a760e01b149050836107a6565b635b5e139f60e01b8114915061079f565b919082519283825260005b8481106107fb575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016107da565b600435906001600160a01b038216820361082557565b600080fd5b602435906001600160a01b038216820361082557565b6060906003190112610825576001600160a01b0390600435828116810361082557916024359081168103610825579060443590565b6020810190811067ffffffffffffffff82111761089157604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761089157604052565b67ffffffffffffffff811161089157601f01601f191660200190565b156108ec57565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152600260205260409020546001600160a01b03166109548115156108e5565b90565b61096081610c56565b6000908152600460205260409020546001600160a01b031690565b1561098257565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b90610a019392916109f16105018433610a78565b6109fc838383610b40565b610c7b565b15610a0857565b60405162461bcd60e51b815280610a2160048201610a25565b0390fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b906001600160a01b038080610a8c84610931565b16931691838314938415610abf575b508315610aa9575b50505090565b610ab591929350610957565b1614388080610aa3565b909350600052600560205260406000208260005260205260ff604060002054169238610a9b565b15610aed57565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b90610b6891610b4e84610931565b6001600160a01b0393918416928492909183168414610ae6565b16918215610c055781610b8591610b7e86610931565b1614610ae6565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526004602052604081206bffffffffffffffffffffffff60a01b9081815416905583825260036020526040822060001981540190558482526040822060018154019055858252600260205284604083209182541617905580a4565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b600090815260026020526040902054610c79906001600160a01b031615156108e5565b565b9293600093909291803b15610d9157948491610cd59660405180948193630a85bd0160e11b9788845233600485015260018060a01b0380921660248501526044840152608060648401528260209b8c9760848301906107cf565b0393165af1849181610d51575b50610d40575050503d600014610d38573d610cfc816108c9565b90610d0a60405192836108a7565b81528091833d92013e5b80519182610d355760405162461bcd60e51b815280610a2160048201610a25565b01fd5b506060610d14565b6001600160e01b0319161492509050565b9091508581813d8311610d8a575b610d6981836108a7565b810103126102af57516001600160e01b0319811681036102af579038610ce2565b503d610d5f565b50505091505060019056fea2646970667358221220fffdba8d8070acba7f371e06abbf20db409b3a52ad99becc00c319ebb2c1eacd64736f6c63430008110033",
"sourceMap": "628:16327:18:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;-1:-1:-1;;;;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;-1:-1:-1;;628:16327:18;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;-1:-1:-1;628:16327:18;;-1:-1:-1;628:16327:18;;;;;;;;;-1:-1:-1;;628:16327:18;;;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a7146107645750816306fdde0314610699578163081812fc14610679578163095ea7b31461050b57816323b872dd146104e157816342842e0e146104935781636352211e1461046257816370a08231146103cc57816395d89b41146102b3578163a22cb465146101e3578163b88d4fde14610155578163c87b56dd14610104575063e985e9c5146100b457600080fd5b3461010057806003193601126101005760ff816020936100d261080f565b6100da61082a565b6001600160a01b0391821683526005875283832091168252855220549151911615158152f35b5080fd5b838334610100576020366003190112610100576101246101519335610c56565b81815161013081610875565b5280519161013d83610875565b8252519182916020835260208301906107cf565b0390f35b919050346101df5760803660031901126101df5761017161080f565b61017961082a565b846064359467ffffffffffffffff8611610100573660238701121561010057850135946101b16101a8876108c9565b955195866108a7565b858552366024878301011161010057856101dc966024602093018388013785010152604435916109dd565b80f35b8280fd5b919050346101df57806003193601126101df576101fe61080f565b90602435918215158093036102af576001600160a01b03169233841461026d5750338452600560205280842083855260205280842060ff1981541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b6020606492519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b8480fd5b8284346103c957806003193601126103c9578151918160019283549384811c918186169586156103bf575b60209687851081146103ac578899509688969785829a52918260001461038557505060011461032a575b505050610151929161031b9103856108a7565b519282849384528301906107cf565b91908693508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b82841061036d575050508201018161031b610151610308565b8054848a018601528895508794909301928101610354565b60ff19168782015293151560051b8601909301935084925061031b91506101519050610308565b634e487b7160e01b835260228a52602483fd5b92607f16926102de565b80fd5b83915034610100576020366003190112610100576001600160a01b036103f061080f565b1690811561040d5760208480858581526003845220549051908152f35b608490602085519162461bcd60e51b8352820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152fd5b8284346103c95760203660031901126103c9575061048260209235610931565b90516001600160a01b039091168152f35b838334610100576104a336610840565b91835193602085019085821067ffffffffffffffff8311176104ce576101dc969750528584526109dd565b634e487b7160e01b875260418852602487fd5b83346103c9576101dc6104f336610840565b916105066105018433610a78565b61097b565b610b40565b9050346101df57816003193601126101df5761052561080f565b6024359290916001600160a01b039190828061054087610931565b1694169380851461062c5780331490811561060d575b50156105a557848652602052842080546001600160a01b0319168317905561057d83610931565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b6020608492519162461bcd60e51b8352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b90508652600560205281862033875260205260ff828720541638610556565b506020608492519162461bcd60e51b8352820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152fd5b8284346103c95760203660031901126103c9575061048260209235610957565b8284346103c957806003193601126103c95781519181825492600184811c9181861695861561075a575b60209687851081146103ac578899509688969785829a5291826000146103855750506001146106ff57505050610151929161031b9103856108a7565b91908693508280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828410610742575050508201018161031b610151610308565b8054848a018601528895508794909301928101610729565b92607f16926106c3565b8491346101df5760203660031901126101df573563ffffffff60e01b81168091036101df57602092506380ac58cd60e01b81149081156107be575b81156107ad575b5015158152f35b6301ffc9a760e01b149050836107a6565b635b5e139f60e01b8114915061079f565b919082519283825260005b8481106107fb575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016107da565b600435906001600160a01b038216820361082557565b600080fd5b602435906001600160a01b038216820361082557565b6060906003190112610825576001600160a01b0390600435828116810361082557916024359081168103610825579060443590565b6020810190811067ffffffffffffffff82111761089157604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761089157604052565b67ffffffffffffffff811161089157601f01601f191660200190565b156108ec57565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152600260205260409020546001600160a01b03166109548115156108e5565b90565b61096081610c56565b6000908152600460205260409020546001600160a01b031690565b1561098257565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b90610a019392916109f16105018433610a78565b6109fc838383610b40565b610c7b565b15610a0857565b60405162461bcd60e51b815280610a2160048201610a25565b0390fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b906001600160a01b038080610a8c84610931565b16931691838314938415610abf575b508315610aa9575b50505090565b610ab591929350610957565b1614388080610aa3565b909350600052600560205260406000208260005260205260ff604060002054169238610a9b565b15610aed57565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b90610b6891610b4e84610931565b6001600160a01b0393918416928492909183168414610ae6565b16918215610c055781610b8591610b7e86610931565b1614610ae6565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526004602052604081206bffffffffffffffffffffffff60a01b9081815416905583825260036020526040822060001981540190558482526040822060018154019055858252600260205284604083209182541617905580a4565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b600090815260026020526040902054610c79906001600160a01b031615156108e5565b565b9293600093909291803b15610d9157948491610cd59660405180948193630a85bd0160e11b9788845233600485015260018060a01b0380921660248501526044840152608060648401528260209b8c9760848301906107cf565b0393165af1849181610d51575b50610d40575050503d600014610d38573d610cfc816108c9565b90610d0a60405192836108a7565b81528091833d92013e5b80519182610d355760405162461bcd60e51b815280610a2160048201610a25565b01fd5b506060610d14565b6001600160e01b0319161492509050565b9091508581813d8311610d8a575b610d6981836108a7565b810103126102af57516001600160e01b0319811681036102af579038610ce2565b503d610d5f565b50505091505060019056fea2646970667358221220fffdba8d8070acba7f371e06abbf20db409b3a52ad99becc00c319ebb2c1eacd64736f6c63430008110033",
"sourceMap": "628:16327:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;628:16327:18;;;;;4508:18;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;2914:7;628:16327;;;2914:7;:::i;:::-;628:16327;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;628:16327:18;;719:10:24;13216:17:18;;628:16327;;719:10:24;;628:16327:18;;13273:18;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;13334:41;628:16327;719:10:24;13334:41:18;;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2721:7;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;-1:-1:-1;628:16327:18;;-1:-1:-1;628:16327:18;;-1:-1:-1;628:16327:18;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;-1:-1:-1;;;;;628:16327:18;;:::i;:::-;;2028:19;;;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5137:39;628:16327;;;;;;;5137:39;:::i;628:16327::-;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;4923:7;628:16327;;;:::i;:::-;719:10:24;4793:99:18;4801:41;719:10:24;;4801:41:18;:::i;:::-;4793:99;:::i;:::-;4923:7;:::i;628:16327::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;628:16327:18;;;;3564:23;628:16327;3564:23;:::i;:::-;628:16327;;;3605:11;;;;628:16327;;719:10:24;;3686:21:18;:62;;;;;628:16327;;;;;;;;;;;;;;-1:-1:-1;;;;;;628:16327:18;;;;;12895:23;628:16327;12895:23;:::i;:::-;628:16327;12886:46;;;;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3686:62;628:16327;;;;4508:18;628:16327;;;;;719:10:24;628:16327:18;;;;;;;;;;3686:62;;;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;628:16327:18;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1707:40:18;;;:104;;;;628:16327;1707:156;;;;628:16327;;;;;;;1707:156;-1:-1:-1;;;937:40:27;;-1:-1:-1;1707:156:18;;;:104;-1:-1:-1;;;1763:48:18;;;-1:-1:-1;1707:104:18;;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;628:16327:18;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;628:16327:18;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;628:16327:18;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;;;;2190:219;-1:-1:-1;628:16327:18;;;6930:7;628:16327;;;;;;-1:-1:-1;;;;;628:16327:18;2324:56;2332:19;;;2324:56;:::i;:::-;2190:219;:::o;3935:167::-;4045:7;;;:::i;:::-;-1:-1:-1;628:16327:18;;;4071:15;628:16327;;;;;;-1:-1:-1;;;;;628:16327:18;;3935:167::o;628:16327::-;;;;:::o;:::-;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;5249:314;;6620:47;5249:314;;;5409:99;5417:41;719:10:24;;5417:41:18;:::i;5409:99::-;6594:7;;;;;:::i;:::-;6620:47;:::i;:::-;628:16327;;;5249:314::o;628:16327::-;;;-1:-1:-1;;;628:16327:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;:::o;7540:261::-;;-1:-1:-1;;;;;628:16327:18;;7665:23;7540:261;7665:23;:::i;:::-;628:16327;;;7706:16;;;;:52;;;;;7540:261;7706:87;;;;;7540:261;7698:96;;;7540:261;:::o;7706:87::-;7762:20;;;;;;:::i;:::-;628:16327;7762:31;7706:87;;;;;:52;628:16327;;;-1:-1:-1;628:16327:18;4508:18;628:16327;;;-1:-1:-1;628:16327:18;;-1:-1:-1;628:16327:18;;;;;-1:-1:-1;628:16327:18;;;7706:52;;;;628:16327;;;;:::o;:::-;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;11423:1233;;11542:81;11423:1233;11550:23;;;:::i;:::-;-1:-1:-1;;;;;628:16327:18;;;;;;;;;;;11550:31;;11542:81;:::i;:::-;628:16327;11641:16;;;628:16327;;11851:23;11843:81;11851:23;;;;:::i;:::-;628:16327;11851:31;11843:81;:::i;:::-;12570:27;11655:1;628:16327;;;11993:15;628:16327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12533:7;628:16327;;;;;;;;;;;;;12570:27;;11423:1233::o;628:16327::-;;;-1:-1:-1;;;628:16327:18;;;;;;;;;;;;;;;;;-1:-1:-1;;;628:16327:18;;;;;;;13466:133;-1:-1:-1;628:16327:18;;;6930:7;628:16327;;;;;;13539:53;;-1:-1:-1;;;;;628:16327:18;7344:31;;13539:53;:::i;:::-;13466:133::o;14151:831::-;;;628:16327;;14151:831;;;1465:19:22;;:23;:19;;628:16327:18;;;;;;;;;;;;;;14355:71;;;;719:10:24;14355:71:18;;;628:16327;;;;;;;;;;;;;;;;;;;;;;14355:71;;628:16327;;;;;;;;:::i;:::-;14355:71;628:16327;;14355:71;;;;;;;14316:660;-1:-1:-1;14351:573:18;;14543:381;;;628:16327;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;14593:18;;;628:16327;;-1:-1:-1;;;14635:60:18;;628:16327;14635:60;14355:71;14635:60;;;:::i;14589:321::-;14797:95;;628:16327;;;;;14351:573;-1:-1:-1;;;;;;628:16327:18;14476:51;;-1:-1:-1;628:16327:18;-1:-1:-1;14469:58:18:o;14355:71::-;;;;;;;;;;;;;;;;;:::i;:::-;;;628:16327;;;;;-1:-1:-1;;;;;;628:16327:18;;;;;;14355:71;;;;;;;;;14316:660;14954:11;;;;;;14961:4;14954:11;:::o",
"linkReferences": {}
},
"methodIdentifiers": {
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"getApproved(uint256)": "081812fc",
"isApprovedForAll(address,address)": "e985e9c5",
"name()": "06fdde03",
"ownerOf(uint256)": "6352211e",
"safeTransferFrom(address,address,uint256)": "42842e0e",
"safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
"setApprovalForAll(address,bool)": "a22cb465",
"supportsInterface(bytes4)": "01ffc9a7",
"symbol()": "95d89b41",
"tokenURI(uint256)": "c87b56dd",
"transferFrom(address,address,uint256)": "23b872dd"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":{\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "approved",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256",
"indexed": true
}
],
"type": "event",
"name": "Approval",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "operator",
"type": "address",
"indexed": true
},
{
"internalType": "bool",
"name": "approved",
"type": "bool",
"indexed": false
}
],
"type": "event",
"name": "ApprovalForAll",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256",
"indexed": true
}
],
"type": "event",
"name": "Transfer",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approve"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "safeTransferFrom"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "safeTransferFrom"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setApprovalForAll"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function",
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferFrom"
}
],
"devdoc": {
"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": {
"remappings": [
":@ensdomains/=node_modules/@ensdomains/",
":@openzeppelin/=node_modules/@openzeppelin/",
":ds-test/=lib/forge-std/lib/ds-test/src/",
":eth-gas-reporter/=node_modules/eth-gas-reporter/",
":forge-std/=lib/forge-std/src/",
":hardhat-deploy/=node_modules/hardhat-deploy/",
":hardhat/=node_modules/hardhat/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": "ERC721"
},
"libraries": {},
"viaIR": true
},
"sources": {
"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": {
"keccak256": "0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b",
"urls": [
"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c",
"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": {
"keccak256": "0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68",
"urls": [
"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56",
"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {
"keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da",
"urls": [
"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708",
"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
"keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
"urls": [
"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Address.sol": {
"keccak256": "0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1",
"urls": [
"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269",
"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/Strings.sol": {
"keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a",
"urls": [
"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634",
"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {
"keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
"urls": [
"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
],
"license": "MIT"
},
"node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
"keccak256": "0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6",
"urls": [
"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b",
"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
"id": 26720,
"exportedSymbols": {
"Address": [
27210
],
"Context": [
27279
],
"ERC165": [
27552
],
"ERC721": [
26719
],
"IERC165": [
27564
],
"IERC721": [
26835
],
"IERC721Metadata": [
26880
],
"IERC721Receiver": [
26853
],
"Math": [
28429
],
"Strings": [
27528
]
},
"nodeType": "SourceUnit",
"src": "107:16849:18",
"nodes": [
{
"id": 25776,
"nodeType": "PragmaDirective",
"src": "107:23:18",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".0"
]
},
{
"id": 25777,
"nodeType": "ImportDirective",
"src": "132:23:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol",
"file": "./IERC721.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 26836,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25778,
"nodeType": "ImportDirective",
"src": "156:31:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
"file": "./IERC721Receiver.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 26854,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25779,
"nodeType": "ImportDirective",
"src": "188:42:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
"file": "./extensions/IERC721Metadata.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 26881,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25780,
"nodeType": "ImportDirective",
"src": "231:33:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/utils/Address.sol",
"file": "../../utils/Address.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 27211,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25781,
"nodeType": "ImportDirective",
"src": "265:33:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/utils/Context.sol",
"file": "../../utils/Context.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 27280,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25782,
"nodeType": "ImportDirective",
"src": "299:33:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/utils/Strings.sol",
"file": "../../utils/Strings.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 27529,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 25783,
"nodeType": "ImportDirective",
"src": "333:46:18",
"nodes": [],
"absolutePath": "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
"file": "../../utils/introspection/ERC165.sol",
"nameLocation": "-1:-1:-1",
"scope": 26720,
"sourceUnit": 27553,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 26719,
"nodeType": "ContractDefinition",
"src": "628:16327:18",
"nodes": [
{
"id": 25795,
"nodeType": "UsingForDirective",
"src": "695:26:18",
"nodes": [],
"global": false,
"libraryName": {
"id": 25793,
"name": "Address",
"nameLocations": [
"701:7:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27210,
"src": "701:7:18"
},
"typeName": {
"id": 25794,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "713:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 25798,
"nodeType": "UsingForDirective",
"src": "726:26:18",
"nodes": [],
"global": false,
"libraryName": {
"id": 25796,
"name": "Strings",
"nameLocations": [
"732:7:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27528,
"src": "732:7:18"
},
"typeName": {
"id": 25797,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "744:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 25800,
"nodeType": "VariableDeclaration",
"src": "776:20:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_name",
"nameLocation": "791:5:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 25799,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "776:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"id": 25802,
"nodeType": "VariableDeclaration",
"src": "823:22:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_symbol",
"nameLocation": "838:7:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 25801,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "823:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "private"
},
{
"id": 25806,
"nodeType": "VariableDeclaration",
"src": "898:43:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_owners",
"nameLocation": "934:7:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 25805,
"keyType": {
"id": 25803,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "906:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "898:27:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 25804,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "917:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"id": 25810,
"nodeType": "VariableDeclaration",
"src": "992:45:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_balances",
"nameLocation": "1028:9:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 25809,
"keyType": {
"id": 25807,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1000:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "992:27:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 25808,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1011:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "private"
},
{
"id": 25814,
"nodeType": "VariableDeclaration",
"src": "1093:51:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_tokenApprovals",
"nameLocation": "1129:15:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"typeName": {
"id": 25813,
"keyType": {
"id": 25811,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1101:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "1093:27:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
},
"valueType": {
"id": 25812,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1112:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"visibility": "private"
},
{
"id": 25820,
"nodeType": "VariableDeclaration",
"src": "1199:71:18",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_operatorApprovals",
"nameLocation": "1252:18:18",
"scope": 26719,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"typeName": {
"id": 25819,
"keyType": {
"id": 25815,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1207:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1199:44:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"valueType": {
"id": 25818,
"keyType": {
"id": 25816,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1226:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1218:24:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 25817,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1237:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"visibility": "private"
},
{
"id": 25837,
"nodeType": "FunctionDefinition",
"src": "1390:113:18",
"nodes": [],
"body": {
"id": 25836,
"nodeType": "Block",
"src": "1446:57:18",
"nodes": [],
"statements": [
{
"expression": {
"id": 25830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 25828,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25800,
"src": "1456:5:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 25829,
"name": "name_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25823,
"src": "1464:5:18",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1456:13:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 25831,
"nodeType": "ExpressionStatement",
"src": "1456:13:18"
},
{
"expression": {
"id": 25834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 25832,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25802,
"src": "1479:7:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 25833,
"name": "symbol_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25825,
"src": "1489:7:18",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1479:17:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 25835,
"nodeType": "ExpressionStatement",
"src": "1479:17:18"
}
]
},
"documentation": {
"id": 25821,
"nodeType": "StructuredDocumentation",
"src": "1277:108:18",
"text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 25826,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25823,
"mutability": "mutable",
"name": "name_",
"nameLocation": "1416:5:18",
"nodeType": "VariableDeclaration",
"scope": 25837,
"src": "1402:19:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25822,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1402:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 25825,
"mutability": "mutable",
"name": "symbol_",
"nameLocation": "1437:7:18",
"nodeType": "VariableDeclaration",
"scope": 25837,
"src": "1423:21:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25824,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1423:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1401:44:18"
},
"returnParameters": {
"id": 25827,
"nodeType": "ParameterList",
"parameters": [],
"src": "1446:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 25868,
"nodeType": "FunctionDefinition",
"src": "1570:300:18",
"nodes": [],
"body": {
"id": 25867,
"nodeType": "Block",
"src": "1678:192:18",
"nodes": [],
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 25865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 25860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 25853,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 25848,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25840,
"src": "1707:11:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 25850,
"name": "IERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26835,
"src": "1727:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721_$26835_$",
"typeString": "type(contract IERC721)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721_$26835_$",
"typeString": "type(contract IERC721)"
}
],
"id": 25849,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "1722:4:18",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 25851,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1722:13:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$26835",
"typeString": "type(contract IERC721)"
}
},
"id": 25852,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1736:11:18",
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1722:25:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1707:40:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 25859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 25854,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25840,
"src": "1763:11:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 25856,
"name": "IERC721Metadata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26880,
"src": "1783:15:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$26880_$",
"typeString": "type(contract IERC721Metadata)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$26880_$",
"typeString": "type(contract IERC721Metadata)"
}
],
"id": 25855,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "1778:4:18",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 25857,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1778:21:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$26880",
"typeString": "type(contract IERC721Metadata)"
}
},
"id": 25858,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1800:11:18",
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "1778:33:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "1763:48:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1707:104:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 25863,
"name": "interfaceId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25840,
"src": "1851:11:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
],
"expression": {
"id": 25861,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "1827:5:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_ERC721_$26719_$",
"typeString": "type(contract super ERC721)"
}
},
"id": 25862,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1833:17:18",
"memberName": "supportsInterface",
"nodeType": "MemberAccess",
"referencedDeclaration": 27551,
"src": "1827:23:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
"typeString": "function (bytes4) view returns (bool)"
}
},
"id": 25864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1827:36:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1707:156:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 25847,
"id": 25866,
"nodeType": "Return",
"src": "1688:175:18"
}
]
},
"baseFunctions": [
27551,
27563
],
"documentation": {
"id": 25838,
"nodeType": "StructuredDocumentation",
"src": "1509:56:18",
"text": " @dev See {IERC165-supportsInterface}."
},
"functionSelector": "01ffc9a7",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "supportsInterface",
"nameLocation": "1579:17:18",
"overrides": {
"id": 25844,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 25842,
"name": "ERC165",
"nameLocations": [
"1646:6:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27552,
"src": "1646:6:18"
},
{
"id": 25843,
"name": "IERC165",
"nameLocations": [
"1654:7:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27564,
"src": "1654:7:18"
}
],
"src": "1637:25:18"
},
"parameters": {
"id": 25841,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25840,
"mutability": "mutable",
"name": "interfaceId",
"nameLocation": "1604:11:18",
"nodeType": "VariableDeclaration",
"scope": 25868,
"src": "1597:18:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 25839,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "1597:6:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "1596:20:18"
},
"returnParameters": {
"id": 25847,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25846,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25868,
"src": "1672:4:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 25845,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1672:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1671:6:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25892,
"nodeType": "FunctionDefinition",
"src": "1929:204:18",
"nodes": [],
"body": {
"id": 25891,
"nodeType": "Block",
"src": "2010:123:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 25883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 25878,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25871,
"src": "2028:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 25881,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2045:1:18",
"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": 25880,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2037:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 25879,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2037:7:18",
"typeDescriptions": {}
}
},
"id": 25882,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2037:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2028:19:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572",
"id": 25884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2049:43:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
"typeString": "literal_string \"ERC721: address zero is not a valid owner\""
},
"value": "ERC721: address zero is not a valid owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
"typeString": "literal_string \"ERC721: address zero is not a valid owner\""
}
],
"id": 25877,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2020:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 25885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2020:73:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 25886,
"nodeType": "ExpressionStatement",
"src": "2020:73:18"
},
{
"expression": {
"baseExpression": {
"id": 25887,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "2110:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 25889,
"indexExpression": {
"id": 25888,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25871,
"src": "2120:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2110:16:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 25876,
"id": 25890,
"nodeType": "Return",
"src": "2103:23:18"
}
]
},
"baseFunctions": [
26760
],
"documentation": {
"id": 25869,
"nodeType": "StructuredDocumentation",
"src": "1876:48:18",
"text": " @dev See {IERC721-balanceOf}."
},
"functionSelector": "70a08231",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "1938:9:18",
"overrides": {
"id": 25873,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1983:8:18"
},
"parameters": {
"id": 25872,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25871,
"mutability": "mutable",
"name": "owner",
"nameLocation": "1956:5:18",
"nodeType": "VariableDeclaration",
"scope": 25892,
"src": "1948:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25870,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1948:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1947:15:18"
},
"returnParameters": {
"id": 25876,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25875,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25892,
"src": "2001:7:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 25874,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2001:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2000:9:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25920,
"nodeType": "FunctionDefinition",
"src": "2190:219:18",
"nodes": [],
"body": {
"id": 25919,
"nodeType": "Block",
"src": "2271:138:18",
"nodes": [],
"statements": [
{
"assignments": [
25902
],
"declarations": [
{
"constant": false,
"id": 25902,
"mutability": "mutable",
"name": "owner",
"nameLocation": "2289:5:18",
"nodeType": "VariableDeclaration",
"scope": 25919,
"src": "2281:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25901,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2281:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 25906,
"initialValue": {
"arguments": [
{
"id": 25904,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25895,
"src": "2306:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 25903,
"name": "_ownerOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26202,
"src": "2297:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 25905,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2297:17:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2281:33:18"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 25913,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 25908,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25902,
"src": "2332:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 25911,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2349:1:18",
"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": 25910,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2341:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 25909,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2341:7:18",
"typeDescriptions": {}
}
},
"id": 25912,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2341:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2332:19:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
"id": 25914,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2353:26:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
"typeString": "literal_string \"ERC721: invalid token ID\""
},
"value": "ERC721: invalid token ID"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
"typeString": "literal_string \"ERC721: invalid token ID\""
}
],
"id": 25907,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2324:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 25915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2324:56:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 25916,
"nodeType": "ExpressionStatement",
"src": "2324:56:18"
},
{
"expression": {
"id": 25917,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25902,
"src": "2397:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 25900,
"id": 25918,
"nodeType": "Return",
"src": "2390:12:18"
}
]
},
"baseFunctions": [
26768
],
"documentation": {
"id": 25893,
"nodeType": "StructuredDocumentation",
"src": "2139:46:18",
"text": " @dev See {IERC721-ownerOf}."
},
"functionSelector": "6352211e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "ownerOf",
"nameLocation": "2199:7:18",
"overrides": {
"id": 25897,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2244:8:18"
},
"parameters": {
"id": 25896,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25895,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2215:7:18",
"nodeType": "VariableDeclaration",
"scope": 25920,
"src": "2207:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 25894,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2207:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2206:17:18"
},
"returnParameters": {
"id": 25900,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25899,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25920,
"src": "2262:7:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25898,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2262:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2261:9:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25930,
"nodeType": "FunctionDefinition",
"src": "2471:98:18",
"nodes": [],
"body": {
"id": 25929,
"nodeType": "Block",
"src": "2540:29:18",
"nodes": [],
"statements": [
{
"expression": {
"id": 25927,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25800,
"src": "2557:5:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 25926,
"id": 25928,
"nodeType": "Return",
"src": "2550:12:18"
}
]
},
"baseFunctions": [
26865
],
"documentation": {
"id": 25921,
"nodeType": "StructuredDocumentation",
"src": "2415:51:18",
"text": " @dev See {IERC721Metadata-name}."
},
"functionSelector": "06fdde03",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nameLocation": "2480:4:18",
"overrides": {
"id": 25923,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2507:8:18"
},
"parameters": {
"id": 25922,
"nodeType": "ParameterList",
"parameters": [],
"src": "2484:2:18"
},
"returnParameters": {
"id": 25926,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25925,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25930,
"src": "2525:13:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25924,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2525:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2524:15:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25940,
"nodeType": "FunctionDefinition",
"src": "2633:102:18",
"nodes": [],
"body": {
"id": 25939,
"nodeType": "Block",
"src": "2704:31:18",
"nodes": [],
"statements": [
{
"expression": {
"id": 25937,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25802,
"src": "2721:7:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 25936,
"id": 25938,
"nodeType": "Return",
"src": "2714:14:18"
}
]
},
"baseFunctions": [
26871
],
"documentation": {
"id": 25931,
"nodeType": "StructuredDocumentation",
"src": "2575:53:18",
"text": " @dev See {IERC721Metadata-symbol}."
},
"functionSelector": "95d89b41",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nameLocation": "2642:6:18",
"overrides": {
"id": 25933,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2671:8:18"
},
"parameters": {
"id": 25932,
"nodeType": "ParameterList",
"parameters": [],
"src": "2648:2:18"
},
"returnParameters": {
"id": 25936,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25935,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25940,
"src": "2689:13:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25934,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2689:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2688:15:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25979,
"nodeType": "FunctionDefinition",
"src": "2801:276:18",
"nodes": [],
"body": {
"id": 25978,
"nodeType": "Block",
"src": "2889:188:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 25950,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25943,
"src": "2914:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 25949,
"name": "_requireMinted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26597,
"src": "2899:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
"typeString": "function (uint256) view"
}
},
"id": 25951,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2899:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 25952,
"nodeType": "ExpressionStatement",
"src": "2899:23:18"
},
{
"assignments": [
25954
],
"declarations": [
{
"constant": false,
"id": 25954,
"mutability": "mutable",
"name": "baseURI",
"nameLocation": "2947:7:18",
"nodeType": "VariableDeclaration",
"scope": 25978,
"src": "2933:21:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25953,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2933:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 25957,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 25955,
"name": "_baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25988,
"src": "2957:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view returns (string memory)"
}
},
"id": 25956,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2957:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2933:34:18"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 25964,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 25960,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25954,
"src": "2990:7:18",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 25959,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2984:5:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 25958,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2984:5:18",
"typeDescriptions": {}
}
},
"id": 25961,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2984:14:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 25962,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2999:6:18",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2984:21:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 25963,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3008:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2984:25:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"hexValue": "",
"id": 25975,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3068:2:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"id": 25976,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "2984:86:18",
"trueExpression": {
"arguments": [
{
"arguments": [
{
"id": 25969,
"name": "baseURI",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25954,
"src": "3036:7:18",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 25970,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25943,
"src": "3045:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 25971,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3053:8:18",
"memberName": "toString",
"nodeType": "MemberAccess",
"referencedDeclaration": 27411,
"src": "3045:16:18",
"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": 25972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3045:18:18",
"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": 25967,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "3019:3:18",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 25968,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3023:12:18",
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "3019:16:18",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 25973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3019:45:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 25966,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3012:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 25965,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3012:6:18",
"typeDescriptions": {}
}
},
"id": 25974,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3012:53:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 25948,
"id": 25977,
"nodeType": "Return",
"src": "2977:93:18"
}
]
},
"baseFunctions": [
26879
],
"documentation": {
"id": 25941,
"nodeType": "StructuredDocumentation",
"src": "2741:55:18",
"text": " @dev See {IERC721Metadata-tokenURI}."
},
"functionSelector": "c87b56dd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "tokenURI",
"nameLocation": "2810:8:18",
"overrides": {
"id": 25945,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2856:8:18"
},
"parameters": {
"id": 25944,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25943,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "2827:7:18",
"nodeType": "VariableDeclaration",
"scope": 25979,
"src": "2819:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 25942,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2819:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2818:17:18"
},
"returnParameters": {
"id": 25948,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25947,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25979,
"src": "2874:13:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25946,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2874:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2873:15:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 25988,
"nodeType": "FunctionDefinition",
"src": "3319:92:18",
"nodes": [],
"body": {
"id": 25987,
"nodeType": "Block",
"src": "3385:26:18",
"nodes": [],
"statements": [
{
"expression": {
"hexValue": "",
"id": 25985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3402:2:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"functionReturnParameters": 25984,
"id": 25986,
"nodeType": "Return",
"src": "3395:9:18"
}
]
},
"documentation": {
"id": 25980,
"nodeType": "StructuredDocumentation",
"src": "3083:231:18",
"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 overridden in child contracts."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_baseURI",
"nameLocation": "3328:8:18",
"parameters": {
"id": 25981,
"nodeType": "ParameterList",
"parameters": [],
"src": "3336:2:18"
},
"returnParameters": {
"id": 25984,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25983,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 25988,
"src": "3370:13:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 25982,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3370:6:18",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "3369:15:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 26031,
"nodeType": "FunctionDefinition",
"src": "3468:406:18",
"nodes": [],
"body": {
"id": 26030,
"nodeType": "Block",
"src": "3538:336:18",
"nodes": [],
"statements": [
{
"assignments": [
25998
],
"declarations": [
{
"constant": false,
"id": 25998,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3556:5:18",
"nodeType": "VariableDeclaration",
"scope": 26030,
"src": "3548:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25997,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3548:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 26003,
"initialValue": {
"arguments": [
{
"id": 26001,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25993,
"src": "3579:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 25999,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "3564:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3571:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "3564:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26002,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3564:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3548:39:18"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26005,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25991,
"src": "3605:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 26006,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25998,
"src": "3611:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3605:11:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
"id": 26008,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3618:35:18",
"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": 26004,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3597:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26009,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3597:57:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26010,
"nodeType": "ExpressionStatement",
"src": "3597:57:18"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 26021,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26012,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "3686:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3686:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 26014,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25998,
"src": "3702:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3686:21:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 26017,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25998,
"src": "3728:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26018,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "3735:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3735:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 26016,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26084,
"src": "3711:16:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 26020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3711:37:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3686:62:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c",
"id": 26022,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3762:63:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
"typeString": "literal_string \"ERC721: approve caller is not token owner or approved for all\""
},
"value": "ERC721: approve caller is not token owner or approved for all"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
"typeString": "literal_string \"ERC721: approve caller is not token owner or approved for all\""
}
],
"id": 26011,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3665:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26023,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3665:170:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26024,
"nodeType": "ExpressionStatement",
"src": "3665:170:18"
},
{
"expression": {
"arguments": [
{
"id": 26026,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25991,
"src": "3855:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26027,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25993,
"src": "3859:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26025,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26551,
"src": "3846:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 26028,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3846:21:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26029,
"nodeType": "ExpressionStatement",
"src": "3846:21:18"
}
]
},
"baseFunctions": [
26808
],
"documentation": {
"id": 25989,
"nodeType": "StructuredDocumentation",
"src": "3417:46:18",
"text": " @dev See {IERC721-approve}."
},
"functionSelector": "095ea7b3",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "approve",
"nameLocation": "3477:7:18",
"overrides": {
"id": 25995,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3529:8:18"
},
"parameters": {
"id": 25994,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25991,
"mutability": "mutable",
"name": "to",
"nameLocation": "3493:2:18",
"nodeType": "VariableDeclaration",
"scope": 26031,
"src": "3485:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3485:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 25993,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "3505:7:18",
"nodeType": "VariableDeclaration",
"scope": 26031,
"src": "3497:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 25992,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3497:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3484:29:18"
},
"returnParameters": {
"id": 25996,
"nodeType": "ParameterList",
"parameters": [],
"src": "3538:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 26049,
"nodeType": "FunctionDefinition",
"src": "3935:167:18",
"nodes": [],
"body": {
"id": 26048,
"nodeType": "Block",
"src": "4020:82:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 26041,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26034,
"src": "4045:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26040,
"name": "_requireMinted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26597,
"src": "4030:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
"typeString": "function (uint256) view"
}
},
"id": 26042,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4030:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26043,
"nodeType": "ExpressionStatement",
"src": "4030:23:18"
},
{
"expression": {
"baseExpression": {
"id": 26044,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25814,
"src": "4071:15:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26046,
"indexExpression": {
"id": 26045,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26034,
"src": "4087:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4071:24:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 26039,
"id": 26047,
"nodeType": "Return",
"src": "4064:31:18"
}
]
},
"baseFunctions": [
26824
],
"documentation": {
"id": 26032,
"nodeType": "StructuredDocumentation",
"src": "3880:50:18",
"text": " @dev See {IERC721-getApproved}."
},
"functionSelector": "081812fc",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getApproved",
"nameLocation": "3944:11:18",
"overrides": {
"id": 26036,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3993:8:18"
},
"parameters": {
"id": 26035,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26034,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "3964:7:18",
"nodeType": "VariableDeclaration",
"scope": 26049,
"src": "3956:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26033,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3956:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3955:17:18"
},
"returnParameters": {
"id": 26039,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26038,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26049,
"src": "4011:7:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26037,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4011:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4010:9:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 26066,
"nodeType": "FunctionDefinition",
"src": "4169:153:18",
"nodes": [],
"body": {
"id": 26065,
"nodeType": "Block",
"src": "4253:69:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26059,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "4282:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26060,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4282:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26061,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26052,
"src": "4296:8:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26062,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26054,
"src": "4306:8:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 26058,
"name": "_setApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26583,
"src": "4263:18:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 26063,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4263:52:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26064,
"nodeType": "ExpressionStatement",
"src": "4263:52:18"
}
]
},
"baseFunctions": [
26816
],
"documentation": {
"id": 26050,
"nodeType": "StructuredDocumentation",
"src": "4108:56:18",
"text": " @dev See {IERC721-setApprovalForAll}."
},
"functionSelector": "a22cb465",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setApprovalForAll",
"nameLocation": "4178:17:18",
"overrides": {
"id": 26056,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4244:8:18"
},
"parameters": {
"id": 26055,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26052,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4204:8:18",
"nodeType": "VariableDeclaration",
"scope": 26066,
"src": "4196:16:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26051,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4196:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26054,
"mutability": "mutable",
"name": "approved",
"nameLocation": "4219:8:18",
"nodeType": "VariableDeclaration",
"scope": 26066,
"src": "4214:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26053,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4214:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4195:33:18"
},
"returnParameters": {
"id": 26057,
"nodeType": "ParameterList",
"parameters": [],
"src": "4253:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 26084,
"nodeType": "FunctionDefinition",
"src": "4388:162:18",
"nodes": [],
"body": {
"id": 26083,
"nodeType": "Block",
"src": "4491:59:18",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"baseExpression": {
"id": 26077,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25820,
"src": "4508:18:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 26079,
"indexExpression": {
"id": 26078,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26069,
"src": "4527:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4508:25:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 26081,
"indexExpression": {
"id": 26080,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26071,
"src": "4534:8:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4508:35:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 26076,
"id": 26082,
"nodeType": "Return",
"src": "4501:42:18"
}
]
},
"baseFunctions": [
26834
],
"documentation": {
"id": 26067,
"nodeType": "StructuredDocumentation",
"src": "4328:55:18",
"text": " @dev See {IERC721-isApprovedForAll}."
},
"functionSelector": "e985e9c5",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isApprovedForAll",
"nameLocation": "4397:16:18",
"overrides": {
"id": 26073,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4467:8:18"
},
"parameters": {
"id": 26072,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26069,
"mutability": "mutable",
"name": "owner",
"nameLocation": "4422:5:18",
"nodeType": "VariableDeclaration",
"scope": 26084,
"src": "4414:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26068,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4414:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26071,
"mutability": "mutable",
"name": "operator",
"nameLocation": "4437:8:18",
"nodeType": "VariableDeclaration",
"scope": 26084,
"src": "4429:16:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26070,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4429:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4413:33:18"
},
"returnParameters": {
"id": 26076,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26075,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26084,
"src": "4485:4:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26074,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4485:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4484:6:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 26111,
"nodeType": "FunctionDefinition",
"src": "4612:326:18",
"nodes": [],
"body": {
"id": 26110,
"nodeType": "Block",
"src": "4731:207:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26097,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "4820:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4820:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26099,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26091,
"src": "4834:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26096,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26254,
"src": "4801:18:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 26100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4801:41:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564",
"id": 26101,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4844:47:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
"typeString": "literal_string \"ERC721: caller is not token owner or approved\""
},
"value": "ERC721: caller is not token owner or approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
"typeString": "literal_string \"ERC721: caller is not token owner or approved\""
}
],
"id": 26095,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4793:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4793:99:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26103,
"nodeType": "ExpressionStatement",
"src": "4793:99:18"
},
{
"expression": {
"arguments": [
{
"id": 26105,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26087,
"src": "4913:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26106,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26089,
"src": "4919:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26107,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26091,
"src": "4923:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26104,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26527,
"src": "4903:9:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4903:28:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26109,
"nodeType": "ExpressionStatement",
"src": "4903:28:18"
}
]
},
"baseFunctions": [
26800
],
"documentation": {
"id": 26085,
"nodeType": "StructuredDocumentation",
"src": "4556:51:18",
"text": " @dev See {IERC721-transferFrom}."
},
"functionSelector": "23b872dd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nameLocation": "4621:12:18",
"overrides": {
"id": 26093,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4722:8:18"
},
"parameters": {
"id": 26092,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26087,
"mutability": "mutable",
"name": "from",
"nameLocation": "4651:4:18",
"nodeType": "VariableDeclaration",
"scope": 26111,
"src": "4643:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26086,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4643:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26089,
"mutability": "mutable",
"name": "to",
"nameLocation": "4673:2:18",
"nodeType": "VariableDeclaration",
"scope": 26111,
"src": "4665:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26088,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4665:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26091,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "4693:7:18",
"nodeType": "VariableDeclaration",
"scope": 26111,
"src": "4685:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26090,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4685:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4633:73:18"
},
"returnParameters": {
"id": 26094,
"nodeType": "ParameterList",
"parameters": [],
"src": "4731:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 26130,
"nodeType": "FunctionDefinition",
"src": "5004:179:18",
"nodes": [],
"body": {
"id": 26129,
"nodeType": "Block",
"src": "5127:56:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 26123,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26114,
"src": "5154:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26124,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26116,
"src": "5160:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26125,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26118,
"src": "5164:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 26126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5173:2:18",
"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": 26122,
"name": "safeTransferFrom",
"nodeType": "Identifier",
"overloadedDeclarations": [
26130,
26160
],
"referencedDeclaration": 26160,
"src": "5137:16:18",
"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": 26127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5137:39:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26128,
"nodeType": "ExpressionStatement",
"src": "5137:39:18"
}
]
},
"baseFunctions": [
26790
],
"documentation": {
"id": 26112,
"nodeType": "StructuredDocumentation",
"src": "4944:55:18",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "42842e0e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5013:16:18",
"overrides": {
"id": 26120,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5118:8:18"
},
"parameters": {
"id": 26119,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26114,
"mutability": "mutable",
"name": "from",
"nameLocation": "5047:4:18",
"nodeType": "VariableDeclaration",
"scope": 26130,
"src": "5039:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26113,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5039:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26116,
"mutability": "mutable",
"name": "to",
"nameLocation": "5069:2:18",
"nodeType": "VariableDeclaration",
"scope": 26130,
"src": "5061:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26115,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5061:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26118,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5089:7:18",
"nodeType": "VariableDeclaration",
"scope": 26130,
"src": "5081:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26117,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5081:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5029:73:18"
},
"returnParameters": {
"id": 26121,
"nodeType": "ParameterList",
"parameters": [],
"src": "5127:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 26160,
"nodeType": "FunctionDefinition",
"src": "5249:314:18",
"nodes": [],
"body": {
"id": 26159,
"nodeType": "Block",
"src": "5399:164:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26145,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "5436:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26146,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5436:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26147,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26137,
"src": "5450:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26144,
"name": "_isApprovedOrOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26254,
"src": "5417:18:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) view returns (bool)"
}
},
"id": 26148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5417:41:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564",
"id": 26149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5460:47:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
"typeString": "literal_string \"ERC721: caller is not token owner or approved\""
},
"value": "ERC721: caller is not token owner or approved"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
"typeString": "literal_string \"ERC721: caller is not token owner or approved\""
}
],
"id": 26143,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5409:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5409:99:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26151,
"nodeType": "ExpressionStatement",
"src": "5409:99:18"
},
{
"expression": {
"arguments": [
{
"id": 26153,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26133,
"src": "5532:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26154,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26135,
"src": "5538:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26155,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26137,
"src": "5542:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 26156,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26139,
"src": "5551:4:18",
"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": 26152,
"name": "_safeTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26189,
"src": "5518:13:18",
"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": 26157,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5518:38:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26158,
"nodeType": "ExpressionStatement",
"src": "5518:38:18"
}
]
},
"baseFunctions": [
26780
],
"documentation": {
"id": 26131,
"nodeType": "StructuredDocumentation",
"src": "5189:55:18",
"text": " @dev See {IERC721-safeTransferFrom}."
},
"functionSelector": "b88d4fde",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "5258:16:18",
"overrides": {
"id": 26141,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5390:8:18"
},
"parameters": {
"id": 26140,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26133,
"mutability": "mutable",
"name": "from",
"nameLocation": "5292:4:18",
"nodeType": "VariableDeclaration",
"scope": 26160,
"src": "5284:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26132,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5284:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26135,
"mutability": "mutable",
"name": "to",
"nameLocation": "5314:2:18",
"nodeType": "VariableDeclaration",
"scope": 26160,
"src": "5306:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26134,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5306:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26137,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "5334:7:18",
"nodeType": "VariableDeclaration",
"scope": 26160,
"src": "5326:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26136,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5326:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26139,
"mutability": "mutable",
"name": "data",
"nameLocation": "5364:4:18",
"nodeType": "VariableDeclaration",
"scope": 26160,
"src": "5351:17:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 26138,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5351:5:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5274:100:18"
},
"returnParameters": {
"id": 26142,
"nodeType": "ParameterList",
"parameters": [],
"src": "5399:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 26189,
"nodeType": "FunctionDefinition",
"src": "6424:305:18",
"nodes": [],
"body": {
"id": 26188,
"nodeType": "Block",
"src": "6564:165:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 26173,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26163,
"src": "6584:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26174,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26165,
"src": "6590:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26175,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26167,
"src": "6594:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26172,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26527,
"src": "6574:9:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6574:28:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26177,
"nodeType": "ExpressionStatement",
"src": "6574:28:18"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 26180,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26163,
"src": "6643:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26181,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26165,
"src": "6649:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26182,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26167,
"src": "6653:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 26183,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26169,
"src": "6662:4:18",
"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": 26179,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26659,
"src": "6620:22:18",
"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": 26184,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6620:47:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 26185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6669:52:18",
"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": 26178,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6612:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6612:110:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26187,
"nodeType": "ExpressionStatement",
"src": "6612:110:18"
}
]
},
"documentation": {
"id": 26161,
"nodeType": "StructuredDocumentation",
"src": "5569:850:18",
"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."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeTransfer",
"nameLocation": "6433:13:18",
"parameters": {
"id": 26170,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26163,
"mutability": "mutable",
"name": "from",
"nameLocation": "6464:4:18",
"nodeType": "VariableDeclaration",
"scope": 26189,
"src": "6456:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26162,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6456:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26165,
"mutability": "mutable",
"name": "to",
"nameLocation": "6486:2:18",
"nodeType": "VariableDeclaration",
"scope": 26189,
"src": "6478:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26164,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6478:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26167,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "6506:7:18",
"nodeType": "VariableDeclaration",
"scope": 26189,
"src": "6498:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26166,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6498:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26169,
"mutability": "mutable",
"name": "data",
"nameLocation": "6536:4:18",
"nodeType": "VariableDeclaration",
"scope": 26189,
"src": "6523:17:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 26168,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6523:5:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6446:100:18"
},
"returnParameters": {
"id": 26171,
"nodeType": "ParameterList",
"parameters": [],
"src": "6564:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26202,
"nodeType": "FunctionDefinition",
"src": "6838:115:18",
"nodes": [],
"body": {
"id": 26201,
"nodeType": "Block",
"src": "6913:40:18",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"id": 26197,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25806,
"src": "6930:7:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26199,
"indexExpression": {
"id": 26198,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26192,
"src": "6938:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6930:16:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 26196,
"id": 26200,
"nodeType": "Return",
"src": "6923:23:18"
}
]
},
"documentation": {
"id": 26190,
"nodeType": "StructuredDocumentation",
"src": "6735:98:18",
"text": " @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_ownerOf",
"nameLocation": "6847:8:18",
"parameters": {
"id": 26193,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26192,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "6864:7:18",
"nodeType": "VariableDeclaration",
"scope": 26202,
"src": "6856:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26191,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6856:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6855:17:18"
},
"returnParameters": {
"id": 26196,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26195,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26202,
"src": "6904:7:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6904:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "6903:9:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 26220,
"nodeType": "FunctionDefinition",
"src": "7256:126:18",
"nodes": [],
"body": {
"id": 26219,
"nodeType": "Block",
"src": "7327:55:18",
"nodes": [],
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 26211,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26205,
"src": "7353:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26210,
"name": "_ownerOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26202,
"src": "7344:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7344:17:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 26215,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7373:1:18",
"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": 26214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7365:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26213,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7365:7:18",
"typeDescriptions": {}
}
},
"id": 26216,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7365:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7344:31:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 26209,
"id": 26218,
"nodeType": "Return",
"src": "7337:38:18"
}
]
},
"documentation": {
"id": 26203,
"nodeType": "StructuredDocumentation",
"src": "6959:292:18",
"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`)."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_exists",
"nameLocation": "7265:7:18",
"parameters": {
"id": 26206,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26205,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7281:7:18",
"nodeType": "VariableDeclaration",
"scope": 26220,
"src": "7273:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26204,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7273:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7272:17:18"
},
"returnParameters": {
"id": 26209,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26208,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26220,
"src": "7321:4:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26207,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7321:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7320:6:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 26254,
"nodeType": "FunctionDefinition",
"src": "7540:261:18",
"nodes": [],
"body": {
"id": 26253,
"nodeType": "Block",
"src": "7639:162:18",
"nodes": [],
"statements": [
{
"assignments": [
26231
],
"declarations": [
{
"constant": false,
"id": 26231,
"mutability": "mutable",
"name": "owner",
"nameLocation": "7657:5:18",
"nodeType": "VariableDeclaration",
"scope": 26253,
"src": "7649:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26230,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7649:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 26236,
"initialValue": {
"arguments": [
{
"id": 26234,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26225,
"src": "7680:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26232,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "7665:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7672:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "7665:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7665:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7649:39:18"
},
{
"expression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 26250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 26244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26239,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26237,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26223,
"src": "7706:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 26238,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26231,
"src": "7717:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7706:16:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"arguments": [
{
"id": 26241,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26231,
"src": "7743:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26242,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26223,
"src": "7750:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 26240,
"name": "isApprovedForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26084,
"src": "7726:16:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
"typeString": "function (address,address) view returns (bool)"
}
},
"id": 26243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7726:32:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7706:52:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 26246,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26225,
"src": "7774:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26245,
"name": "getApproved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26049,
"src": "7762:11:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26247,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7762:20:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 26248,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26223,
"src": "7786:7:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7762:31:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7706:87:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 26251,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7705:89:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 26229,
"id": 26252,
"nodeType": "Return",
"src": "7698:96:18"
}
]
},
"documentation": {
"id": 26221,
"nodeType": "StructuredDocumentation",
"src": "7388:147:18",
"text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_isApprovedOrOwner",
"nameLocation": "7549:18:18",
"parameters": {
"id": 26226,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26223,
"mutability": "mutable",
"name": "spender",
"nameLocation": "7576:7:18",
"nodeType": "VariableDeclaration",
"scope": 26254,
"src": "7568:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26222,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7568:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26225,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "7593:7:18",
"nodeType": "VariableDeclaration",
"scope": 26254,
"src": "7585:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7585:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7567:34:18"
},
"returnParameters": {
"id": 26229,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26228,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26254,
"src": "7633:4:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26227,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7633:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7632:6:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 26269,
"nodeType": "FunctionDefinition",
"src": "8131:108:18",
"nodes": [],
"body": {
"id": 26268,
"nodeType": "Block",
"src": "8196:43:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 26263,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26257,
"src": "8216:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26264,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26259,
"src": "8220:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "",
"id": 26265,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8229:2:18",
"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": 26262,
"name": "_safeMint",
"nodeType": "Identifier",
"overloadedDeclarations": [
26269,
26298
],
"referencedDeclaration": 26298,
"src": "8206:9:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,uint256,bytes memory)"
}
},
"id": 26266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8206:26:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26267,
"nodeType": "ExpressionStatement",
"src": "8206:26:18"
}
]
},
"documentation": {
"id": 26255,
"nodeType": "StructuredDocumentation",
"src": "7807:319:18",
"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."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8140:9:18",
"parameters": {
"id": 26260,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26257,
"mutability": "mutable",
"name": "to",
"nameLocation": "8158:2:18",
"nodeType": "VariableDeclaration",
"scope": 26269,
"src": "8150:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26256,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8150:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26259,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8170:7:18",
"nodeType": "VariableDeclaration",
"scope": 26269,
"src": "8162:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26258,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8162:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "8149:29:18"
},
"returnParameters": {
"id": 26261,
"nodeType": "ParameterList",
"parameters": [],
"src": "8196:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26298,
"nodeType": "FunctionDefinition",
"src": "8460:309:18",
"nodes": [],
"body": {
"id": 26297,
"nodeType": "Block",
"src": "8574:195:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 26280,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26272,
"src": "8590:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26281,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26274,
"src": "8594:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26279,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26375,
"src": "8584:5:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 26282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8584:18:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26283,
"nodeType": "ExpressionStatement",
"src": "8584:18:18"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 26288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8664:1:18",
"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": 26287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8656:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26286,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8656:7:18",
"typeDescriptions": {}
}
},
"id": 26289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8656:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26290,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26272,
"src": "8668:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26291,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26274,
"src": "8672:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 26292,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26276,
"src": "8681:4:18",
"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": 26285,
"name": "_checkOnERC721Received",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26659,
"src": "8633:22:18",
"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": 26293,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8633:53:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 26294,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8700:52:18",
"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": 26284,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8612:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8612:150:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26296,
"nodeType": "ExpressionStatement",
"src": "8612:150:18"
}
]
},
"documentation": {
"id": 26270,
"nodeType": "StructuredDocumentation",
"src": "8245:210:18",
"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."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_safeMint",
"nameLocation": "8469:9:18",
"parameters": {
"id": 26277,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26272,
"mutability": "mutable",
"name": "to",
"nameLocation": "8496:2:18",
"nodeType": "VariableDeclaration",
"scope": 26298,
"src": "8488:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26271,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8488:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26274,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "8516:7:18",
"nodeType": "VariableDeclaration",
"scope": 26298,
"src": "8508:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26273,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8508:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26276,
"mutability": "mutable",
"name": "data",
"nameLocation": "8546:4:18",
"nodeType": "VariableDeclaration",
"scope": 26298,
"src": "8533:17:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 26275,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8533:5:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "8478:78:18"
},
"returnParameters": {
"id": 26278,
"nodeType": "ParameterList",
"parameters": [],
"src": "8574:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26375,
"nodeType": "FunctionDefinition",
"src": "9091:920:18",
"nodes": [],
"body": {
"id": 26374,
"nodeType": "Block",
"src": "9152:859:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26307,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9170:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 26310,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9184:1:18",
"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": 26309,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9176:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26308,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9176:7:18",
"typeDescriptions": {}
}
},
"id": 26311,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9176:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9170:16:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
"id": 26313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9188:34:18",
"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": 26306,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9162:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9162:61:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26315,
"nodeType": "ExpressionStatement",
"src": "9162:61:18"
},
{
"expression": {
"arguments": [
{
"id": 26320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9241:17:18",
"subExpression": {
"arguments": [
{
"id": 26318,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9250:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26317,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26220,
"src": "9242:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 26319,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9242:16:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
"id": 26321,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9260:30:18",
"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": 26316,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9233:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9233:58:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26323,
"nodeType": "ExpressionStatement",
"src": "9233:58:18"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 26327,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9331:1:18",
"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": 26326,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9323:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26325,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9323:7:18",
"typeDescriptions": {}
}
},
"id": 26328,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9323:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26329,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9335:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26330,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9339:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26331,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9348:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26324,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26705,
"src": "9302:20:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9302:48:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26333,
"nodeType": "ExpressionStatement",
"src": "9302:48:18"
},
{
"expression": {
"arguments": [
{
"id": 26338,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9445:17:18",
"subExpression": {
"arguments": [
{
"id": 26336,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9454:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26335,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26220,
"src": "9446:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 26337,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9446:16:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
"id": 26339,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9464:30:18",
"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": 26334,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9437:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9437:58:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26341,
"nodeType": "ExpressionStatement",
"src": "9437:58:18"
},
{
"id": 26348,
"nodeType": "UncheckedBlock",
"src": "9506:360:18",
"statements": [
{
"expression": {
"id": 26346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26342,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "9837:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26344,
"indexExpression": {
"id": 26343,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9847:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9837:13:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 26345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9854:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9837:18:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26347,
"nodeType": "ExpressionStatement",
"src": "9837:18:18"
}
]
},
{
"expression": {
"id": 26353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26349,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25806,
"src": "9876:7:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26351,
"indexExpression": {
"id": 26350,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9884:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9876:16:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 26352,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9895:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9876:21:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 26354,
"nodeType": "ExpressionStatement",
"src": "9876:21:18"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 26358,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9930:1:18",
"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": 26357,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9922:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26356,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9922:7:18",
"typeDescriptions": {}
}
},
"id": 26359,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9922:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26360,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9934:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26361,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9938:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26355,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26734,
"src": "9913:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9913:33:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26363,
"nodeType": "EmitStatement",
"src": "9908:38:18"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 26367,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9985:1:18",
"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": 26366,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9977:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26365,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9977:7:18",
"typeDescriptions": {}
}
},
"id": 26368,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9977:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26369,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26301,
"src": "9989:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26370,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26303,
"src": "9993:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26371,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10002:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26364,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26718,
"src": "9957:19:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9957:47:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26373,
"nodeType": "ExpressionStatement",
"src": "9957:47:18"
}
]
},
"documentation": {
"id": 26299,
"nodeType": "StructuredDocumentation",
"src": "8775:311:18",
"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."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nameLocation": "9100:5:18",
"parameters": {
"id": 26304,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26301,
"mutability": "mutable",
"name": "to",
"nameLocation": "9114:2:18",
"nodeType": "VariableDeclaration",
"scope": 26375,
"src": "9106:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26300,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9106:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26303,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "9126:7:18",
"nodeType": "VariableDeclaration",
"scope": 26375,
"src": "9118:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26302,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9118:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9105:29:18"
},
"returnParameters": {
"id": 26305,
"nodeType": "ParameterList",
"parameters": [],
"src": "9152:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26442,
"nodeType": "FunctionDefinition",
"src": "10337:762:18",
"nodes": [],
"body": {
"id": 26441,
"nodeType": "Block",
"src": "10386:713:18",
"nodes": [],
"statements": [
{
"assignments": [
26382
],
"declarations": [
{
"constant": false,
"id": 26382,
"mutability": "mutable",
"name": "owner",
"nameLocation": "10404:5:18",
"nodeType": "VariableDeclaration",
"scope": 26441,
"src": "10396:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26381,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10396:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 26387,
"initialValue": {
"arguments": [
{
"id": 26385,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "10427:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26383,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "10412:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10419:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "10412:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10412:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10396:39:18"
},
{
"expression": {
"arguments": [
{
"id": 26389,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26382,
"src": "10467:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 26392,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10482:1:18",
"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": 26391,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10474:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26390,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10474:7:18",
"typeDescriptions": {}
}
},
"id": 26393,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10474:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26394,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "10486:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26395,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10495:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26388,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26705,
"src": "10446:20:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10446:51:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26397,
"nodeType": "ExpressionStatement",
"src": "10446:51:18"
},
{
"expression": {
"id": 26403,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 26398,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26382,
"src": "10599:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 26401,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "10622:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26399,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "10607:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10614:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "10607:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10607:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10599:31:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 26404,
"nodeType": "ExpressionStatement",
"src": "10599:31:18"
},
{
"expression": {
"id": 26408,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "10668:31:18",
"subExpression": {
"baseExpression": {
"id": 26405,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25814,
"src": "10675:15:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26407,
"indexExpression": {
"id": 26406,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "10691:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10675:24:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26409,
"nodeType": "ExpressionStatement",
"src": "10668:31:18"
},
{
"id": 26416,
"nodeType": "UncheckedBlock",
"src": "10710:237:18",
"statements": [
{
"expression": {
"id": 26414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26410,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "10915:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26412,
"indexExpression": {
"id": 26411,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26382,
"src": "10925:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10915:16:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 26413,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10935:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10915:21:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26415,
"nodeType": "ExpressionStatement",
"src": "10915:21:18"
}
]
},
{
"expression": {
"id": 26420,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "10956:23:18",
"subExpression": {
"baseExpression": {
"id": 26417,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25806,
"src": "10963:7:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26419,
"indexExpression": {
"id": 26418,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "10971:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10963:16:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26421,
"nodeType": "ExpressionStatement",
"src": "10956:23:18"
},
{
"eventCall": {
"arguments": [
{
"id": 26423,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26382,
"src": "11004:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 26426,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11019:1:18",
"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": 26425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11011:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11011:7:18",
"typeDescriptions": {}
}
},
"id": 26427,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11011:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26428,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "11023:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26422,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26734,
"src": "10995:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26429,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10995:36:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26430,
"nodeType": "EmitStatement",
"src": "10990:41:18"
},
{
"expression": {
"arguments": [
{
"id": 26432,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26382,
"src": "11062:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 26435,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11077:1:18",
"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": 26434,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11069:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26433,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11069:7:18",
"typeDescriptions": {}
}
},
"id": 26436,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11069:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26437,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26378,
"src": "11081:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11090:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26431,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26718,
"src": "11042:19:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26439,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11042:50:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26440,
"nodeType": "ExpressionStatement",
"src": "11042:50:18"
}
]
},
"documentation": {
"id": 26376,
"nodeType": "StructuredDocumentation",
"src": "10017:315:18",
"text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nameLocation": "10346:5:18",
"parameters": {
"id": 26379,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26378,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "10360:7:18",
"nodeType": "VariableDeclaration",
"scope": 26442,
"src": "10352:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26377,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10352:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "10351:17:18"
},
"returnParameters": {
"id": 26380,
"nodeType": "ParameterList",
"parameters": [],
"src": "10386:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26527,
"nodeType": "FunctionDefinition",
"src": "11423:1233:18",
"nodes": [],
"body": {
"id": 26526,
"nodeType": "Block",
"src": "11532:1124:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26458,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 26455,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "11565:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26453,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "11550:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26454,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11557:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "11550:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11550:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 26457,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "11577:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11550:31:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
"id": 26459,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11583:39:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
"typeString": "literal_string \"ERC721: transfer from incorrect owner\""
},
"value": "ERC721: transfer from incorrect owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
"typeString": "literal_string \"ERC721: transfer from incorrect owner\""
}
],
"id": 26452,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11542:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11542:81:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26461,
"nodeType": "ExpressionStatement",
"src": "11542:81:18"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26468,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26463,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "11641:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 26466,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11655:1:18",
"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": 26465,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11647:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26464,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11647:7:18",
"typeDescriptions": {}
}
},
"id": 26467,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11647:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11641:16:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
"id": 26469,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11659:38:18",
"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": 26462,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11633:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26470,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11633:65:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26471,
"nodeType": "ExpressionStatement",
"src": "11633:65:18"
},
{
"expression": {
"arguments": [
{
"id": 26473,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "11730:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26474,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "11736:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26475,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "11740:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26476,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11749:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26472,
"name": "_beforeTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26705,
"src": "11709:20:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26477,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11709:42:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26478,
"nodeType": "ExpressionStatement",
"src": "11709:42:18"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26485,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 26482,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "11866:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26480,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "11851:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26481,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11858:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "11851:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26483,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11851:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 26484,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "11878:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11851:31:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
"id": 26486,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11884:39:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
"typeString": "literal_string \"ERC721: transfer from incorrect owner\""
},
"value": "ERC721: transfer from incorrect owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
"typeString": "literal_string \"ERC721: transfer from incorrect owner\""
}
],
"id": 26479,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11843:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11843:81:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26488,
"nodeType": "ExpressionStatement",
"src": "11843:81:18"
},
{
"expression": {
"id": 26492,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "delete",
"prefix": true,
"src": "11986:31:18",
"subExpression": {
"baseExpression": {
"id": 26489,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25814,
"src": "11993:15:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26491,
"indexExpression": {
"id": 26490,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "12009:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "11993:24:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26493,
"nodeType": "ExpressionStatement",
"src": "11986:31:18"
},
{
"id": 26506,
"nodeType": "UncheckedBlock",
"src": "12028:496:18",
"statements": [
{
"expression": {
"id": 26498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26494,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "12461:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26496,
"indexExpression": {
"id": 26495,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "12471:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "12461:15:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 26497,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12480:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "12461:20:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26499,
"nodeType": "ExpressionStatement",
"src": "12461:20:18"
},
{
"expression": {
"id": 26504,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26500,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "12495:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26502,
"indexExpression": {
"id": 26501,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "12505:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "12495:13:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "31",
"id": 26503,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12512:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "12495:18:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26505,
"nodeType": "ExpressionStatement",
"src": "12495:18:18"
}
]
},
{
"expression": {
"id": 26511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26507,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25806,
"src": "12533:7:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26509,
"indexExpression": {
"id": 26508,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "12541:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "12533:16:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 26510,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "12552:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "12533:21:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 26512,
"nodeType": "ExpressionStatement",
"src": "12533:21:18"
},
{
"eventCall": {
"arguments": [
{
"id": 26514,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "12579:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26515,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "12585:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26516,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "12589:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26513,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26734,
"src": "12570:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26517,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12570:27:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26518,
"nodeType": "EmitStatement",
"src": "12565:32:18"
},
{
"expression": {
"arguments": [
{
"id": 26520,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26445,
"src": "12628:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26521,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26447,
"src": "12634:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26522,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26449,
"src": "12638:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "31",
"id": 26523,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12647:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 26519,
"name": "_afterTokenTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26718,
"src": "12608:19:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 26524,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12608:41:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26525,
"nodeType": "ExpressionStatement",
"src": "12608:41:18"
}
]
},
"documentation": {
"id": 26443,
"nodeType": "StructuredDocumentation",
"src": "11105:313:18",
"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."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "11432:9:18",
"parameters": {
"id": 26450,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26445,
"mutability": "mutable",
"name": "from",
"nameLocation": "11459:4:18",
"nodeType": "VariableDeclaration",
"scope": 26527,
"src": "11451:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26444,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11451:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26447,
"mutability": "mutable",
"name": "to",
"nameLocation": "11481:2:18",
"nodeType": "VariableDeclaration",
"scope": 26527,
"src": "11473:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26446,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11473:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26449,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "11501:7:18",
"nodeType": "VariableDeclaration",
"scope": 26527,
"src": "11493:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26448,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11493:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11441:73:18"
},
"returnParameters": {
"id": 26451,
"nodeType": "ParameterList",
"parameters": [],
"src": "11532:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26551,
"nodeType": "FunctionDefinition",
"src": "12768:171:18",
"nodes": [],
"body": {
"id": 26550,
"nodeType": "Block",
"src": "12832:107:18",
"nodes": [],
"statements": [
{
"expression": {
"id": 26539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26535,
"name": "_tokenApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25814,
"src": "12842:15:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
"typeString": "mapping(uint256 => address)"
}
},
"id": 26537,
"indexExpression": {
"id": 26536,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26532,
"src": "12858:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "12842:24:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 26538,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26530,
"src": "12869:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "12842:29:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 26540,
"nodeType": "ExpressionStatement",
"src": "12842:29:18"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"id": 26544,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26532,
"src": "12910:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 26542,
"name": "ERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26719,
"src": "12895:6:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC721_$26719_$",
"typeString": "type(contract ERC721)"
}
},
"id": 26543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "12902:7:18",
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 25920,
"src": "12895:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 26545,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12895:23:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26546,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26530,
"src": "12920:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26547,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26532,
"src": "12924:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26541,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26743,
"src": "12886:8:18",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 26548,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12886:46:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26549,
"nodeType": "EmitStatement",
"src": "12881:51:18"
}
]
},
"documentation": {
"id": 26528,
"nodeType": "StructuredDocumentation",
"src": "12662:101:18",
"text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_approve",
"nameLocation": "12777:8:18",
"parameters": {
"id": 26533,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26530,
"mutability": "mutable",
"name": "to",
"nameLocation": "12794:2:18",
"nodeType": "VariableDeclaration",
"scope": 26551,
"src": "12786:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26529,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12786:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26532,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "12806:7:18",
"nodeType": "VariableDeclaration",
"scope": 26551,
"src": "12798:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26531,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12798:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12785:29:18"
},
"returnParameters": {
"id": 26534,
"nodeType": "ParameterList",
"parameters": [],
"src": "12832:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26583,
"nodeType": "FunctionDefinition",
"src": "13075:307:18",
"nodes": [],
"body": {
"id": 26582,
"nodeType": "Block",
"src": "13198:184:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26562,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26554,
"src": "13216:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 26563,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26556,
"src": "13225:8:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "13216:17:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
"id": 26565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13235:27:18",
"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": 26561,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "13208:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13208:55:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26567,
"nodeType": "ExpressionStatement",
"src": "13208:55:18"
},
{
"expression": {
"id": 26574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 26568,
"name": "_operatorApprovals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25820,
"src": "13273:18:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
}
},
"id": 26571,
"indexExpression": {
"id": 26569,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26554,
"src": "13292:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "13273:25:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 26572,
"indexExpression": {
"id": 26570,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26556,
"src": "13299:8:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "13273:35:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 26573,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26558,
"src": "13311:8:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "13273:46:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 26575,
"nodeType": "ExpressionStatement",
"src": "13273:46:18"
},
{
"eventCall": {
"arguments": [
{
"id": 26577,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26554,
"src": "13349:5:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26578,
"name": "operator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26556,
"src": "13356:8:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26579,
"name": "approved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26558,
"src": "13366:8:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 26576,
"name": "ApprovalForAll",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26752,
"src": "13334:14:18",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
"typeString": "function (address,address,bool)"
}
},
"id": 26580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13334:41:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26581,
"nodeType": "EmitStatement",
"src": "13329:46:18"
}
]
},
"documentation": {
"id": 26552,
"nodeType": "StructuredDocumentation",
"src": "12945:125:18",
"text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setApprovalForAll",
"nameLocation": "13084:18:18",
"parameters": {
"id": 26559,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26554,
"mutability": "mutable",
"name": "owner",
"nameLocation": "13120:5:18",
"nodeType": "VariableDeclaration",
"scope": 26583,
"src": "13112:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26553,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13112:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26556,
"mutability": "mutable",
"name": "operator",
"nameLocation": "13143:8:18",
"nodeType": "VariableDeclaration",
"scope": 26583,
"src": "13135:16:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26555,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13135:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26558,
"mutability": "mutable",
"name": "approved",
"nameLocation": "13166:8:18",
"nodeType": "VariableDeclaration",
"scope": 26583,
"src": "13161:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26557,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "13161:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "13102:78:18"
},
"returnParameters": {
"id": 26560,
"nodeType": "ParameterList",
"parameters": [],
"src": "13198:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26597,
"nodeType": "FunctionDefinition",
"src": "13466:133:18",
"nodes": [],
"body": {
"id": 26596,
"nodeType": "Block",
"src": "13529:70:18",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 26591,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26586,
"src": "13555:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 26590,
"name": "_exists",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26220,
"src": "13547:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) view returns (bool)"
}
},
"id": 26592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13547:16:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
"id": 26593,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13565:26:18",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
"typeString": "literal_string \"ERC721: invalid token ID\""
},
"value": "ERC721: invalid token ID"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
"typeString": "literal_string \"ERC721: invalid token ID\""
}
],
"id": 26589,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "13539:7:18",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 26594,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13539:53:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26595,
"nodeType": "ExpressionStatement",
"src": "13539:53:18"
}
]
},
"documentation": {
"id": 26584,
"nodeType": "StructuredDocumentation",
"src": "13388:73:18",
"text": " @dev Reverts if the `tokenId` has not been minted yet."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_requireMinted",
"nameLocation": "13475:14:18",
"parameters": {
"id": 26587,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26586,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "13498:7:18",
"nodeType": "VariableDeclaration",
"scope": 26597,
"src": "13490:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26585,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13490:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13489:17:18"
},
"returnParameters": {
"id": 26588,
"nodeType": "ParameterList",
"parameters": [],
"src": "13529:0:18"
},
"scope": 26719,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 26659,
"nodeType": "FunctionDefinition",
"src": "14151:831:18",
"nodes": [],
"body": {
"id": 26658,
"nodeType": "Block",
"src": "14306:676:18",
"nodes": [],
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 26611,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26602,
"src": "14320:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 26612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14323:10:18",
"memberName": "isContract",
"nodeType": "MemberAccess",
"referencedDeclaration": 26898,
"src": "14320:13:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 26613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14320:15:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 26656,
"nodeType": "Block",
"src": "14940:36:18",
"statements": [
{
"expression": {
"hexValue": "74727565",
"id": 26654,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14961:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 26610,
"id": 26655,
"nodeType": "Return",
"src": "14954:11:18"
}
]
},
"id": 26657,
"nodeType": "IfStatement",
"src": "14316:660:18",
"trueBody": {
"id": 26653,
"nodeType": "Block",
"src": "14337:597:18",
"statements": [
{
"clauses": [
{
"block": {
"id": 26633,
"nodeType": "Block",
"src": "14451:91:18",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 26631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26627,
"name": "retval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26625,
"src": "14476:6:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"expression": {
"expression": {
"id": 26628,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26853,
"src": "14486:15:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$26853_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 26629,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "14502:16:18",
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 26852,
"src": "14486:32:18",
"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": 26630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "14519:8:18",
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "14486:41:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "14476:51:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 26610,
"id": 26632,
"nodeType": "Return",
"src": "14469:58:18"
}
]
},
"errorName": "",
"id": 26634,
"nodeType": "TryCatchClause",
"parameters": {
"id": 26626,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26625,
"mutability": "mutable",
"name": "retval",
"nameLocation": "14443:6:18",
"nodeType": "VariableDeclaration",
"scope": 26634,
"src": "14436:13:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 26624,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "14436:6:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "14435:15:18"
},
"src": "14427:115:18"
},
{
"block": {
"id": 26650,
"nodeType": "Block",
"src": "14571:353:18",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 26641,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 26638,
"name": "reason",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26636,
"src": "14593:6:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 26639,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14600:6:18",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "14593:13:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 26640,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14610:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "14593:18:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 26648,
"nodeType": "Block",
"src": "14720:190:18",
"statements": [
{
"AST": {
"nodeType": "YulBlock",
"src": "14806:86:18",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14843:2:18",
"type": "",
"value": "32"
},
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "14847:6:18"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14839:3:18"
},
"nodeType": "YulFunctionCall",
"src": "14839:15:18"
},
{
"arguments": [
{
"name": "reason",
"nodeType": "YulIdentifier",
"src": "14862:6:18"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "14856:5:18"
},
"nodeType": "YulFunctionCall",
"src": "14856:13:18"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "14832:6:18"
},
"nodeType": "YulFunctionCall",
"src": "14832:38:18"
},
"nodeType": "YulExpressionStatement",
"src": "14832:38:18"
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "london",
"externalReferences": [
{
"declaration": 26636,
"isOffset": false,
"isSlot": false,
"src": "14847:6:18",
"valueSize": 1
},
{
"declaration": 26636,
"isOffset": false,
"isSlot": false,
"src": "14862:6:18",
"valueSize": 1
}
],
"id": 26647,
"nodeType": "InlineAssembly",
"src": "14797:95:18"
}
]
},
"id": 26649,
"nodeType": "IfStatement",
"src": "14589:321:18",
"trueBody": {
"id": 26646,
"nodeType": "Block",
"src": "14613:101:18",
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
"id": 26643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14642:52:18",
"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": 26642,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "14635:6:18",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 26644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14635:60:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 26645,
"nodeType": "ExpressionStatement",
"src": "14635:60:18"
}
]
}
}
]
},
"errorName": "",
"id": 26651,
"nodeType": "TryCatchClause",
"parameters": {
"id": 26637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26636,
"mutability": "mutable",
"name": "reason",
"nameLocation": "14563:6:18",
"nodeType": "VariableDeclaration",
"scope": 26651,
"src": "14550:19:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 26635,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "14550:5:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "14549:21:18"
},
"src": "14543:381:18"
}
],
"externalCall": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 26618,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27269,
"src": "14392:10:18",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 26619,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14392:12:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26620,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26600,
"src": "14406:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 26621,
"name": "tokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26604,
"src": "14412:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 26622,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26606,
"src": "14421:4:18",
"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": 26615,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26602,
"src": "14371:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 26614,
"name": "IERC721Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26853,
"src": "14355:15:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$26853_$",
"typeString": "type(contract IERC721Receiver)"
}
},
"id": 26616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14355:19:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC721Receiver_$26853",
"typeString": "contract IERC721Receiver"
}
},
"id": 26617,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14375:16:18",
"memberName": "onERC721Received",
"nodeType": "MemberAccess",
"referencedDeclaration": 26852,
"src": "14355:36:18",
"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": 26623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14355:71:18",
"tryCall": true,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"id": 26652,
"nodeType": "TryStatement",
"src": "14351:573:18"
}
]
}
}
]
},
"documentation": {
"id": 26598,
"nodeType": "StructuredDocumentation",
"src": "13605:541:18",
"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"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_checkOnERC721Received",
"nameLocation": "14160:22:18",
"parameters": {
"id": 26607,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26600,
"mutability": "mutable",
"name": "from",
"nameLocation": "14200:4:18",
"nodeType": "VariableDeclaration",
"scope": 26659,
"src": "14192:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26599,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14192:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26602,
"mutability": "mutable",
"name": "to",
"nameLocation": "14222:2:18",
"nodeType": "VariableDeclaration",
"scope": 26659,
"src": "14214:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26601,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14214:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26604,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "14242:7:18",
"nodeType": "VariableDeclaration",
"scope": 26659,
"src": "14234:15:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26603,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14234:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26606,
"mutability": "mutable",
"name": "data",
"nameLocation": "14272:4:18",
"nodeType": "VariableDeclaration",
"scope": 26659,
"src": "14259:17:18",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 26605,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "14259:5:18",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "14182:100:18"
},
"returnParameters": {
"id": 26610,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26609,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26659,
"src": "14300:4:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 26608,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14300:4:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "14299:6:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"id": 26705,
"nodeType": "FunctionDefinition",
"src": "15698:396:18",
"nodes": [],
"body": {
"id": 26704,
"nodeType": "Block",
"src": "15856:238:18",
"nodes": [],
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 26673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26671,
"name": "batchSize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26668,
"src": "15870:9:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "31",
"id": 26672,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15882:1:18",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "15870:13:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 26703,
"nodeType": "IfStatement",
"src": "15866:222:18",
"trueBody": {
"id": 26702,
"nodeType": "Block",
"src": "15885:203:18",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26674,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26662,
"src": "15903:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 26677,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15919:1:18",
"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": 26676,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "15911:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26675,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15911:7:18",
"typeDescriptions": {}
}
},
"id": 26678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15911:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "15903:18:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 26687,
"nodeType": "IfStatement",
"src": "15899:85:18",
"trueBody": {
"id": 26686,
"nodeType": "Block",
"src": "15923:61:18",
"statements": [
{
"expression": {
"id": 26684,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26680,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "15941:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26682,
"indexExpression": {
"id": 26681,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26662,
"src": "15951:4:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "15941:15:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 26683,
"name": "batchSize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26668,
"src": "15960:9:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "15941:28:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26685,
"nodeType": "ExpressionStatement",
"src": "15941:28:18"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 26693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 26688,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26664,
"src": "16001:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 26691,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "16015:1:18",
"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": 26690,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "16007:7:18",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 26689,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16007:7:18",
"typeDescriptions": {}
}
},
"id": 26692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16007:10:18",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "16001:16:18",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 26701,
"nodeType": "IfStatement",
"src": "15997:81:18",
"trueBody": {
"id": 26700,
"nodeType": "Block",
"src": "16019:59:18",
"statements": [
{
"expression": {
"id": 26698,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 26694,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25810,
"src": "16037:9:18",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 26696,
"indexExpression": {
"id": 26695,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26664,
"src": "16047:2:18",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "16037:13:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 26697,
"name": "batchSize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26668,
"src": "16054:9:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16037:26:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 26699,
"nodeType": "ExpressionStatement",
"src": "16037:26:18"
}
]
}
}
]
}
}
]
},
"documentation": {
"id": 26660,
"nodeType": "StructuredDocumentation",
"src": "14988:705:18",
"text": " @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_beforeTokenTransfer",
"nameLocation": "15707:20:18",
"parameters": {
"id": 26669,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26662,
"mutability": "mutable",
"name": "from",
"nameLocation": "15745:4:18",
"nodeType": "VariableDeclaration",
"scope": 26705,
"src": "15737:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26661,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15737:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26664,
"mutability": "mutable",
"name": "to",
"nameLocation": "15767:2:18",
"nodeType": "VariableDeclaration",
"scope": 26705,
"src": "15759:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26663,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15759:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26666,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26705,
"src": "15779:7:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26665,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15779:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26668,
"mutability": "mutable",
"name": "batchSize",
"nameLocation": "15823:9:18",
"nodeType": "VariableDeclaration",
"scope": 26705,
"src": "15815:17:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26667,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15815:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "15727:111:18"
},
"returnParameters": {
"id": 26670,
"nodeType": "ParameterList",
"parameters": [],
"src": "15856:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 26718,
"nodeType": "FunctionDefinition",
"src": "16800:153:18",
"nodes": [],
"body": {
"id": 26717,
"nodeType": "Block",
"src": "16951:2:18",
"nodes": [],
"statements": []
},
"documentation": {
"id": 26706,
"nodeType": "StructuredDocumentation",
"src": "16100:695:18",
"text": " @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_afterTokenTransfer",
"nameLocation": "16809:19:18",
"parameters": {
"id": 26715,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26708,
"mutability": "mutable",
"name": "from",
"nameLocation": "16846:4:18",
"nodeType": "VariableDeclaration",
"scope": 26718,
"src": "16838:12:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26707,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16838:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26710,
"mutability": "mutable",
"name": "to",
"nameLocation": "16868:2:18",
"nodeType": "VariableDeclaration",
"scope": 26718,
"src": "16860:10:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26709,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16860:7:18",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26712,
"mutability": "mutable",
"name": "firstTokenId",
"nameLocation": "16888:12:18",
"nodeType": "VariableDeclaration",
"scope": 26718,
"src": "16880:20:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26711,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16880:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 26714,
"mutability": "mutable",
"name": "batchSize",
"nameLocation": "16918:9:18",
"nodeType": "VariableDeclaration",
"scope": 26718,
"src": "16910:17:18",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26713,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16910:7:18",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16828:105:18"
},
"returnParameters": {
"id": 26716,
"nodeType": "ParameterList",
"parameters": [],
"src": "16951:0:18"
},
"scope": 26719,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 25785,
"name": "Context",
"nameLocations": [
"647:7:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27279,
"src": "647:7:18"
},
"id": 25786,
"nodeType": "InheritanceSpecifier",
"src": "647:7:18"
},
{
"baseName": {
"id": 25787,
"name": "ERC165",
"nameLocations": [
"656:6:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27552,
"src": "656:6:18"
},
"id": 25788,
"nodeType": "InheritanceSpecifier",
"src": "656:6:18"
},
{
"baseName": {
"id": 25789,
"name": "IERC721",
"nameLocations": [
"664:7:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26835,
"src": "664:7:18"
},
"id": 25790,
"nodeType": "InheritanceSpecifier",
"src": "664:7:18"
},
{
"baseName": {
"id": 25791,
"name": "IERC721Metadata",
"nameLocations": [
"673:15:18"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26880,
"src": "673:15:18"
},
"id": 25792,
"nodeType": "InheritanceSpecifier",
"src": "673:15:18"
}
],
"canonicalName": "ERC721",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 25784,
"nodeType": "StructuredDocumentation",
"src": "381:246:18",
"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,
"linearizedBaseContracts": [
26719,
26880,
26835,
27552,
27564,
27279
],
"name": "ERC721",
"nameLocation": "637:6:18",
"scope": 26720,
"usedErrors": []
}
],
"license": "MIT"
},
"id": 18
}