diff --git a/build/contracts/BEBadge.json b/build/contracts/BEBadge.json index 6632933..71aeb11 100644 --- a/build/contracts/BEBadge.json +++ b/build/contracts/BEBadge.json @@ -38312,12 +38312,12 @@ } }, "links": {}, - "address": "0xe2E4D5a4045fBFcbCBECAf5b8A94303712d2FA97", - "transactionHash": "0x6cd38599ef7660f9dfc6416bfe10bc3208699d4ab0e96cdde7beee6984c6cc8c" + "address": "0x6a673D946a976776fd5F163d9d831b2fEB600015", + "transactionHash": "0x891eca78035632e35ac8f5617089b7ed165c78a73deb43ac9d55e3a027925f91" } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T06:07:59.193Z", + "updatedAt": "2024-01-10T06:03:43.853Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BEMultiSigWallet.json b/build/contracts/BEMultiSigWallet.json index 2edc2c5..3776fd9 100644 --- a/build/contracts/BEMultiSigWallet.json +++ b/build/contracts/BEMultiSigWallet.json @@ -46453,7 +46453,7 @@ } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T05:51:26.136Z", + "updatedAt": "2024-01-09T02:33:38.506Z", "networkType": "ethereum", "devdoc": { "events": { diff --git a/build/contracts/BEUSDT.json b/build/contracts/BEUSDT.json index 8af4c48..fa1f363 100644 --- a/build/contracts/BEUSDT.json +++ b/build/contracts/BEUSDT.json @@ -19455,7 +19455,7 @@ } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T05:51:26.126Z", + "updatedAt": "2024-01-09T02:33:38.498Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/IBadge.json b/build/contracts/IBadge.json new file mode 100644 index 0000000..aaa0357 --- /dev/null +++ b/build/contracts/IBadge.json @@ -0,0 +1,1966 @@ +{ + "contractName": "IBadge", + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"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\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftBuner.sol\":\"IBadge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc117ce50ea746cab6b97ed1a1facee17a715ae0cb95d67b943dacbaf15176fb\",\"dweb:/ipfs/QmYRZ2UGNYwsHwfNu7Wjr8L2j1LBZ1mKv6NvbwgterYMXc\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/logic/NftBuner.sol\":{\"keccak256\":\"0x63c14bb9ed3d2716b95bdc701490d98f74f37cff86ea4c6a0e849bcb975b31c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df20276048be4baa8700e123986a7add25180cd2f2430c3b857bd4adbaefd796\",\"dweb:/ipfs/QmdjVXXh7NKKqv3oFpu773J4FuUi3SDsY2oSMThrbRWEbb\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [], + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IBadge is IERC721{\n function burn(address owner, uint256 tokenId) external;\n}\n\ninterface ISbt is IERC721{\n function burn(uint256 tokenId) external;\n}\n\n\ncontract NftBuner is AccessControlEnumerable {\n event BatchBurn(\n address indexed user,\n uint256 indexed tokenId,\n address indexed nft,\n uint256[] tokenIds\n );\n\n function brunBadge(address _badge, uint256[] calldata _nftIds) external {\n address user = _msgSender();\n for (uint256 i = 0; i < _nftIds.length; i++) {\n IBadge(_badge).burn(user, _nftIds[i]);\n }\n emit BatchBurn(user, 0, _badge, _nftIds);\n }\n\n function burnSbt(address _nft, uint256[] calldata _nftIds) external{\n for (uint256 i = 0; i < _nftIds.length; i++) {\n ISbt(_nft).burn(_nftIds[i]);\n }\n address user = _msgSender();\n emit BatchBurn(user, 0, _nft, _nftIds);\n }\n}\n", + "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/NftBuner.sol", + "ast": { + "absolutePath": "project:/contracts/logic/NftBuner.sol", + "exportedSymbols": { + "AccessControl": [ + 315 + ], + "AccessControlEnumerable": [ + 440 + ], + "Context": [ + 676 + ], + "ERC165": [ + 929 + ], + "EnumerableSet": [ + 2525 + ], + "IAccessControl": [ + 513 + ], + "IAccessControlEnumerable": [ + 538 + ], + "IBadge": [ + 2539 + ], + "IERC165": [ + 941 + ], + "IERC721": [ + 654 + ], + "ISbt": [ + 2547 + ], + "Math": [ + 1807 + ], + "NftBuner": [ + 2648 + ], + "SignedMath": [ + 1912 + ], + "Strings": [ + 905 + ] + }, + "id": 2649, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2527, + "literals": [ + "solidity", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:23:12" + }, + { + "absolutePath": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "id": 2528, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 441, + "src": "57:68:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 2529, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 655, + "src": "126:58:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2530, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "206:7:12" + }, + "id": 2531, + "nodeType": "InheritanceSpecifier", + "src": "206:7:12" + } + ], + "canonicalName": "IBadge", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2539, + "linearizedBaseContracts": [ + 2539, + 654, + 941 + ], + "name": "IBadge", + "nameLocation": "196:6:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9dc29fac", + "id": 2538, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "226:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2533, + "mutability": "mutable", + "name": "owner", + "nameLocation": "239:5:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "231:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2535, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "254:7:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "246:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "230:32:12" + }, + "returnParameters": { + "id": 2537, + "nodeType": "ParameterList", + "parameters": [], + "src": "271:0:12" + }, + "scope": 2539, + "src": "217:55:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "186:88:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2540, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "294:7:12" + }, + "id": 2541, + "nodeType": "InheritanceSpecifier", + "src": "294:7:12" + } + ], + "canonicalName": "ISbt", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2547, + "linearizedBaseContracts": [ + 2547, + 654, + 941 + ], + "name": "ISbt", + "nameLocation": "286:4:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "42966c68", + "id": 2546, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "314:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2543, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "327:7:12", + "nodeType": "VariableDeclaration", + "scope": 2546, + "src": "319:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "318:17:12" + }, + "returnParameters": { + "id": 2545, + "nodeType": "ParameterList", + "parameters": [], + "src": "344:0:12" + }, + "scope": 2547, + "src": "305:40:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "276:71:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2548, + "name": "AccessControlEnumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 440, + "src": "371:23:12" + }, + "id": 2549, + "nodeType": "InheritanceSpecifier", + "src": "371:23:12" + } + ], + "canonicalName": "NftBuner", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2648, + "linearizedBaseContracts": [ + 2648, + 440, + 315, + 929, + 941, + 538, + 513, + 676 + ], + "name": "NftBuner", + "nameLocation": "359:8:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 2560, + "name": "BatchBurn", + "nameLocation": "405:9:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2551, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "436:4:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "420:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "420:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2553, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "462:7:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "446:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2555, + "indexed": true, + "mutability": "mutable", + "name": "nft", + "nameLocation": "491:3:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "475:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "indexed": false, + "mutability": "mutable", + "name": "tokenIds", + "nameLocation": "510:8:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "500:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2557, + "nodeType": "ArrayTypeName", + "src": "500:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "414:108:12" + }, + "src": "399:124:12" + }, + { + "body": { + "id": 2603, + "nodeType": "Block", + "src": "599:186:12", + "statements": [ + { + "assignments": [ + 2569 + ], + "declarations": [ + { + "constant": false, + "id": 2569, + "mutability": "mutable", + "name": "user", + "nameLocation": "613:4:12", + "nodeType": "VariableDeclaration", + "scope": 2603, + "src": "605:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "605:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2572, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2570, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "620:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "605:27:12" + }, + { + "body": { + "id": 2594, + "nodeType": "Block", + "src": "683:52:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2588, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "711:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 2589, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "717:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2591, + "indexExpression": { + "id": 2590, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "725:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "717:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2585, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "698:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2584, + "name": "IBadge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "691:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBadge_$2539_$", + "typeString": "type(contract IBadge)" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:14:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBadge_$2539", + "typeString": "contract IBadge" + } + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2538, + "src": "691:19:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2593, + "nodeType": "ExpressionStatement", + "src": "691:37:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2577, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "658:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2578, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "662:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "662:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "658:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2595, + "initializationExpression": { + "assignments": [ + 2574 + ], + "declarations": [ + { + "constant": false, + "id": 2574, + "mutability": "mutable", + "name": "i", + "nameLocation": "651:1:12", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "643:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "643:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2576, + "initialValue": { + "hexValue": "30", + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "643:13:12" + }, + "loopExpression": { + "expression": { + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "678:3:12", + "subExpression": { + "id": 2581, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "678:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2583, + "nodeType": "ExpressionStatement", + "src": "678:3:12" + }, + "nodeType": "ForStatement", + "src": "638:97:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2597, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "755:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2599, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "764:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2600, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "772:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2596, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "745:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "745:35:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2602, + "nodeType": "EmitStatement", + "src": "740:40:12" + } + ] + }, + "functionSelector": "87a64551", + "id": 2604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "brunBadge", + "nameLocation": "536:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "_badge", + "nameLocation": "554:6:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "546:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2565, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "581:7:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "562:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "562:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2564, + "nodeType": "ArrayTypeName", + "src": "562:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "545:44:12" + }, + "returnParameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [], + "src": "599:0:12" + }, + "scope": 2648, + "src": "527:258:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2646, + "nodeType": "Block", + "src": "856:174:12", + "statements": [ + { + "body": { + "id": 2632, + "nodeType": "Block", + "src": "907:42:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2627, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "931:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2629, + "indexExpression": { + "id": 2628, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "939:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "931:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2624, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "920:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2623, + "name": "ISbt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "915:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISbt_$2547_$", + "typeString": "type(contract ISbt)" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISbt_$2547", + "typeString": "contract ISbt" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2546, + "src": "915:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:27:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2631, + "nodeType": "ExpressionStatement", + "src": "915:27:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "882:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2617, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "886:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "886:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "882:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2633, + "initializationExpression": { + "assignments": [ + 2613 + ], + "declarations": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "i", + "nameLocation": "875:1:12", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "867:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "867:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2615, + "initialValue": { + "hexValue": "30", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "879:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "867:13:12" + }, + "loopExpression": { + "expression": { + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "902:3:12", + "subExpression": { + "id": 2620, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "902:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2622, + "nodeType": "ExpressionStatement", + "src": "902:3:12" + }, + "nodeType": "ForStatement", + "src": "862:87:12" + }, + { + "assignments": [ + 2635 + ], + "declarations": [ + { + "constant": false, + "id": 2635, + "mutability": "mutable", + "name": "user", + "nameLocation": "962:4:12", + "nodeType": "VariableDeclaration", + "scope": 2646, + "src": "954:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "954:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2638, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2636, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "969:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "969:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "954:27:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2640, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "1002:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1008:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2642, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "1011:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2643, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "1017:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2639, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "992:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:33:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2645, + "nodeType": "EmitStatement", + "src": "987:38:12" + } + ] + }, + "functionSelector": "e7a70ee7", + "id": 2647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnSbt", + "nameLocation": "798:7:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2606, + "mutability": "mutable", + "name": "_nft", + "nameLocation": "814:4:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "806:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2609, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "839:7:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "820:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "820:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2608, + "nodeType": "ArrayTypeName", + "src": "820:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "805:42:12" + }, + "returnParameters": { + "id": 2611, + "nodeType": "ParameterList", + "parameters": [], + "src": "856:0:12" + }, + "scope": 2648, + "src": "789:241:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "350:682:12", + "usedErrors": [] + } + ], + "src": "32:1001:12" + }, + "compiler": { + "name": "solc", + "version": "0.8.10+commit.fc410830.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-01-10T05:56:41.080Z", + "devdoc": { + "kind": "dev", + "methods": { + "approve(address,uint256)": { + "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the number of tokens in ``owner``'s account." + }, + "getApproved(uint256)": { + "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist." + }, + "isApprovedForAll(address,address)": { + "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}" + }, + "ownerOf(uint256)": { + "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist." + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event." + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event." + }, + "setApprovalForAll(address,bool)": { + "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event." + }, + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/build/contracts/ISbt.json b/build/contracts/ISbt.json new file mode 100644 index 0000000..17b4467 --- /dev/null +++ b/build/contracts/ISbt.json @@ -0,0 +1,1961 @@ +{ + "contractName": "ISbt", + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"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\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftBuner.sol\":\"ISbt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc117ce50ea746cab6b97ed1a1facee17a715ae0cb95d67b943dacbaf15176fb\",\"dweb:/ipfs/QmYRZ2UGNYwsHwfNu7Wjr8L2j1LBZ1mKv6NvbwgterYMXc\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/logic/NftBuner.sol\":{\"keccak256\":\"0x63c14bb9ed3d2716b95bdc701490d98f74f37cff86ea4c6a0e849bcb975b31c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df20276048be4baa8700e123986a7add25180cd2f2430c3b857bd4adbaefd796\",\"dweb:/ipfs/QmdjVXXh7NKKqv3oFpu773J4FuUi3SDsY2oSMThrbRWEbb\"]}},\"version\":1}", + "bytecode": "0x", + "deployedBytecode": "0x", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [], + "sourceMap": "", + "deployedSourceMap": "", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IBadge is IERC721{\n function burn(address owner, uint256 tokenId) external;\n}\n\ninterface ISbt is IERC721{\n function burn(uint256 tokenId) external;\n}\n\n\ncontract NftBuner is AccessControlEnumerable {\n event BatchBurn(\n address indexed user,\n uint256 indexed tokenId,\n address indexed nft,\n uint256[] tokenIds\n );\n\n function brunBadge(address _badge, uint256[] calldata _nftIds) external {\n address user = _msgSender();\n for (uint256 i = 0; i < _nftIds.length; i++) {\n IBadge(_badge).burn(user, _nftIds[i]);\n }\n emit BatchBurn(user, 0, _badge, _nftIds);\n }\n\n function burnSbt(address _nft, uint256[] calldata _nftIds) external{\n for (uint256 i = 0; i < _nftIds.length; i++) {\n ISbt(_nft).burn(_nftIds[i]);\n }\n address user = _msgSender();\n emit BatchBurn(user, 0, _nft, _nftIds);\n }\n}\n", + "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/NftBuner.sol", + "ast": { + "absolutePath": "project:/contracts/logic/NftBuner.sol", + "exportedSymbols": { + "AccessControl": [ + 315 + ], + "AccessControlEnumerable": [ + 440 + ], + "Context": [ + 676 + ], + "ERC165": [ + 929 + ], + "EnumerableSet": [ + 2525 + ], + "IAccessControl": [ + 513 + ], + "IAccessControlEnumerable": [ + 538 + ], + "IBadge": [ + 2539 + ], + "IERC165": [ + 941 + ], + "IERC721": [ + 654 + ], + "ISbt": [ + 2547 + ], + "Math": [ + 1807 + ], + "NftBuner": [ + 2648 + ], + "SignedMath": [ + 1912 + ], + "Strings": [ + 905 + ] + }, + "id": 2649, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2527, + "literals": [ + "solidity", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:23:12" + }, + { + "absolutePath": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "id": 2528, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 441, + "src": "57:68:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 2529, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 655, + "src": "126:58:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2530, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "206:7:12" + }, + "id": 2531, + "nodeType": "InheritanceSpecifier", + "src": "206:7:12" + } + ], + "canonicalName": "IBadge", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2539, + "linearizedBaseContracts": [ + 2539, + 654, + 941 + ], + "name": "IBadge", + "nameLocation": "196:6:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9dc29fac", + "id": 2538, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "226:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2533, + "mutability": "mutable", + "name": "owner", + "nameLocation": "239:5:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "231:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2535, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "254:7:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "246:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "230:32:12" + }, + "returnParameters": { + "id": 2537, + "nodeType": "ParameterList", + "parameters": [], + "src": "271:0:12" + }, + "scope": 2539, + "src": "217:55:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "186:88:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2540, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "294:7:12" + }, + "id": 2541, + "nodeType": "InheritanceSpecifier", + "src": "294:7:12" + } + ], + "canonicalName": "ISbt", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2547, + "linearizedBaseContracts": [ + 2547, + 654, + 941 + ], + "name": "ISbt", + "nameLocation": "286:4:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "42966c68", + "id": 2546, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "314:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2543, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "327:7:12", + "nodeType": "VariableDeclaration", + "scope": 2546, + "src": "319:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "318:17:12" + }, + "returnParameters": { + "id": 2545, + "nodeType": "ParameterList", + "parameters": [], + "src": "344:0:12" + }, + "scope": 2547, + "src": "305:40:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "276:71:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2548, + "name": "AccessControlEnumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 440, + "src": "371:23:12" + }, + "id": 2549, + "nodeType": "InheritanceSpecifier", + "src": "371:23:12" + } + ], + "canonicalName": "NftBuner", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2648, + "linearizedBaseContracts": [ + 2648, + 440, + 315, + 929, + 941, + 538, + 513, + 676 + ], + "name": "NftBuner", + "nameLocation": "359:8:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 2560, + "name": "BatchBurn", + "nameLocation": "405:9:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2551, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "436:4:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "420:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "420:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2553, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "462:7:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "446:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2555, + "indexed": true, + "mutability": "mutable", + "name": "nft", + "nameLocation": "491:3:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "475:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "indexed": false, + "mutability": "mutable", + "name": "tokenIds", + "nameLocation": "510:8:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "500:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2557, + "nodeType": "ArrayTypeName", + "src": "500:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "414:108:12" + }, + "src": "399:124:12" + }, + { + "body": { + "id": 2603, + "nodeType": "Block", + "src": "599:186:12", + "statements": [ + { + "assignments": [ + 2569 + ], + "declarations": [ + { + "constant": false, + "id": 2569, + "mutability": "mutable", + "name": "user", + "nameLocation": "613:4:12", + "nodeType": "VariableDeclaration", + "scope": 2603, + "src": "605:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "605:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2572, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2570, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "620:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "605:27:12" + }, + { + "body": { + "id": 2594, + "nodeType": "Block", + "src": "683:52:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2588, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "711:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 2589, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "717:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2591, + "indexExpression": { + "id": 2590, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "725:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "717:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2585, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "698:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2584, + "name": "IBadge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "691:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBadge_$2539_$", + "typeString": "type(contract IBadge)" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:14:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBadge_$2539", + "typeString": "contract IBadge" + } + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2538, + "src": "691:19:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2593, + "nodeType": "ExpressionStatement", + "src": "691:37:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2577, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "658:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2578, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "662:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "662:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "658:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2595, + "initializationExpression": { + "assignments": [ + 2574 + ], + "declarations": [ + { + "constant": false, + "id": 2574, + "mutability": "mutable", + "name": "i", + "nameLocation": "651:1:12", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "643:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "643:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2576, + "initialValue": { + "hexValue": "30", + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "643:13:12" + }, + "loopExpression": { + "expression": { + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "678:3:12", + "subExpression": { + "id": 2581, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "678:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2583, + "nodeType": "ExpressionStatement", + "src": "678:3:12" + }, + "nodeType": "ForStatement", + "src": "638:97:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2597, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "755:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2599, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "764:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2600, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "772:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2596, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "745:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "745:35:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2602, + "nodeType": "EmitStatement", + "src": "740:40:12" + } + ] + }, + "functionSelector": "87a64551", + "id": 2604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "brunBadge", + "nameLocation": "536:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "_badge", + "nameLocation": "554:6:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "546:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2565, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "581:7:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "562:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "562:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2564, + "nodeType": "ArrayTypeName", + "src": "562:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "545:44:12" + }, + "returnParameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [], + "src": "599:0:12" + }, + "scope": 2648, + "src": "527:258:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2646, + "nodeType": "Block", + "src": "856:174:12", + "statements": [ + { + "body": { + "id": 2632, + "nodeType": "Block", + "src": "907:42:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2627, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "931:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2629, + "indexExpression": { + "id": 2628, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "939:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "931:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2624, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "920:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2623, + "name": "ISbt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "915:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISbt_$2547_$", + "typeString": "type(contract ISbt)" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISbt_$2547", + "typeString": "contract ISbt" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2546, + "src": "915:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:27:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2631, + "nodeType": "ExpressionStatement", + "src": "915:27:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "882:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2617, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "886:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "886:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "882:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2633, + "initializationExpression": { + "assignments": [ + 2613 + ], + "declarations": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "i", + "nameLocation": "875:1:12", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "867:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "867:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2615, + "initialValue": { + "hexValue": "30", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "879:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "867:13:12" + }, + "loopExpression": { + "expression": { + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "902:3:12", + "subExpression": { + "id": 2620, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "902:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2622, + "nodeType": "ExpressionStatement", + "src": "902:3:12" + }, + "nodeType": "ForStatement", + "src": "862:87:12" + }, + { + "assignments": [ + 2635 + ], + "declarations": [ + { + "constant": false, + "id": 2635, + "mutability": "mutable", + "name": "user", + "nameLocation": "962:4:12", + "nodeType": "VariableDeclaration", + "scope": 2646, + "src": "954:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "954:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2638, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2636, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "969:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "969:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "954:27:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2640, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "1002:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1008:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2642, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "1011:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2643, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "1017:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2639, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "992:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:33:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2645, + "nodeType": "EmitStatement", + "src": "987:38:12" + } + ] + }, + "functionSelector": "e7a70ee7", + "id": 2647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnSbt", + "nameLocation": "798:7:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2606, + "mutability": "mutable", + "name": "_nft", + "nameLocation": "814:4:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "806:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2609, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "839:7:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "820:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "820:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2608, + "nodeType": "ArrayTypeName", + "src": "820:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "805:42:12" + }, + "returnParameters": { + "id": 2611, + "nodeType": "ParameterList", + "parameters": [], + "src": "856:0:12" + }, + "scope": 2648, + "src": "789:241:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "350:682:12", + "usedErrors": [] + } + ], + "src": "32:1001:12" + }, + "compiler": { + "name": "solc", + "version": "0.8.10+commit.fc410830.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-01-10T05:56:41.081Z", + "devdoc": { + "kind": "dev", + "methods": { + "approve(address,uint256)": { + "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the number of tokens in ``owner``'s account." + }, + "getApproved(uint256)": { + "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist." + }, + "isApprovedForAll(address,address)": { + "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}" + }, + "ownerOf(uint256)": { + "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist." + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event." + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event." + }, + "setApprovalForAll(address,bool)": { + "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event." + }, + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 5251ed7..110bc0d 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -3259,7 +3259,7 @@ } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T06:13:06.086Z", + "updatedAt": "2024-01-10T06:03:43.872Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/NFT.json b/build/contracts/NFT.json index 4c92e9d..4d81ccb 100644 --- a/build/contracts/NFT.json +++ b/build/contracts/NFT.json @@ -33954,8 +33954,8 @@ } }, "links": {}, - "address": "0x22Ac497e7FbdaDDB6945354F8080998f4Abbdc4b", - "transactionHash": "0xdb9d7f9179a623c585fa0db6692df385b2731f0c8d47d701dd2754e2ead6da8d" + "address": "0xFAA03824c38Ed5102F9F901987FA7cd9d193449B", + "transactionHash": "0x016bbf6f248a4fe8bcb7e8839bf0715e2f5a0316bf0a05754e4b6b768972bd9c" }, "1665974821170": { "events": {}, @@ -33965,7 +33965,7 @@ } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T06:13:06.079Z", + "updatedAt": "2024-01-10T04:48:11.625Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/NFTSbt.json b/build/contracts/NFTSbt.json index ab7e993..ec16cb0 100644 --- a/build/contracts/NFTSbt.json +++ b/build/contracts/NFTSbt.json @@ -183,7 +183,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -196,7 +197,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -209,7 +211,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -246,7 +249,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -265,7 +269,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -284,7 +289,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -326,7 +332,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -350,7 +357,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -363,7 +371,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -376,7 +385,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -395,7 +405,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -513,7 +524,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -526,7 +538,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -545,7 +558,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -569,7 +583,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -582,7 +597,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -624,7 +640,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -656,7 +673,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -32837,9 +32855,168 @@ "name": "solc", "version": "0.8.10+commit.fc410830.Emscripten.clang" }, - "networks": {}, - "schemaVersion": "3.4.4", - "updatedAt": "2023-12-01T09:03:16.832Z", + "networks": { + "421614": { + "events": { + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { + "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" + }, + "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": { + "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" + }, + "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { + "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" + } + }, + "links": {}, + "address": "0x7b6399DFbed8Bc46F6A498C6B1040E80c2B5C4bc", + "transactionHash": "0xe627bc394fc631866323113b35d587151e7defff1d80521525124a7969340d21" + } + }, + "schemaVersion": "3.4.16", + "updatedAt": "2024-01-10T06:03:43.865Z", + "networkType": "ethereum", "devdoc": { "kind": "dev", "methods": { diff --git a/build/contracts/NftBuner.json b/build/contracts/NftBuner.json new file mode 100644 index 0000000..c6f1c6e --- /dev/null +++ b/build/contracts/NftBuner.json @@ -0,0 +1,9755 @@ +{ + "contractName": "NftBuner", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "BatchBurn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_badge", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_nftIds", + "type": "uint256[]" + } + ], + "name": "brunBadge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_nft", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_nftIds", + "type": "uint256[]" + } + ], + "name": "burnSbt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"BatchBurn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_badge\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"brunBadge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nft\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"burnSbt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftBuner.sol\":\"NftBuner\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc117ce50ea746cab6b97ed1a1facee17a715ae0cb95d67b943dacbaf15176fb\",\"dweb:/ipfs/QmYRZ2UGNYwsHwfNu7Wjr8L2j1LBZ1mKv6NvbwgterYMXc\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/logic/NftBuner.sol\":{\"keccak256\":\"0x63c14bb9ed3d2716b95bdc701490d98f74f37cff86ea4c6a0e849bcb975b31c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df20276048be4baa8700e123986a7add25180cd2f2430c3b857bd4adbaefd796\",\"dweb:/ipfs/QmdjVXXh7NKKqv3oFpu773J4FuUi3SDsY2oSMThrbRWEbb\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50611894806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80639010d07c116100715780639010d07c1461016257806391d1485414610192578063a217fddf146101c2578063ca15c873146101e0578063d547741f14610210578063e7a70ee71461022c576100a9565b806301ffc9a7146100ae578063248a9ca3146100de5780632f2ff15d1461010e57806336568abe1461012a57806387a6455114610146575b600080fd5b6100c860048036038101906100c39190610f99565b610248565b6040516100d59190610fe1565b60405180910390f35b6100f860048036038101906100f39190611032565b6102c2565b604051610105919061106e565b60405180910390f35b610128600480360381019061012391906110e7565b6102e1565b005b610144600480360381019061013f91906110e7565b610302565b005b610160600480360381019061015b919061118c565b610385565b005b61017c60048036038101906101779190611222565b6104a8565b6040516101899190611271565b60405180910390f35b6101ac60048036038101906101a791906110e7565b6104d7565b6040516101b99190610fe1565b60405180910390f35b6101ca610541565b6040516101d7919061106e565b60405180910390f35b6101fa60048036038101906101f59190611032565b610548565b604051610207919061129b565b60405180910390f35b61022a600480360381019061022591906110e7565b61056c565b005b6102466004803603810190610241919061118c565b61058d565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102bb57506102ba826106ae565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6102ea826102c2565b6102f381610728565b6102fd838361073c565b505050565b61030a610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90611339565b60405180910390fd5b6103818282610778565b5050565b600061038f610770565b905060005b83839050811015610438578473ffffffffffffffffffffffffffffffffffffffff16639dc29fac838686858181106103cf576103ce611359565b5b905060200201356040518363ffffffff1660e01b81526004016103f3929190611388565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b505050508080610430906113e0565b915050610394565b508373ffffffffffffffffffffffffffffffffffffffff1660008273ffffffffffffffffffffffffffffffffffffffff167fad1149d86c5404865bfdd8b5c19c380425f40d3fb206477721a1901041739f9c868660405161049a9291906114aa565b60405180910390a450505050565b60006104cf82600160008681526020019081526020016000206107ac90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6000610565600160008481526020019081526020016000206107c6565b9050919050565b610575826102c2565b61057e81610728565b6105888383610778565b505050565b60005b82829050811015610632578373ffffffffffffffffffffffffffffffffffffffff166342966c688484848181106105ca576105c9611359565b5b905060200201356040518263ffffffff1660e01b81526004016105ed919061129b565b600060405180830381600087803b15801561060757600080fd5b505af115801561061b573d6000803e3d6000fd5b50505050808061062a906113e0565b915050610590565b50600061063d610770565b90508373ffffffffffffffffffffffffffffffffffffffff1660008273ffffffffffffffffffffffffffffffffffffffff167fad1149d86c5404865bfdd8b5c19c380425f40d3fb206477721a1901041739f9c86866040516106a09291906114aa565b60405180910390a450505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107215750610720826107db565b5b9050919050565b61073981610734610770565b610845565b50565b61074682826108ca565b61076b81600160008581526020019081526020016000206109aa90919063ffffffff16565b505050565b600033905090565b61078282826109da565b6107a78160016000858152602001908152602001600020610abb90919063ffffffff16565b505050565b60006107bb8360000183610aeb565b60001c905092915050565b60006107d482600001610b16565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61084f82826104d7565b6108c65761085c81610b27565b61086a8360001c6020610b54565b60405160200161087b9291906115e0565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd9190611664565b60405180910390fd5b5050565b6108d482826104d7565b6109a657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061094b610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006109d2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610d90565b905092915050565b6109e482826104d7565b15610ab757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a5c610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000610ae3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610e00565b905092915050565b6000826000018281548110610b0357610b02611359565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6060610b4d8273ffffffffffffffffffffffffffffffffffffffff16601460ff16610b54565b9050919050565b606060006002836002610b679190611686565b610b7191906116e0565b67ffffffffffffffff811115610b8a57610b89611736565b5b6040519080825280601f01601f191660200182016040528015610bbc5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610bf457610bf3611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610c5857610c57611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610c989190611686565b610ca291906116e0565b90505b6001811115610d42577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610ce457610ce3611359565b5b1a60f81b828281518110610cfb57610cfa611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610d3b90611765565b9050610ca5565b5060008414610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d906117db565b60405180910390fd5b8091505092915050565b6000610d9c8383610f14565b610df5578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610dfa565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114610f08576000600182610e3291906117fb565b9050600060018660000180549050610e4a91906117fb565b9050818114610eb9576000866000018281548110610e6b57610e6a611359565b5b9060005260206000200154905080876000018481548110610e8f57610e8e611359565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480610ecd57610ecc61182f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f0e565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610f7681610f41565b8114610f8157600080fd5b50565b600081359050610f9381610f6d565b92915050565b600060208284031215610faf57610fae610f37565b5b6000610fbd84828501610f84565b91505092915050565b60008115159050919050565b610fdb81610fc6565b82525050565b6000602082019050610ff66000830184610fd2565b92915050565b6000819050919050565b61100f81610ffc565b811461101a57600080fd5b50565b60008135905061102c81611006565b92915050565b60006020828403121561104857611047610f37565b5b60006110568482850161101d565b91505092915050565b61106881610ffc565b82525050565b6000602082019050611083600083018461105f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110b482611089565b9050919050565b6110c4816110a9565b81146110cf57600080fd5b50565b6000813590506110e1816110bb565b92915050565b600080604083850312156110fe576110fd610f37565b5b600061110c8582860161101d565b925050602061111d858286016110d2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261114c5761114b611127565b5b8235905067ffffffffffffffff8111156111695761116861112c565b5b60208301915083602082028301111561118557611184611131565b5b9250929050565b6000806000604084860312156111a5576111a4610f37565b5b60006111b3868287016110d2565b935050602084013567ffffffffffffffff8111156111d4576111d3610f3c565b5b6111e086828701611136565b92509250509250925092565b6000819050919050565b6111ff816111ec565b811461120a57600080fd5b50565b60008135905061121c816111f6565b92915050565b6000806040838503121561123957611238610f37565b5b60006112478582860161101d565b92505060206112588582860161120d565b9150509250929050565b61126b816110a9565b82525050565b60006020820190506112866000830184611262565b92915050565b611295816111ec565b82525050565b60006020820190506112b0600083018461128c565b92915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611323602f836112b6565b915061132e826112c7565b604082019050919050565b6000602082019050818103600083015261135281611316565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061139d6000830185611262565b6113aa602083018461128c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113eb826111ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561141e5761141d6113b1565b5b600182019050919050565b600082825260208201905092915050565b600080fd5b82818337600083830152505050565b600061145a8385611429565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561148d5761148c61143a565b5b60208302925061149e83858461143f565b82840190509392505050565b600060208201905081810360008301526114c581848661144e565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061150f6017836114ce565b915061151a826114d9565b601782019050919050565b600081519050919050565b60005b8381101561154e578082015181840152602081019050611533565b8381111561155d576000848401525b50505050565b600061156e82611525565b61157881856114ce565b9350611588818560208601611530565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006115ca6011836114ce565b91506115d582611594565b601182019050919050565b60006115eb82611502565b91506115f78285611563565b9150611602826115bd565b915061160e8284611563565b91508190509392505050565b6000601f19601f8301169050919050565b600061163682611525565b61164081856112b6565b9350611650818560208601611530565b6116598161161a565b840191505092915050565b6000602082019050818103600083015261167e818461162b565b905092915050565b6000611691826111ec565b915061169c836111ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156116d5576116d46113b1565b5b828202905092915050565b60006116eb826111ec565b91506116f6836111ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561172b5761172a6113b1565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000611770826111ec565b91506000821415611784576117836113b1565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006117c56020836112b6565b91506117d08261178f565b602082019050919050565b600060208201905081810360008301526117f4816117b8565b9050919050565b6000611806826111ec565b9150611811836111ec565b925082821015611824576118236113b1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220631d444a5d4b4c4b5c0a514d8bfb6d03368744cb223eca032276bc2ec8be191664736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80639010d07c116100715780639010d07c1461016257806391d1485414610192578063a217fddf146101c2578063ca15c873146101e0578063d547741f14610210578063e7a70ee71461022c576100a9565b806301ffc9a7146100ae578063248a9ca3146100de5780632f2ff15d1461010e57806336568abe1461012a57806387a6455114610146575b600080fd5b6100c860048036038101906100c39190610f99565b610248565b6040516100d59190610fe1565b60405180910390f35b6100f860048036038101906100f39190611032565b6102c2565b604051610105919061106e565b60405180910390f35b610128600480360381019061012391906110e7565b6102e1565b005b610144600480360381019061013f91906110e7565b610302565b005b610160600480360381019061015b919061118c565b610385565b005b61017c60048036038101906101779190611222565b6104a8565b6040516101899190611271565b60405180910390f35b6101ac60048036038101906101a791906110e7565b6104d7565b6040516101b99190610fe1565b60405180910390f35b6101ca610541565b6040516101d7919061106e565b60405180910390f35b6101fa60048036038101906101f59190611032565b610548565b604051610207919061129b565b60405180910390f35b61022a600480360381019061022591906110e7565b61056c565b005b6102466004803603810190610241919061118c565b61058d565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102bb57506102ba826106ae565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6102ea826102c2565b6102f381610728565b6102fd838361073c565b505050565b61030a610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90611339565b60405180910390fd5b6103818282610778565b5050565b600061038f610770565b905060005b83839050811015610438578473ffffffffffffffffffffffffffffffffffffffff16639dc29fac838686858181106103cf576103ce611359565b5b905060200201356040518363ffffffff1660e01b81526004016103f3929190611388565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b505050508080610430906113e0565b915050610394565b508373ffffffffffffffffffffffffffffffffffffffff1660008273ffffffffffffffffffffffffffffffffffffffff167fad1149d86c5404865bfdd8b5c19c380425f40d3fb206477721a1901041739f9c868660405161049a9291906114aa565b60405180910390a450505050565b60006104cf82600160008681526020019081526020016000206107ac90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6000610565600160008481526020019081526020016000206107c6565b9050919050565b610575826102c2565b61057e81610728565b6105888383610778565b505050565b60005b82829050811015610632578373ffffffffffffffffffffffffffffffffffffffff166342966c688484848181106105ca576105c9611359565b5b905060200201356040518263ffffffff1660e01b81526004016105ed919061129b565b600060405180830381600087803b15801561060757600080fd5b505af115801561061b573d6000803e3d6000fd5b50505050808061062a906113e0565b915050610590565b50600061063d610770565b90508373ffffffffffffffffffffffffffffffffffffffff1660008273ffffffffffffffffffffffffffffffffffffffff167fad1149d86c5404865bfdd8b5c19c380425f40d3fb206477721a1901041739f9c86866040516106a09291906114aa565b60405180910390a450505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107215750610720826107db565b5b9050919050565b61073981610734610770565b610845565b50565b61074682826108ca565b61076b81600160008581526020019081526020016000206109aa90919063ffffffff16565b505050565b600033905090565b61078282826109da565b6107a78160016000858152602001908152602001600020610abb90919063ffffffff16565b505050565b60006107bb8360000183610aeb565b60001c905092915050565b60006107d482600001610b16565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61084f82826104d7565b6108c65761085c81610b27565b61086a8360001c6020610b54565b60405160200161087b9291906115e0565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd9190611664565b60405180910390fd5b5050565b6108d482826104d7565b6109a657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061094b610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006109d2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610d90565b905092915050565b6109e482826104d7565b15610ab757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a5c610770565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000610ae3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610e00565b905092915050565b6000826000018281548110610b0357610b02611359565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6060610b4d8273ffffffffffffffffffffffffffffffffffffffff16601460ff16610b54565b9050919050565b606060006002836002610b679190611686565b610b7191906116e0565b67ffffffffffffffff811115610b8a57610b89611736565b5b6040519080825280601f01601f191660200182016040528015610bbc5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610bf457610bf3611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610c5857610c57611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610c989190611686565b610ca291906116e0565b90505b6001811115610d42577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610ce457610ce3611359565b5b1a60f81b828281518110610cfb57610cfa611359565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610d3b90611765565b9050610ca5565b5060008414610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d906117db565b60405180910390fd5b8091505092915050565b6000610d9c8383610f14565b610df5578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610dfa565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114610f08576000600182610e3291906117fb565b9050600060018660000180549050610e4a91906117fb565b9050818114610eb9576000866000018281548110610e6b57610e6a611359565b5b9060005260206000200154905080876000018481548110610e8f57610e8e611359565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480610ecd57610ecc61182f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f0e565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610f7681610f41565b8114610f8157600080fd5b50565b600081359050610f9381610f6d565b92915050565b600060208284031215610faf57610fae610f37565b5b6000610fbd84828501610f84565b91505092915050565b60008115159050919050565b610fdb81610fc6565b82525050565b6000602082019050610ff66000830184610fd2565b92915050565b6000819050919050565b61100f81610ffc565b811461101a57600080fd5b50565b60008135905061102c81611006565b92915050565b60006020828403121561104857611047610f37565b5b60006110568482850161101d565b91505092915050565b61106881610ffc565b82525050565b6000602082019050611083600083018461105f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110b482611089565b9050919050565b6110c4816110a9565b81146110cf57600080fd5b50565b6000813590506110e1816110bb565b92915050565b600080604083850312156110fe576110fd610f37565b5b600061110c8582860161101d565b925050602061111d858286016110d2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261114c5761114b611127565b5b8235905067ffffffffffffffff8111156111695761116861112c565b5b60208301915083602082028301111561118557611184611131565b5b9250929050565b6000806000604084860312156111a5576111a4610f37565b5b60006111b3868287016110d2565b935050602084013567ffffffffffffffff8111156111d4576111d3610f3c565b5b6111e086828701611136565b92509250509250925092565b6000819050919050565b6111ff816111ec565b811461120a57600080fd5b50565b60008135905061121c816111f6565b92915050565b6000806040838503121561123957611238610f37565b5b60006112478582860161101d565b92505060206112588582860161120d565b9150509250929050565b61126b816110a9565b82525050565b60006020820190506112866000830184611262565b92915050565b611295816111ec565b82525050565b60006020820190506112b0600083018461128c565b92915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611323602f836112b6565b915061132e826112c7565b604082019050919050565b6000602082019050818103600083015261135281611316565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061139d6000830185611262565b6113aa602083018461128c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113eb826111ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561141e5761141d6113b1565b5b600182019050919050565b600082825260208201905092915050565b600080fd5b82818337600083830152505050565b600061145a8385611429565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561148d5761148c61143a565b5b60208302925061149e83858461143f565b82840190509392505050565b600060208201905081810360008301526114c581848661144e565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061150f6017836114ce565b915061151a826114d9565b601782019050919050565b600081519050919050565b60005b8381101561154e578082015181840152602081019050611533565b8381111561155d576000848401525b50505050565b600061156e82611525565b61157881856114ce565b9350611588818560208601611530565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006115ca6011836114ce565b91506115d582611594565b601182019050919050565b60006115eb82611502565b91506115f78285611563565b9150611602826115bd565b915061160e8284611563565b91508190509392505050565b6000601f19601f8301169050919050565b600061163682611525565b61164081856112b6565b9350611650818560208601611530565b6116598161161a565b840191505092915050565b6000602082019050818103600083015261167e818461162b565b905092915050565b6000611691826111ec565b915061169c836111ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156116d5576116d46113b1565b5b828202905092915050565b60006116eb826111ec565b91506116f6836111ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561172b5761172a6113b1565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000611770826111ec565b91506000821415611784576117836113b1565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006117c56020836112b6565b91506117d08261178f565b602082019050919050565b600060208201905081810360008301526117f4816117b8565b9050919050565b6000611806826111ec565b9150611811836111ec565b925082821015611824576118236113b1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220631d444a5d4b4c4b5c0a514d8bfb6d03368744cb223eca032276bc2ec8be191664736f6c634300080a0033", + "immutableReferences": {}, + "generatedSources": [], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:16650:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:13", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:13" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:13" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:13", + "type": "" + } + ], + "src": "7:75:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:13" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:13" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "378:105:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "388:89:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "403:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "410:66:13", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "399:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "399:78:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "388:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "360:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "370:7:13", + "type": "" + } + ], + "src": "334:149:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:78:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "587:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "596:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "599:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "589:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "589:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "589:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "554:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "578:5:13" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "561:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "561:23:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "551:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "551:34:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "544:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "544:42:13" + }, + "nodeType": "YulIf", + "src": "541:62:13" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "524:5:13", + "type": "" + } + ], + "src": "489:120:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "666:86:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "676:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "698:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "685:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "685:20:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "740:5:13" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "714:25:13" + }, + "nodeType": "YulFunctionCall", + "src": "714:32:13" + }, + "nodeType": "YulExpressionStatement", + "src": "714:32:13" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "644:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "652:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "660:5:13", + "type": "" + } + ], + "src": "615:137:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "823:262:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "871:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "871:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "871:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "844:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "853:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "840:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "865:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "836:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "836:32:13" + }, + "nodeType": "YulIf", + "src": "833:119:13" + }, + { + "nodeType": "YulBlock", + "src": "962:116:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "977:15:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "991:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "981:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1006:62:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1040:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1051:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1036:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1036:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1060:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "1016:19:13" + }, + "nodeType": "YulFunctionCall", + "src": "1016:52:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:13" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "793:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "804:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "816:6:13", + "type": "" + } + ], + "src": "758:327:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1133:48:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1143:32:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1168:5:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1161:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1161:13:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1154:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1154:21:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1143:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1115:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1125:7:13", + "type": "" + } + ], + "src": "1091:90:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1246:50:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1263:3:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1283:5:13" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1268:14:13" + }, + "nodeType": "YulFunctionCall", + "src": "1268:21:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1256:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1256:34:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:34:13" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1241:3:13", + "type": "" + } + ], + "src": "1187:109:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1394:118:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1404:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1416:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1427:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1412:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1412:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1404:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1478:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1502:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1487:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1487:17:13" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "1440:37:13" + }, + "nodeType": "YulFunctionCall", + "src": "1440:65:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1440:65:13" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1366:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1378:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1389:4:13", + "type": "" + } + ], + "src": "1302:210:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1563:32:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1573:16:13", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1584:5:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1573:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1545:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1555:7:13", + "type": "" + } + ], + "src": "1518:77:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1644:79:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1701:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1710:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1713:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1703:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1703:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1703:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1667:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1692:5:13" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1674:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "1674:24:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1664:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "1664:35:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1657:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "1657:43:13" + }, + "nodeType": "YulIf", + "src": "1654:63:13" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1637:5:13", + "type": "" + } + ], + "src": "1601:122:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1781:87:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1791:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1813:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1800:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "1800:20:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1791:5:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1856:5:13" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1829:26:13" + }, + "nodeType": "YulFunctionCall", + "src": "1829:33:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1829:33:13" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1759:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1767:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1775:5:13", + "type": "" + } + ], + "src": "1729:139:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1940:263:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1986:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1988:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "1988:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "1988:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1961:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1970:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1957:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1957:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1982:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1953:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "1953:32:13" + }, + "nodeType": "YulIf", + "src": "1950:119:13" + }, + { + "nodeType": "YulBlock", + "src": "2079:117:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2094:15:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2108:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2098:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2123:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2158:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2169:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2154:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2154:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2178:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2133:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "2133:53:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2123:6:13" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1910:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1921:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1933:6:13", + "type": "" + } + ], + "src": "1874:329:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2274:53:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2291:3:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2314:5:13" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2296:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "2296:24:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2284:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2284:37:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2284:37:13" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2262:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2269:3:13", + "type": "" + } + ], + "src": "2209:118:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2431:124:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2441:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2453:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2464:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2449:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2449:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2441:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2521:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2534:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2545:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2530:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2530:17:13" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "2477:43:13" + }, + "nodeType": "YulFunctionCall", + "src": "2477:71:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2477:71:13" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2403:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2415:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2426:4:13", + "type": "" + } + ], + "src": "2333:222:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2606:81:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2616:65:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2631:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2638:42:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2627:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "2627:54:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2616:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2588:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2598:7:13", + "type": "" + } + ], + "src": "2561:126:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2738:51:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2748:35:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2777:5:13" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "2759:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "2759:24:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2748:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2720:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2730:7:13", + "type": "" + } + ], + "src": "2693:96:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2838:79:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2895:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2904:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2907:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2897:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2897:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "2897:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2861:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2886:5:13" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "2868:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "2868:24:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2858:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "2858:35:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2851:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "2851:43:13" + }, + "nodeType": "YulIf", + "src": "2848:63:13" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2831:5:13", + "type": "" + } + ], + "src": "2795:122:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2975:87:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2985:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3007:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2994:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "2994:20:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2985:5:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3050:5:13" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "3023:26:13" + }, + "nodeType": "YulFunctionCall", + "src": "3023:33:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3023:33:13" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2953:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2961:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2969:5:13", + "type": "" + } + ], + "src": "2923:139:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3151:391:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3197:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3199:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "3199:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3199:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3172:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3181:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3168:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3168:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3193:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3164:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3164:32:13" + }, + "nodeType": "YulIf", + "src": "3161:119:13" + }, + { + "nodeType": "YulBlock", + "src": "3290:117:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3305:15:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3319:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3309:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3334:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3369:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3380:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3365:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3365:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3389:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3344:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "3344:53:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3334:6:13" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3417:118:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3432:16:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3446:2:13", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3436:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3462:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3497:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3508:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3493:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "3493:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3517:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "3472:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "3472:53:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3462:6:13" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3113:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3124:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3136:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3144:6:13", + "type": "" + } + ], + "src": "3068:474:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3637:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3654:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3657:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3647:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3647:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3647:12:13" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "3548:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3760:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3777:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3780:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3770:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3770:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3770:12:13" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "3671:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3883:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3900:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3903:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3893:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "3893:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "3893:12:13" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "3794:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4024:478:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4073:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4075:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "4075:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4075:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4052:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4060:4:13", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4048:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4048:17:13" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4067:3:13" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4044:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4044:27:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4037:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "4037:35:13" + }, + "nodeType": "YulIf", + "src": "4034:122:13" + }, + { + "nodeType": "YulAssignment", + "src": "4165:30:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4188:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4175:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "4175:20:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4165:6:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4238:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "4240:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "4240:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4240:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4210:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4218:18:13", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4207:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4207:30:13" + }, + "nodeType": "YulIf", + "src": "4204:117:13" + }, + { + "nodeType": "YulAssignment", + "src": "4330:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4346:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4354:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4342:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4342:17:13" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "4330:8:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4413:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4415:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "4415:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4415:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "4378:8:13" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4392:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4400:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4388:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4388:17:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4374:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4374:32:13" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4408:3:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4371:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4371:41:13" + }, + "nodeType": "YulIf", + "src": "4368:128:13" + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3991:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3999:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "4007:8:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4017:6:13", + "type": "" + } + ], + "src": "3934:568:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4626:586:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4672:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4674:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "4674:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "4674:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4647:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4656:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4643:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4643:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4668:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4639:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4639:32:13" + }, + "nodeType": "YulIf", + "src": "4636:119:13" + }, + { + "nodeType": "YulBlock", + "src": "4765:117:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4780:15:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4794:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4784:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4809:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4844:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4855:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4840:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4840:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4864:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4819:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "4819:53:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4809:6:13" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4892:313:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4907:46:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4938:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4949:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4934:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "4934:18:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4921:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "4921:32:13" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4911:6:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5000:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "5002:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "5002:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5002:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4972:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4980:18:13", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4969:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "4969:30:13" + }, + "nodeType": "YulIf", + "src": "4966:117:13" + }, + { + "nodeType": "YulAssignment", + "src": "5097:98:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5167:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5178:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5163:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5163:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5187:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "5115:47:13" + }, + "nodeType": "YulFunctionCall", + "src": "5115:80:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5097:6:13" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5105:6:13" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4580:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4591:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4603:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4611:6:13", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4619:6:13", + "type": "" + } + ], + "src": "4508:704:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5263:32:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5273:16:13", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5284:5:13" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5273:7:13" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5245:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5255:7:13", + "type": "" + } + ], + "src": "5218:77:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5344:79:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5401:16:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5410:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5413:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5403:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5403:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5403:12:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5367:5:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5392:5:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "5374:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "5374:24:13" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5364:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "5364:35:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5357:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "5357:43:13" + }, + "nodeType": "YulIf", + "src": "5354:63:13" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5337:5:13", + "type": "" + } + ], + "src": "5301:122:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5481:87:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5491:29:13", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5513:6:13" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5500:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "5500:20:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5491:5:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5556:5:13" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "5529:26:13" + }, + "nodeType": "YulFunctionCall", + "src": "5529:33:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5529:33:13" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5459:6:13", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5467:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5475:5:13", + "type": "" + } + ], + "src": "5429:139:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5657:391:13", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5703:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5705:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "5705:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "5705:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5678:7:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5687:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5674:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5674:23:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5699:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5670:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5670:32:13" + }, + "nodeType": "YulIf", + "src": "5667:119:13" + }, + { + "nodeType": "YulBlock", + "src": "5796:117:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5811:15:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5825:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5815:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5840:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5875:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5886:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5871:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5871:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5895:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "5850:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "5850:53:13" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5840:6:13" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5923:118:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5938:16:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5952:2:13", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5942:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5968:63:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6003:9:13" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6014:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5999:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "5999:22:13" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6023:7:13" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "5978:20:13" + }, + "nodeType": "YulFunctionCall", + "src": "5978:53:13" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5968:6:13" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5619:9:13", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5630:7:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5642:6:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5650:6:13", + "type": "" + } + ], + "src": "5574:474:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6119:53:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6136:3:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6159:5:13" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "6141:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "6141:24:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6129:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6129:37:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6129:37:13" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6107:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6114:3:13", + "type": "" + } + ], + "src": "6054:118:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6276:124:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6286:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6298:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6309:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6294:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6294:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6286:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6366:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6379:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6390:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6375:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6375:17:13" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6322:43:13" + }, + "nodeType": "YulFunctionCall", + "src": "6322:71:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6322:71:13" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6248:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6260:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6271:4:13", + "type": "" + } + ], + "src": "6178:222:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6471:53:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6488:3:13" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6511:5:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "6493:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "6493:24:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6481:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6481:37:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6481:37:13" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6459:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6466:3:13", + "type": "" + } + ], + "src": "6406:118:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6628:124:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6638:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6650:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6661:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6646:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6646:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6638:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6718:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6731:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6742:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6727:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6727:17:13" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "6674:43:13" + }, + "nodeType": "YulFunctionCall", + "src": "6674:71:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6674:71:13" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6600:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6612:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6623:4:13", + "type": "" + } + ], + "src": "6530:222:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6854:73:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6871:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6876:6:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6864:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "6864:19:13" + }, + "nodeType": "YulExpressionStatement", + "src": "6864:19:13" + }, + { + "nodeType": "YulAssignment", + "src": "6892:29:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6911:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6916:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6907:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "6907:14:13" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "6892:11:13" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6826:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6831:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "6842:11:13", + "type": "" + } + ], + "src": "6758:169:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7039:128:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7061:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7069:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7057:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7057:14:13" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7073:34:13", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7050:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7050:58:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7050:58:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7129:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7137:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7125:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7125:15:13" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7142:17:13", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7118:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7118:42:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7118:42:13" + } + ] + }, + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "7031:6:13", + "type": "" + } + ], + "src": "6933:234:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7319:220:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7329:74:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7395:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7400:2:13", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7336:58:13" + }, + "nodeType": "YulFunctionCall", + "src": "7336:67:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7329:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7501:3:13" + } + ], + "functionName": { + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulIdentifier", + "src": "7412:88:13" + }, + "nodeType": "YulFunctionCall", + "src": "7412:93:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7412:93:13" + }, + { + "nodeType": "YulAssignment", + "src": "7514:19:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7525:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7530:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7521:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7521:12:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7514:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7307:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7315:3:13", + "type": "" + } + ], + "src": "7173:366:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7716:248:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7726:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7738:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7749:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7734:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7734:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7726:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7773:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7784:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7769:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7769:17:13" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7792:4:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7798:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7788:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "7788:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7762:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "7762:47:13" + }, + "nodeType": "YulExpressionStatement", + "src": "7762:47:13" + }, + { + "nodeType": "YulAssignment", + "src": "7818:139:13", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7952:4:13" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7826:124:13" + }, + "nodeType": "YulFunctionCall", + "src": "7826:131:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7818:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7696:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7711:4:13", + "type": "" + } + ], + "src": "7545:419:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7998:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8015:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8018:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8008:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8008:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8008:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8112:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8115:4:13", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8105:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8105:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8105:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8136:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8139:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8129:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8129:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8129:15:13" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "7970:180:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8282:206:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8292:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8304:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8315:2:13", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8300:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8300:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8292:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8372:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8385:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8396:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8381:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8381:17:13" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "8328:43:13" + }, + "nodeType": "YulFunctionCall", + "src": "8328:71:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8328:71:13" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8453:6:13" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8466:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8477:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8462:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8462:18:13" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "8409:43:13" + }, + "nodeType": "YulFunctionCall", + "src": "8409:72:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8409:72:13" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8246:9:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8258:6:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8266:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8277:4:13", + "type": "" + } + ], + "src": "8156:332:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8522:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8539:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8542:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8532:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8532:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8532:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8636:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8639:4:13", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8629:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8629:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8629:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8660:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8663:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8653:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "8653:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8653:15:13" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "8494:180:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8723:190:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8733:33:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8760:5:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8742:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "8742:24:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8733:5:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8856:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8858:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "8858:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "8858:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8781:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8788:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8778:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "8778:77:13" + }, + "nodeType": "YulIf", + "src": "8775:103:13" + }, + { + "nodeType": "YulAssignment", + "src": "8887:20:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8898:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8905:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8894:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "8894:13:13" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "8887:3:13" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8709:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "8719:3:13", + "type": "" + } + ], + "src": "8680:233:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9030:73:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9047:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9052:6:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9040:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9040:19:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9040:19:13" + }, + { + "nodeType": "YulAssignment", + "src": "9068:29:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9087:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9092:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9083:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9083:14:13" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "9068:11:13" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9002:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9007:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "9018:11:13", + "type": "" + } + ], + "src": "8919:184:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9198:28:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9215:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9218:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9208:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9208:12:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9208:12:13" + } + ] + }, + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulFunctionDefinition", + "src": "9109:117:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9283:103:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9306:3:13" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "9311:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9316:6:13" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "9293:12:13" + }, + "nodeType": "YulFunctionCall", + "src": "9293:30:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9293:30:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "9364:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9369:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9360:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9360:16:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9378:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9353:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "9353:27:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9353:27:13" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "9265:3:13", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "9270:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9275:6:13", + "type": "" + } + ], + "src": "9232:154:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9554:405:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9564:93:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9645:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9650:6:13" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9571:73:13" + }, + "nodeType": "YulFunctionCall", + "src": "9571:86:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9564:3:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9749:83:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulIdentifier", + "src": "9751:77:13" + }, + "nodeType": "YulFunctionCall", + "src": "9751:79:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9751:79:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9673:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9681:66:13", + "type": "", + "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9670:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "9670:78:13" + }, + "nodeType": "YulIf", + "src": "9667:165:13" + }, + { + "nodeType": "YulAssignment", + "src": "9841:27:13", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9855:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9863:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "9851:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9851:17:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9841:6:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "9902:5:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9909:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9914:6:13" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "9878:23:13" + }, + "nodeType": "YulFunctionCall", + "src": "9878:43:13" + }, + "nodeType": "YulExpressionStatement", + "src": "9878:43:13" + }, + { + "nodeType": "YulAssignment", + "src": "9930:23:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9941:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9946:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9937:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "9937:16:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9930:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "9527:5:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9534:6:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9542:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9550:3:13", + "type": "" + } + ], + "src": "9422:537:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10123:235:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10133:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10145:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10156:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10141:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10141:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10133:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10180:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10191:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10176:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10176:17:13" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10199:4:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10205:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10195:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10195:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10169:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10169:47:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10169:47:13" + }, + { + "nodeType": "YulAssignment", + "src": "10225:126:13", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10329:6:13" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10337:6:13" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10346:4:13" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10233:95:13" + }, + "nodeType": "YulFunctionCall", + "src": "10233:118:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10225:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10087:9:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10099:6:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10107:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10118:4:13", + "type": "" + } + ], + "src": "9965:393:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10478:34:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10488:18:13", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10503:3:13" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "10488:11:13" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10450:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10455:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "10466:11:13", + "type": "" + } + ], + "src": "10364:148:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10624:67:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10646:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10654:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10642:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "10642:14:13" + }, + { + "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10658:25:13", + "type": "", + "value": "AccessControl: account " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10635:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "10635:49:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10635:49:13" + } + ] + }, + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "10616:6:13", + "type": "" + } + ], + "src": "10518:173:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10861:238:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10871:92:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10955:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10960:2:13", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "10878:76:13" + }, + "nodeType": "YulFunctionCall", + "src": "10878:85:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10871:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11061:3:13" + } + ], + "functionName": { + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulIdentifier", + "src": "10972:88:13" + }, + "nodeType": "YulFunctionCall", + "src": "10972:93:13" + }, + "nodeType": "YulExpressionStatement", + "src": "10972:93:13" + }, + { + "nodeType": "YulAssignment", + "src": "11074:19:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11085:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11090:2:13", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11081:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11081:12:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11074:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10849:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10857:3:13", + "type": "" + } + ], + "src": "10697:402:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11164:40:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11175:22:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11191:5:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11185:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "11185:12:13" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11175:6:13" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11147:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11157:6:13", + "type": "" + } + ], + "src": "11105:99:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11259:258:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11269:10:13", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11278:1:13", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "11273:1:13", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11338:63:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "11363:3:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11368:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11359:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11359:11:13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "11382:3:13" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11387:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11378:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11378:11:13" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11372:5:13" + }, + "nodeType": "YulFunctionCall", + "src": "11372:18:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11352:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11352:39:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11352:39:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11299:1:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11302:6:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "11296:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "11296:13:13" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "11310:19:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11312:15:13", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11321:1:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11324:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11317:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11317:10:13" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11312:1:13" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "11292:3:13", + "statements": [] + }, + "src": "11288:113:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11435:76:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "11485:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11490:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11481:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11481:16:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11499:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11474:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "11474:27:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11474:27:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "11416:1:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11419:6:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11413:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "11413:13:13" + }, + "nodeType": "YulIf", + "src": "11410:101:13" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "11241:3:13", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "11246:3:13", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11251:6:13", + "type": "" + } + ], + "src": "11210:307:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11633:267:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11643:53:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11690:5:13" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "11657:32:13" + }, + "nodeType": "YulFunctionCall", + "src": "11657:39:13" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11647:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11705:96:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11789:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11794:6:13" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11712:76:13" + }, + "nodeType": "YulFunctionCall", + "src": "11712:89:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11705:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11836:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11843:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11832:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11832:16:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11850:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11855:6:13" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "11810:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "11810:52:13" + }, + "nodeType": "YulExpressionStatement", + "src": "11810:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "11871:23:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11882:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11887:6:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11878:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "11878:16:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11871:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11614:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11621:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11629:3:13", + "type": "" + } + ], + "src": "11523:377:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12012:61:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "12034:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12042:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12030:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12030:14:13" + }, + { + "hexValue": "206973206d697373696e6720726f6c6520", + "kind": "string", + "nodeType": "YulLiteral", + "src": "12046:19:13", + "type": "", + "value": " is missing role " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12023:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "12023:43:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12023:43:13" + } + ] + }, + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "12004:6:13", + "type": "" + } + ], + "src": "11906:167:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12243:238:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12253:92:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12337:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12342:2:13", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "12260:76:13" + }, + "nodeType": "YulFunctionCall", + "src": "12260:85:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12253:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12443:3:13" + } + ], + "functionName": { + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulIdentifier", + "src": "12354:88:13" + }, + "nodeType": "YulFunctionCall", + "src": "12354:93:13" + }, + "nodeType": "YulExpressionStatement", + "src": "12354:93:13" + }, + { + "nodeType": "YulAssignment", + "src": "12456:19:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12467:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12472:2:13", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12463:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "12463:12:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12456:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12231:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12239:3:13", + "type": "" + } + ], + "src": "12079:402:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12873:581:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12884:155:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13035:3:13" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "12891:142:13" + }, + "nodeType": "YulFunctionCall", + "src": "12891:148:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12884:3:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13049:102:13", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13138:6:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13147:3:13" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "13056:81:13" + }, + "nodeType": "YulFunctionCall", + "src": "13056:95:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13049:3:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13161:155:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13312:3:13" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "13168:142:13" + }, + "nodeType": "YulFunctionCall", + "src": "13168:148:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13161:3:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13326:102:13", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "13415:6:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13424:3:13" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "13333:81:13" + }, + "nodeType": "YulFunctionCall", + "src": "13333:95:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13326:3:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13438:10:13", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13445:3:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13438:3:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12844:3:13", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12850:6:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12858:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12869:3:13", + "type": "" + } + ], + "src": "12487:967:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13508:54:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13518:38:13", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13536:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13543:2:13", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13532:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13532:14:13" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13552:2:13", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "13548:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13548:7:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13528:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13528:28:13" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "13518:6:13" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13491:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "13501:6:13", + "type": "" + } + ], + "src": "13460:102:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13660:272:13", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13670:53:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13717:5:13" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13684:32:13" + }, + "nodeType": "YulFunctionCall", + "src": "13684:39:13" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13674:6:13", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13732:78:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13798:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13803:6:13" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13739:58:13" + }, + "nodeType": "YulFunctionCall", + "src": "13739:71:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13732:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13845:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13852:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13841:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13841:16:13" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13859:3:13" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13864:6:13" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "13819:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "13819:52:13" + }, + "nodeType": "YulExpressionStatement", + "src": "13819:52:13" + }, + { + "nodeType": "YulAssignment", + "src": "13880:46:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13891:3:13" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13918:6:13" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "13896:21:13" + }, + "nodeType": "YulFunctionCall", + "src": "13896:29:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13887:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "13887:39:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13880:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13641:5:13", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13648:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13656:3:13", + "type": "" + } + ], + "src": "13568:364:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14056:195:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14066:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14078:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14089:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14074:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14074:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14066:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14113:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14124:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14109:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14109:17:13" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14132:4:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14138:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14128:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14128:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14102:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "14102:47:13" + }, + "nodeType": "YulExpressionStatement", + "src": "14102:47:13" + }, + { + "nodeType": "YulAssignment", + "src": "14158:86:13", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14230:6:13" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14239:4:13" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14166:63:13" + }, + "nodeType": "YulFunctionCall", + "src": "14166:78:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14158:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14028:9:13", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14040:6:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14051:4:13", + "type": "" + } + ], + "src": "13938:313:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14305:300:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14315:25:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14338:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "14320:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "14320:20:13" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14315:1:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14349:25:13", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14372:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "14354:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "14354:20:13" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14349:1:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14547:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "14549:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "14549:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "14549:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14459:1:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14452:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "14452:9:13" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14445:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "14445:17:13" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14467:1:13" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14474:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14542:1:13" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "14470:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14470:74:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14464:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "14464:81:13" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14441:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14441:105:13" + }, + "nodeType": "YulIf", + "src": "14438:131:13" + }, + { + "nodeType": "YulAssignment", + "src": "14579:20:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14594:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14597:1:13" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "14590:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14590:9:13" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "14579:7:13" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "14288:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "14291:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "14297:7:13", + "type": "" + } + ], + "src": "14257:348:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14655:261:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14665:25:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14688:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "14670:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "14670:20:13" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14665:1:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14699:25:13", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14722:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "14704:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "14704:20:13" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14699:1:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14862:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "14864:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "14864:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "14864:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14783:1:13" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14790:66:13", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14858:1:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14786:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14786:74:13" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14780:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "14780:81:13" + }, + "nodeType": "YulIf", + "src": "14777:107:13" + }, + { + "nodeType": "YulAssignment", + "src": "14894:16:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14905:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14908:1:13" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14901:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "14901:9:13" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "14894:3:13" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "14642:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "14645:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "14651:3:13", + "type": "" + } + ], + "src": "14611:305:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14950:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14967:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14970:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14960:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "14960:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "14960:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15064:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15067:4:13", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15057:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "15057:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "15057:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15088:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15091:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15081:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "15081:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "15081:15:13" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "14922:180:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15151:128:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15161:33:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15188:5:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "15170:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "15170:24:13" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15161:5:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15222:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "15224:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "15224:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "15224:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15209:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15216:4:13", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15206:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "15206:15:13" + }, + "nodeType": "YulIf", + "src": "15203:41:13" + }, + { + "nodeType": "YulAssignment", + "src": "15253:20:13", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15264:5:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15271:1:13", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15260:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "15260:13:13" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "15253:3:13" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15137:5:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "15147:3:13", + "type": "" + } + ], + "src": "15108:171:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15391:76:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15413:6:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15421:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15409:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "15409:14:13" + }, + { + "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15425:34:13", + "type": "", + "value": "Strings: hex length insufficient" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15402:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "15402:58:13" + }, + "nodeType": "YulExpressionStatement", + "src": "15402:58:13" + } + ] + }, + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "15383:6:13", + "type": "" + } + ], + "src": "15285:182:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15619:220:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15629:74:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15695:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15700:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15636:58:13" + }, + "nodeType": "YulFunctionCall", + "src": "15636:67:13" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15629:3:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15801:3:13" + } + ], + "functionName": { + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulIdentifier", + "src": "15712:88:13" + }, + "nodeType": "YulFunctionCall", + "src": "15712:93:13" + }, + "nodeType": "YulExpressionStatement", + "src": "15712:93:13" + }, + { + "nodeType": "YulAssignment", + "src": "15814:19:13", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15825:3:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15830:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15821:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "15821:12:13" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15814:3:13" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15607:3:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15615:3:13", + "type": "" + } + ], + "src": "15473:366:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16016:248:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16026:26:13", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16038:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16049:2:13", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16034:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "16034:18:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16026:4:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16073:9:13" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16084:1:13", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16069:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "16069:17:13" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16092:4:13" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16098:9:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16088:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "16088:20:13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16062:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "16062:47:13" + }, + "nodeType": "YulExpressionStatement", + "src": "16062:47:13" + }, + { + "nodeType": "YulAssignment", + "src": "16118:139:13", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16252:4:13" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "16126:124:13" + }, + "nodeType": "YulFunctionCall", + "src": "16126:131:13" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16118:4:13" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15996:9:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16011:4:13", + "type": "" + } + ], + "src": "15845:419:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16315:146:13", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16325:25:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16348:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "16330:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "16330:20:13" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16325:1:13" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16359:25:13", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16382:1:13" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "16364:17:13" + }, + "nodeType": "YulFunctionCall", + "src": "16364:20:13" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16359:1:13" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16406:22:13", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "16408:16:13" + }, + "nodeType": "YulFunctionCall", + "src": "16408:18:13" + }, + "nodeType": "YulExpressionStatement", + "src": "16408:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16400:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16403:1:13" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16397:2:13" + }, + "nodeType": "YulFunctionCall", + "src": "16397:8:13" + }, + "nodeType": "YulIf", + "src": "16394:34:13" + }, + { + "nodeType": "YulAssignment", + "src": "16438:17:13", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "16450:1:13" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "16453:1:13" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16446:3:13" + }, + "nodeType": "YulFunctionCall", + "src": "16446:9:13" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "16438:4:13" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "16301:1:13", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "16304:1:13", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "16310:4:13", + "type": "" + } + ], + "src": "16270:191:13" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16495:152:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16512:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16515:77:13", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16505:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "16505:88:13" + }, + "nodeType": "YulExpressionStatement", + "src": "16505:88:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16609:1:13", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16612:4:13", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16602:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "16602:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "16602:15:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16633:1:13", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16636:4:13", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16626:6:13" + }, + "nodeType": "YulFunctionCall", + "src": "16626:15:13" + }, + "nodeType": "YulExpressionStatement", + "src": "16626:15:13" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "16467:180:13" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 13, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "350:682:12:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "350:682:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4504:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4929:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6038:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;527:258:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1431:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3021:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2153:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5354:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;789:241:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;634:212:1;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;4504:129:0:-;4578:7;4604:6;:12;4611:4;4604:12;;;;;;;;;;;:22;;;4597:29;;4504:129;;;:::o;4929:145::-;5012:18;5025:4;5012:12;:18::i;:::-;2631:16;2642:4;2631:10;:16::i;:::-;5042:25:::1;5053:4;5059:7;5042:10;:25::i;:::-;4929:145:::0;;;:::o;6038:214::-;6144:12;:10;:12::i;:::-;6133:23;;:7;:23;;;6125:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;6219:26;6231:4;6237:7;6219:11;:26::i;:::-;6038:214;;:::o;527:258:12:-;605:12;620;:10;:12::i;:::-;605:27;;643:9;638:97;662:7;;:14;;658:1;:18;638:97;;;698:6;691:19;;;711:4;717:7;;725:1;717:10;;;;;;;:::i;:::-;;;;;;;;691:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:3;;;;;:::i;:::-;;;;638:97;;;;764:6;745:35;;761:1;755:4;745:35;;;772:7;;745:35;;;;;;;:::i;:::-;;;;;;;;599:186;527:258;;;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;3021:145:0:-;3107:4;3130:6;:12;3137:4;3130:12;;;;;;;;;;;:20;;:29;3151:7;3130:29;;;;;;;;;;;;;;;;;;;;;;;;;3123:36;;3021:145;;;;:::o;2153:49::-;2198:4;2153:49;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;5354:147:0:-;5438:18;5451:4;5438:12;:18::i;:::-;2631:16;2642:4;2631:10;:16::i;:::-;5468:26:::1;5480:4;5486:7;5468:11;:26::i;:::-;5354:147:::0;;;:::o;789:241:12:-;867:9;862:87;886:7;;:14;;882:1;:18;862:87;;;920:4;915:15;;;931:7;;939:1;931:10;;;;;;;:::i;:::-;;;;;;;;915:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:3;;;;;:::i;:::-;;;;862:87;;;;954:12;969;:10;:12::i;:::-;954:27;;1011:4;992:33;;1008:1;1002:4;992:33;;;1017:7;;992:33;;;;;;;:::i;:::-;;;;;;;;856:174;789:241;;;:::o;2732:202:0:-;2817:4;2855:32;2840:47;;;:11;:47;;;;:87;;;;2891:36;2915:11;2891:23;:36::i;:::-;2840:87;2833:94;;2732:202;;;:::o;3460:103::-;3526:30;3537:4;3543:12;:10;:12::i;:::-;3526:10;:30::i;:::-;3460:103;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;2233:171:1:-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;9563:156:11:-;9637:7;9687:22;9691:3;:10;;9703:5;9687:3;:22::i;:::-;9679:31;;9656:56;;9563:156;;;;:::o;9106:115::-;9169:7;9195:19;9203:3;:10;;9195:7;:19::i;:::-;9188:26;;9106:115;;;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;3844:479:0:-;3932:22;3940:4;3946:7;3932;:22::i;:::-;3927:390;;4115:28;4135:7;4115:19;:28::i;:::-;4214:38;4242:4;4234:13;;4249:2;4214:19;:38::i;:::-;4022:252;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3970:336;;;;;;;;;;;:::i;:::-;;;;;;;;3927:390;3844:479;;:::o;7587:233::-;7670:22;7678:4;7684:7;7670;:22::i;:::-;7665:149;;7740:4;7708:6;:12;7715:4;7708:12;;;;;;;;;;;:20;;:29;7729:7;7708:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7790:12;:10;:12::i;:::-;7763:40;;7781:7;7763:40;;7775:4;7763:40;;;;;;;;;;7665:149;7587:233;;:::o;8305:150:11:-;8375:4;8398:50;8403:3;:10;;8439:5;8423:23;;8415:32;;8398:4;:50::i;:::-;8391:57;;8305:150;;;;:::o;7991:234:0:-;8074:22;8082:4;8088:7;8074;:22::i;:::-;8070:149;;;8144:5;8112:6;:12;8119:4;8112:12;;;;;;;;;;;:20;;:29;8133:7;8112:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8195:12;:10;:12::i;:::-;8168:40;;8186:7;8168:40;;8180:4;8168:40;;;;;;;;;;8070:149;7991:234;;:::o;8623:156:11:-;8696:4;8719:53;8727:3;:10;;8763:5;8747:23;;8739:32;;8719:7;:53::i;:::-;8712:60;;8623:156;;;;:::o;4912:118::-;4979:7;5005:3;:11;;5017:5;5005:18;;;;;;;;:::i;:::-;;;;;;;;;;4998:25;;4912:118;;;;:::o;4463:107::-;4519:7;4545:3;:11;;:18;;;;4538:25;;4463:107;;;:::o;2407:149:6:-;2465:13;2497:52;2525:4;2509:22;;343:2;2497:52;;:11;:52::i;:::-;2490:59;;2407:149;;;:::o;1818:437::-;1893:13;1918:19;1963:1;1954:6;1950:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1940:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:47;;1975:15;:6;1982:1;1975:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2000;:6;2007:1;2000:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2030:9;2055:1;2046:6;2042:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;2030:26;;2025:128;2062:1;2058;:5;2025:128;;;2096:8;2113:3;2105:5;:11;2096:21;;;;;;;:::i;:::-;;;;;2084:6;2091:1;2084:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;2141:1;2131:11;;;;;2065:3;;;;:::i;:::-;;;2025:128;;;;2179:1;2170:5;:10;2162:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2241:6;2227:21;;;1818:437;;;;:::o;2214:404:11:-;2277:4;2298:21;2308:3;2313:5;2298:9;:21::i;:::-;2293:319;;2335:3;:11;;2352:5;2335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:3;:11;;:18;;;;2493:3;:12;;:19;2506:5;2493:19;;;;;;;;;;;:40;;;;2554:4;2547:11;;;;2293:319;2596:5;2589:12;;2214:404;;;;;:::o;2786:1388::-;2852:4;2968:18;2989:3;:12;;:19;3002:5;2989:19;;;;;;;;;;;;2968:40;;3037:1;3023:10;:15;3019:1149;;3392:21;3429:1;3416:10;:14;;;;:::i;:::-;3392:38;;3444:17;3485:1;3464:3;:11;;:18;;;;:22;;;;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3831:10;3805:3;:12;;:23;3818:9;3805:23;;;;;;;;;;;:36;;;;3533:366;3501:398;3977:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;2786:1388;;;;;:::o;4255:127::-;4328:4;4374:1;4351:3;:12;;:19;4364:5;4351:19;;;;;;;;;;;;:24;;4344:31;;4255:127;;;;:::o;88:117:13:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:118::-;2296:24;2314:5;2296:24;:::i;:::-;2291:3;2284:37;2209:118;;:::o;2333:222::-;2426:4;2464:2;2453:9;2449:18;2441:26;;2477:71;2545:1;2534:9;2530:17;2521:6;2477:71;:::i;:::-;2333:222;;;;:::o;2561:126::-;2598:7;2638:42;2631:5;2627:54;2616:65;;2561:126;;;:::o;2693:96::-;2730:7;2759:24;2777:5;2759:24;:::i;:::-;2748:35;;2693:96;;;:::o;2795:122::-;2868:24;2886:5;2868:24;:::i;:::-;2861:5;2858:35;2848:63;;2907:1;2904;2897:12;2848:63;2795:122;:::o;2923:139::-;2969:5;3007:6;2994:20;2985:29;;3023:33;3050:5;3023:33;:::i;:::-;2923:139;;;;:::o;3068:474::-;3136:6;3144;3193:2;3181:9;3172:7;3168:23;3164:32;3161:119;;;3199:79;;:::i;:::-;3161:119;3319:1;3344:53;3389:7;3380:6;3369:9;3365:22;3344:53;:::i;:::-;3334:63;;3290:117;3446:2;3472:53;3517:7;3508:6;3497:9;3493:22;3472:53;:::i;:::-;3462:63;;3417:118;3068:474;;;;;:::o;3548:117::-;3657:1;3654;3647:12;3671:117;3780:1;3777;3770:12;3794:117;3903:1;3900;3893:12;3934:568;4007:8;4017:6;4067:3;4060:4;4052:6;4048:17;4044:27;4034:122;;4075:79;;:::i;:::-;4034:122;4188:6;4175:20;4165:30;;4218:18;4210:6;4207:30;4204:117;;;4240:79;;:::i;:::-;4204:117;4354:4;4346:6;4342:17;4330:29;;4408:3;4400:4;4392:6;4388:17;4378:8;4374:32;4371:41;4368:128;;;4415:79;;:::i;:::-;4368:128;3934:568;;;;;:::o;4508:704::-;4603:6;4611;4619;4668:2;4656:9;4647:7;4643:23;4639:32;4636:119;;;4674:79;;:::i;:::-;4636:119;4794:1;4819:53;4864:7;4855:6;4844:9;4840:22;4819:53;:::i;:::-;4809:63;;4765:117;4949:2;4938:9;4934:18;4921:32;4980:18;4972:6;4969:30;4966:117;;;5002:79;;:::i;:::-;4966:117;5115:80;5187:7;5178:6;5167:9;5163:22;5115:80;:::i;:::-;5097:98;;;;4892:313;4508:704;;;;;:::o;5218:77::-;5255:7;5284:5;5273:16;;5218:77;;;:::o;5301:122::-;5374:24;5392:5;5374:24;:::i;:::-;5367:5;5364:35;5354:63;;5413:1;5410;5403:12;5354:63;5301:122;:::o;5429:139::-;5475:5;5513:6;5500:20;5491:29;;5529:33;5556:5;5529:33;:::i;:::-;5429:139;;;;:::o;5574:474::-;5642:6;5650;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5952:2;5978:53;6023:7;6014:6;6003:9;5999:22;5978:53;:::i;:::-;5968:63;;5923:118;5574:474;;;;;:::o;6054:118::-;6141:24;6159:5;6141:24;:::i;:::-;6136:3;6129:37;6054:118;;:::o;6178:222::-;6271:4;6309:2;6298:9;6294:18;6286:26;;6322:71;6390:1;6379:9;6375:17;6366:6;6322:71;:::i;:::-;6178:222;;;;:::o;6406:118::-;6493:24;6511:5;6493:24;:::i;:::-;6488:3;6481:37;6406:118;;:::o;6530:222::-;6623:4;6661:2;6650:9;6646:18;6638:26;;6674:71;6742:1;6731:9;6727:17;6718:6;6674:71;:::i;:::-;6530:222;;;;:::o;6758:169::-;6842:11;6876:6;6871:3;6864:19;6916:4;6911:3;6907:14;6892:29;;6758:169;;;;:::o;6933:234::-;7073:34;7069:1;7061:6;7057:14;7050:58;7142:17;7137:2;7129:6;7125:15;7118:42;6933:234;:::o;7173:366::-;7315:3;7336:67;7400:2;7395:3;7336:67;:::i;:::-;7329:74;;7412:93;7501:3;7412:93;:::i;:::-;7530:2;7525:3;7521:12;7514:19;;7173:366;;;:::o;7545:419::-;7711:4;7749:2;7738:9;7734:18;7726:26;;7798:9;7792:4;7788:20;7784:1;7773:9;7769:17;7762:47;7826:131;7952:4;7826:131;:::i;:::-;7818:139;;7545:419;;;:::o;7970:180::-;8018:77;8015:1;8008:88;8115:4;8112:1;8105:15;8139:4;8136:1;8129:15;8156:332;8277:4;8315:2;8304:9;8300:18;8292:26;;8328:71;8396:1;8385:9;8381:17;8372:6;8328:71;:::i;:::-;8409:72;8477:2;8466:9;8462:18;8453:6;8409:72;:::i;:::-;8156:332;;;;;:::o;8494:180::-;8542:77;8539:1;8532:88;8639:4;8636:1;8629:15;8663:4;8660:1;8653:15;8680:233;8719:3;8742:24;8760:5;8742:24;:::i;:::-;8733:33;;8788:66;8781:5;8778:77;8775:103;;;8858:18;;:::i;:::-;8775:103;8905:1;8898:5;8894:13;8887:20;;8680:233;;;:::o;8919:184::-;9018:11;9052:6;9047:3;9040:19;9092:4;9087:3;9083:14;9068:29;;8919:184;;;;:::o;9109:117::-;9218:1;9215;9208:12;9232:154;9316:6;9311:3;9306;9293:30;9378:1;9369:6;9364:3;9360:16;9353:27;9232:154;;;:::o;9422:537::-;9550:3;9571:86;9650:6;9645:3;9571:86;:::i;:::-;9564:93;;9681:66;9673:6;9670:78;9667:165;;;9751:79;;:::i;:::-;9667:165;9863:4;9855:6;9851:17;9841:27;;9878:43;9914:6;9909:3;9902:5;9878:43;:::i;:::-;9946:6;9941:3;9937:16;9930:23;;9422:537;;;;;:::o;9965:393::-;10118:4;10156:2;10145:9;10141:18;10133:26;;10205:9;10199:4;10195:20;10191:1;10180:9;10176:17;10169:47;10233:118;10346:4;10337:6;10329;10233:118;:::i;:::-;10225:126;;9965:393;;;;;:::o;10364:148::-;10466:11;10503:3;10488:18;;10364:148;;;;:::o;10518:173::-;10658:25;10654:1;10646:6;10642:14;10635:49;10518:173;:::o;10697:402::-;10857:3;10878:85;10960:2;10955:3;10878:85;:::i;:::-;10871:92;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10697:402;;;:::o;11105:99::-;11157:6;11191:5;11185:12;11175:22;;11105:99;;;:::o;11210:307::-;11278:1;11288:113;11302:6;11299:1;11296:13;11288:113;;;11387:1;11382:3;11378:11;11372:18;11368:1;11363:3;11359:11;11352:39;11324:2;11321:1;11317:10;11312:15;;11288:113;;;11419:6;11416:1;11413:13;11410:101;;;11499:1;11490:6;11485:3;11481:16;11474:27;11410:101;11259:258;11210:307;;;:::o;11523:377::-;11629:3;11657:39;11690:5;11657:39;:::i;:::-;11712:89;11794:6;11789:3;11712:89;:::i;:::-;11705:96;;11810:52;11855:6;11850:3;11843:4;11836:5;11832:16;11810:52;:::i;:::-;11887:6;11882:3;11878:16;11871:23;;11633:267;11523:377;;;;:::o;11906:167::-;12046:19;12042:1;12034:6;12030:14;12023:43;11906:167;:::o;12079:402::-;12239:3;12260:85;12342:2;12337:3;12260:85;:::i;:::-;12253:92;;12354:93;12443:3;12354:93;:::i;:::-;12472:2;12467:3;12463:12;12456:19;;12079:402;;;:::o;12487:967::-;12869:3;12891:148;13035:3;12891:148;:::i;:::-;12884:155;;13056:95;13147:3;13138:6;13056:95;:::i;:::-;13049:102;;13168:148;13312:3;13168:148;:::i;:::-;13161:155;;13333:95;13424:3;13415:6;13333:95;:::i;:::-;13326:102;;13445:3;13438:10;;12487:967;;;;;:::o;13460:102::-;13501:6;13552:2;13548:7;13543:2;13536:5;13532:14;13528:28;13518:38;;13460:102;;;:::o;13568:364::-;13656:3;13684:39;13717:5;13684:39;:::i;:::-;13739:71;13803:6;13798:3;13739:71;:::i;:::-;13732:78;;13819:52;13864:6;13859:3;13852:4;13845:5;13841:16;13819:52;:::i;:::-;13896:29;13918:6;13896:29;:::i;:::-;13891:3;13887:39;13880:46;;13660:272;13568:364;;;;:::o;13938:313::-;14051:4;14089:2;14078:9;14074:18;14066:26;;14138:9;14132:4;14128:20;14124:1;14113:9;14109:17;14102:47;14166:78;14239:4;14230:6;14166:78;:::i;:::-;14158:86;;13938:313;;;;:::o;14257:348::-;14297:7;14320:20;14338:1;14320:20;:::i;:::-;14315:25;;14354:20;14372:1;14354:20;:::i;:::-;14349:25;;14542:1;14474:66;14470:74;14467:1;14464:81;14459:1;14452:9;14445:17;14441:105;14438:131;;;14549:18;;:::i;:::-;14438:131;14597:1;14594;14590:9;14579:20;;14257:348;;;;:::o;14611:305::-;14651:3;14670:20;14688:1;14670:20;:::i;:::-;14665:25;;14704:20;14722:1;14704:20;:::i;:::-;14699:25;;14858:1;14790:66;14786:74;14783:1;14780:81;14777:107;;;14864:18;;:::i;:::-;14777:107;14908:1;14905;14901:9;14894:16;;14611:305;;;;:::o;14922:180::-;14970:77;14967:1;14960:88;15067:4;15064:1;15057:15;15091:4;15088:1;15081:15;15108:171;15147:3;15170:24;15188:5;15170:24;:::i;:::-;15161:33;;15216:4;15209:5;15206:15;15203:41;;;15224:18;;:::i;:::-;15203:41;15271:1;15264:5;15260:13;15253:20;;15108:171;;;:::o;15285:182::-;15425:34;15421:1;15413:6;15409:14;15402:58;15285:182;:::o;15473:366::-;15615:3;15636:67;15700:2;15695:3;15636:67;:::i;:::-;15629:74;;15712:93;15801:3;15712:93;:::i;:::-;15830:2;15825:3;15821:12;15814:19;;15473:366;;;:::o;15845:419::-;16011:4;16049:2;16038:9;16034:18;16026:26;;16098:9;16092:4;16088:20;16084:1;16073:9;16069:17;16062:47;16126:131;16252:4;16126:131;:::i;:::-;16118:139;;15845:419;;;:::o;16270:191::-;16310:4;16330:20;16348:1;16330:20;:::i;:::-;16325:25;;16364:20;16382:1;16364:20;:::i;:::-;16359:25;;16403:1;16400;16397:8;16394:34;;;16408:18;;:::i;:::-;16394:34;16453:1;16450;16446:9;16438:17;;16270:191;;;;:::o;16467:180::-;16515:77;16512:1;16505:88;16612:4;16609:1;16602:15;16636:4;16633:1;16626:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IBadge is IERC721{\n function burn(address owner, uint256 tokenId) external;\n}\n\ninterface ISbt is IERC721{\n function burn(uint256 tokenId) external;\n}\n\n\ncontract NftBuner is AccessControlEnumerable {\n event BatchBurn(\n address indexed user,\n uint256 indexed tokenId,\n address indexed nft,\n uint256[] tokenIds\n );\n\n function brunBadge(address _badge, uint256[] calldata _nftIds) external {\n address user = _msgSender();\n for (uint256 i = 0; i < _nftIds.length; i++) {\n IBadge(_badge).burn(user, _nftIds[i]);\n }\n emit BatchBurn(user, 0, _badge, _nftIds);\n }\n\n function burnSbt(address _nft, uint256[] calldata _nftIds) external{\n for (uint256 i = 0; i < _nftIds.length; i++) {\n ISbt(_nft).burn(_nftIds[i]);\n }\n address user = _msgSender();\n emit BatchBurn(user, 0, _nft, _nftIds);\n }\n}\n", + "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/NftBuner.sol", + "ast": { + "absolutePath": "project:/contracts/logic/NftBuner.sol", + "exportedSymbols": { + "AccessControl": [ + 315 + ], + "AccessControlEnumerable": [ + 440 + ], + "Context": [ + 676 + ], + "ERC165": [ + 929 + ], + "EnumerableSet": [ + 2525 + ], + "IAccessControl": [ + 513 + ], + "IAccessControlEnumerable": [ + 538 + ], + "IBadge": [ + 2539 + ], + "IERC165": [ + 941 + ], + "IERC721": [ + 654 + ], + "ISbt": [ + 2547 + ], + "Math": [ + 1807 + ], + "NftBuner": [ + 2648 + ], + "SignedMath": [ + 1912 + ], + "Strings": [ + 905 + ] + }, + "id": 2649, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2527, + "literals": [ + "solidity", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:23:12" + }, + { + "absolutePath": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "id": 2528, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 441, + "src": "57:68:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 2529, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2649, + "sourceUnit": 655, + "src": "126:58:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2530, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "206:7:12" + }, + "id": 2531, + "nodeType": "InheritanceSpecifier", + "src": "206:7:12" + } + ], + "canonicalName": "IBadge", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2539, + "linearizedBaseContracts": [ + 2539, + 654, + 941 + ], + "name": "IBadge", + "nameLocation": "196:6:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9dc29fac", + "id": 2538, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "226:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2533, + "mutability": "mutable", + "name": "owner", + "nameLocation": "239:5:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "231:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2535, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "254:7:12", + "nodeType": "VariableDeclaration", + "scope": 2538, + "src": "246:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "230:32:12" + }, + "returnParameters": { + "id": 2537, + "nodeType": "ParameterList", + "parameters": [], + "src": "271:0:12" + }, + "scope": 2539, + "src": "217:55:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "186:88:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2540, + "name": "IERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 654, + "src": "294:7:12" + }, + "id": 2541, + "nodeType": "InheritanceSpecifier", + "src": "294:7:12" + } + ], + "canonicalName": "ISbt", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 2547, + "linearizedBaseContracts": [ + 2547, + 654, + 941 + ], + "name": "ISbt", + "nameLocation": "286:4:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "42966c68", + "id": 2546, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "314:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2543, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "327:7:12", + "nodeType": "VariableDeclaration", + "scope": 2546, + "src": "319:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "318:17:12" + }, + "returnParameters": { + "id": 2545, + "nodeType": "ParameterList", + "parameters": [], + "src": "344:0:12" + }, + "scope": 2547, + "src": "305:40:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "276:71:12", + "usedErrors": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2548, + "name": "AccessControlEnumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 440, + "src": "371:23:12" + }, + "id": 2549, + "nodeType": "InheritanceSpecifier", + "src": "371:23:12" + } + ], + "canonicalName": "NftBuner", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2648, + "linearizedBaseContracts": [ + 2648, + 440, + 315, + 929, + 941, + 538, + 513, + 676 + ], + "name": "NftBuner", + "nameLocation": "359:8:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 2560, + "name": "BatchBurn", + "nameLocation": "405:9:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2551, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "436:4:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "420:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "420:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2553, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "462:7:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "446:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2555, + "indexed": true, + "mutability": "mutable", + "name": "nft", + "nameLocation": "491:3:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "475:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "indexed": false, + "mutability": "mutable", + "name": "tokenIds", + "nameLocation": "510:8:12", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "500:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2557, + "nodeType": "ArrayTypeName", + "src": "500:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "414:108:12" + }, + "src": "399:124:12" + }, + { + "body": { + "id": 2603, + "nodeType": "Block", + "src": "599:186:12", + "statements": [ + { + "assignments": [ + 2569 + ], + "declarations": [ + { + "constant": false, + "id": 2569, + "mutability": "mutable", + "name": "user", + "nameLocation": "613:4:12", + "nodeType": "VariableDeclaration", + "scope": 2603, + "src": "605:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "605:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2572, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2570, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "620:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "605:27:12" + }, + { + "body": { + "id": 2594, + "nodeType": "Block", + "src": "683:52:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2588, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "711:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 2589, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "717:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2591, + "indexExpression": { + "id": 2590, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "725:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "717:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2585, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "698:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2584, + "name": "IBadge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "691:6:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBadge_$2539_$", + "typeString": "type(contract IBadge)" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:14:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBadge_$2539", + "typeString": "contract IBadge" + } + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2538, + "src": "691:19:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2593, + "nodeType": "ExpressionStatement", + "src": "691:37:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2577, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "658:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2578, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "662:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "662:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "658:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2595, + "initializationExpression": { + "assignments": [ + 2574 + ], + "declarations": [ + { + "constant": false, + "id": 2574, + "mutability": "mutable", + "name": "i", + "nameLocation": "651:1:12", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "643:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "643:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2576, + "initialValue": { + "hexValue": "30", + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "643:13:12" + }, + "loopExpression": { + "expression": { + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "678:3:12", + "subExpression": { + "id": 2581, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2574, + "src": "678:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2583, + "nodeType": "ExpressionStatement", + "src": "678:3:12" + }, + "nodeType": "ForStatement", + "src": "638:97:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2597, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "755:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2599, + "name": "_badge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "764:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2600, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "772:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2596, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "745:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "745:35:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2602, + "nodeType": "EmitStatement", + "src": "740:40:12" + } + ] + }, + "functionSelector": "87a64551", + "id": 2604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "brunBadge", + "nameLocation": "536:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "_badge", + "nameLocation": "554:6:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "546:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2565, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "581:7:12", + "nodeType": "VariableDeclaration", + "scope": 2604, + "src": "562:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "562:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2564, + "nodeType": "ArrayTypeName", + "src": "562:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "545:44:12" + }, + "returnParameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [], + "src": "599:0:12" + }, + "scope": 2648, + "src": "527:258:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2646, + "nodeType": "Block", + "src": "856:174:12", + "statements": [ + { + "body": { + "id": 2632, + "nodeType": "Block", + "src": "907:42:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2627, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "931:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2629, + "indexExpression": { + "id": 2628, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "939:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "931:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2624, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "920:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2623, + "name": "ISbt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "915:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISbt_$2547_$", + "typeString": "type(contract ISbt)" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISbt_$2547", + "typeString": "contract ISbt" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 2546, + "src": "915:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "915:27:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2631, + "nodeType": "ExpressionStatement", + "src": "915:27:12" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "882:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2617, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "886:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "886:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "882:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2633, + "initializationExpression": { + "assignments": [ + 2613 + ], + "declarations": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "i", + "nameLocation": "875:1:12", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "867:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "867:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2615, + "initialValue": { + "hexValue": "30", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "879:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "867:13:12" + }, + "loopExpression": { + "expression": { + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "902:3:12", + "subExpression": { + "id": 2620, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "902:1:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2622, + "nodeType": "ExpressionStatement", + "src": "902:3:12" + }, + "nodeType": "ForStatement", + "src": "862:87:12" + }, + { + "assignments": [ + 2635 + ], + "declarations": [ + { + "constant": false, + "id": 2635, + "mutability": "mutable", + "name": "user", + "nameLocation": "962:4:12", + "nodeType": "VariableDeclaration", + "scope": 2646, + "src": "954:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "954:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2638, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2636, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "969:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "969:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "954:27:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2640, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "1002:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1008:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 2642, + "name": "_nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2606, + "src": "1011:4:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2643, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "1017:7:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 2639, + "name": "BatchBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "992:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,uint256[] memory)" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:33:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2645, + "nodeType": "EmitStatement", + "src": "987:38:12" + } + ] + }, + "functionSelector": "e7a70ee7", + "id": 2647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnSbt", + "nameLocation": "798:7:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2606, + "mutability": "mutable", + "name": "_nft", + "nameLocation": "814:4:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "806:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2609, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "839:7:12", + "nodeType": "VariableDeclaration", + "scope": 2647, + "src": "820:26:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "820:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2608, + "nodeType": "ArrayTypeName", + "src": "820:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "805:42:12" + }, + "returnParameters": { + "id": 2611, + "nodeType": "ParameterList", + "parameters": [], + "src": "856:0:12" + }, + "scope": 2648, + "src": "789:241:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2649, + "src": "350:682:12", + "usedErrors": [] + } + ], + "src": "32:1001:12" + }, + "compiler": { + "name": "solc", + "version": "0.8.10+commit.fc410830.Emscripten.clang" + }, + "networks": { + "421614": { + "events": {}, + "links": {}, + "address": "0xca5525178b0826A7C0835F0b7a383C802e10b6c7", + "transactionHash": "0xe0526d55e162741e41f2cb787d9d52f439d7b1d0194bcea5368e2a9aa47148f0" + } + }, + "schemaVersion": "3.4.16", + "updatedAt": "2024-01-10T06:03:43.845Z", + "networkType": "ethereum", + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/build/contracts/NftDistributor.json b/build/contracts/NftDistributor.json index 7f50c5b..bf4f9b7 100644 --- a/build/contracts/NftDistributor.json +++ b/build/contracts/NftDistributor.json @@ -25852,7 +25852,7 @@ } }, "schemaVersion": "3.4.16", - "updatedAt": "2023-12-27T05:51:26.147Z", + "updatedAt": "2024-01-09T02:33:38.519Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/contracts/logic/NftBuner.sol b/contracts/logic/NftBuner.sol new file mode 100644 index 0000000..cc70023 --- /dev/null +++ b/contracts/logic/NftBuner.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.10; + +import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; +import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; + +interface IBadge is IERC721{ + function burn(address owner, uint256 tokenId) external; +} + +interface ISbt is IERC721{ + function burn(uint256 tokenId) external; +} + + +contract NftBuner is AccessControlEnumerable { + event BatchBurn( + address indexed user, + uint256 indexed tokenId, + address indexed nft, + uint256[] tokenIds + ); + + function brunBadge(address _badge, uint256[] calldata _nftIds) external { + address user = _msgSender(); + for (uint256 i = 0; i < _nftIds.length; i++) { + IBadge(_badge).burn(user, _nftIds[i]); + } + emit BatchBurn(user, 0, _badge, _nftIds); + } + + function burnSbt(address _nft, uint256[] calldata _nftIds) external{ + for (uint256 i = 0; i < _nftIds.length; i++) { + ISbt(_nft).burn(_nftIds[i]); + } + address user = _msgSender(); + emit BatchBurn(user, 0, _nft, _nftIds); + } +} diff --git a/migrations/14_deploy_buner.js b/migrations/14_deploy_buner.js new file mode 100644 index 0000000..666e17e --- /dev/null +++ b/migrations/14_deploy_buner.js @@ -0,0 +1,34 @@ +const base = require("../scripts/base"); +const NftBuner = artifacts.require("logic/NftBuner"); +const Badge = artifacts.require("tokens/erc721/BEBadge"); +const NFTSbt = artifacts.require("tokens/erc721/NFTSbt"); + +module.exports = async function (deployer, network, accounts) { + await deployer.deploy(NftBuner); + const bunerInstance = await NftBuner.deployed(); + if (bunerInstance) { + console.log("NftBuner successfully deployed."); + console.log("address: " + bunerInstance.address); + } + base.updateArray({ + name: "NftBuner", + type: "logic", + json: "assets/contracts/NftBuner.json", + address: bunerInstance.address, + network, + }); + let cfgs = base.loadData({ network }); + const gacha = cfgs.find((c) => c.name === "Gacha").address + const gachaInstance = await Badge.at(gacha); + await gachaInstance.setBurnRole(bunerInstance.address); + console.log("gacha setBurnRole successfully deployed."); + + const candy = cfgs.find((c) => c.name === "Candy").address + const candyInstance = await Badge.at(candy); + await candyInstance.setBurnRole(bunerInstance.address); + console.log("candy setBurnRole successfully deployed."); + const explorer = cfgs.find((c) => c.name === "Explorer").address + const explorerInstance = await NFTSbt.at(explorer); + await explorerInstance.setBurnRole(bunerInstance.address); + console.log("explorer setBurnRole successfully deployed."); +}; diff --git a/migrations/2_depoly_etc.js b/migrations/2_depoly_etc.js index bd7c37b..e31a347 100644 --- a/migrations/2_depoly_etc.js +++ b/migrations/2_depoly_etc.js @@ -1,4 +1,5 @@ const Badge = artifacts.require("tokens/erc721/BEBadge"); +const NFTSbt = artifacts.require("tokens/erc721/NFTSbt"); const Coin = artifacts.require("tokens/erc20/BEUSDT"); const Wallet = artifacts.require("core/BEMultiSigWallet"); const Distributor = artifacts.require("logic/NftDistributor"); @@ -6,79 +7,106 @@ const base = require("../scripts/base"); module.exports = async function (deployer, network, accounts) { const config = require(`../config/config_${network}`); - await deployer.deploy(Badge, "BE Badge", "Badge", "4000"); + + await deployer.deploy(NFTSbt, "BE Explorer", "Explorer", "0"); const badgeInstance = await Badge.deployed(); if (badgeInstance) { console.log("BEBadge successfully deployed. "); console.log("address: " + badgeInstance.address); } base.updateArray({ - name: "BEBadge", + name: "Explorer", type: "erc721", - json: "assets/contracts/BEBadge.json", + json: "assets/contracts/NFTSbt.json", address: badgeInstance.address, network, }); + // await deployer.deploy(Badge, "BE Candy", "Candy", "0"); + // const badgeInstance = await Badge.deployed(); + // if (badgeInstance) { + // console.log("BEBadge successfully deployed. "); + // console.log("address: " + badgeInstance.address); + // } + // base.updateArray({ + // name: "Candy", + // type: "erc721", + // json: "assets/contracts/BEBadge.json", + // address: badgeInstance.address, + // network, + // }); + // await deployer.deploy(Badge, "BE Badge", "Badge", "4000"); + // const badgeInstance = await Badge.deployed(); + // if (badgeInstance) { + // console.log("BEBadge successfully deployed. "); + // console.log("address: " + badgeInstance.address); + // } + // base.updateArray({ + // name: "BEBadge", + // type: "erc721", + // json: "assets/contracts/BEBadge.json", + // address: badgeInstance.address, + // network, + // }); - await deployer.deploy(Coin, "BE test USDT", "USDT"); - const coinInstance = await Coin.deployed(); - if (coinInstance) { - console.log("BEUSDT successfully deployed. "); - console.log("address: " + coinInstance.address); - } - base.updateArray({ - name: "BEUSDT", - type: "erc20", - json: "assets/contracts/BEUSDT.json", - address: coinInstance.address, - network, - }); - await deployer.deploy( - Wallet, - 60, - 1, - config.admins.proposers, - config.admins.confirmers, - config.admins.executors - ); - const walletInstance = await Wallet.deployed(); - if (walletInstance) { - console.log("BEMultiSigWallet successfully deployed."); - console.log("address: " + walletInstance.address); - } - base.updateArray({ - name: "BEMultiSigWallet", - type: "logic", - json: "assets/contracts/BEMultiSigWallet.json", - address: walletInstance.address, - network, - }); - await badgeInstance.setMintRole(walletInstance.address); - console.log("success add wallet to badge's mint role"); - await coinInstance.setMintRole(walletInstance.address); - console.log("success add wallet to usdt's mint role"); + // await deployer.deploy(Coin, "BE test USDT", "USDT"); + // const coinInstance = await Coin.deployed(); + // if (coinInstance) { + // console.log("BEUSDT successfully deployed. "); + // console.log("address: " + coinInstance.address); + // } + // base.updateArray({ + // name: "BEUSDT", + // type: "erc20", + // json: "assets/contracts/BEUSDT.json", + // address: coinInstance.address, + // network, + // }); + // await deployer.deploy( + // Wallet, + // 60, + // 1, + // config.admins.proposers, + // config.admins.confirmers, + // config.admins.executors + // ); + // const walletInstance = await Wallet.deployed(); + // if (walletInstance) { + // console.log("BEMultiSigWallet successfully deployed."); + // console.log("address: " + walletInstance.address); + // } + // base.updateArray({ + // name: "BEMultiSigWallet", + // type: "logic", + // json: "assets/contracts/BEMultiSigWallet.json", + // address: walletInstance.address, + // network, + // }); + // await badgeInstance.setMintRole(walletInstance.address); + // console.log("success add wallet to badge's mint role"); + // await coinInstance.setMintRole(walletInstance.address); + // console.log("success add wallet to usdt's mint role"); - await deployer.deploy( - Distributor, - badgeInstance.address, - config.admins.executors - ); - const distributorInstance = await Distributor.deployed(); - if (distributorInstance) { - console.log("NftDistributor successfully deployed."); - console.log("address: " + distributorInstance.address); - } - base.updateArray({ - name: "NftDistributor", - type: "logic", - json: "assets/contracts/NftDistributor.json", - address: distributorInstance.address, - network, - }); - await badgeInstance.setMintRole(distributorInstance.address); - await distributorInstance.grantRole( - "0xa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091", - walletInstance.address - ); - console.log("success add distributor to badge's mint role"); + // await deployer.deploy( + // Distributor, + // badgeInstance.address, + // config.admins.executors + // ); + // const distributorInstance = await Distributor.deployed(); + // if (distributorInstance) { + // console.log("NftDistributor successfully deployed."); + // console.log("address: " + distributorInstance.address); + // } + // base.updateArray({ + // name: "NftDistributor", + // type: "logic", + // json: "assets/contracts/NftDistributor.json", + // address: distributorInstance.address, + // network, + // }); + // await badgeInstance.setMintRole(distributorInstance.address); + // await distributorInstance.grantRole( + // "0xa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091", + // walletInstance.address + // ); + // console.log("success add distributor to badge's mint role"); }; diff --git a/migrations/5_deploy_nft.js b/migrations/5_deploy_nft.js index 9d915c6..bb3aaf0 100644 --- a/migrations/5_deploy_nft.js +++ b/migrations/5_deploy_nft.js @@ -3,10 +3,10 @@ const base = require("../scripts/base"); module.exports = async function (deployer, network, accounts) { // const tokens = [{ name: "HERO", desc: "CRYPTO ELITE'S HERO", limit: 0 }]; const tokens = [ - { name: "HERO", desc: "CRYPTO ELITE'S HERO", limit: 0 }, - { name: "PLANET", desc: "CF PLANET", limit: 0 }, + // { name: "HERO", desc: "CRYPTO ELITE'S HERO", limit: 0 }, + // { name: "PLANET", desc: "CF PLANET", limit: 0 }, { name: "TestHERO", desc: "CRYPTO ELITE'S HERO", limit: 0 }, - { name: "GoldBrick", desc: "CRYPTO ELITE'S GOLDBRICK", limit: 0 }, + // { name: "GoldBrick", desc: "CRYPTO ELITE'S GOLDBRICK", limit: 0 }, ]; for (let i = 0, l = tokens.length; i < l; i++) { const { name, desc, limit } = tokens[i]; diff --git a/out/arbitrum_sepolia_dev.json b/out/arbitrum_sepolia_dev.json index 8ad1252..4c542b3 100644 --- a/out/arbitrum_sepolia_dev.json +++ b/out/arbitrum_sepolia_dev.json @@ -53,12 +53,6 @@ "json": "assets/contracts/NFT.json", "address": "0x8ee0a9D6025A46f21c9b0b75a8472D001d94e8A7" }, - { - "name": "TestHERO", - "type": "erc721", - "json": "assets/contracts/NFT.json", - "address": "0xCD4bb3402f1a444a1AF10F31946Ed37DaC0eaC4d" - }, { "name": "GoldBrick", "type": "erc721", @@ -136,5 +130,29 @@ "type": "logic", "json": "assets/contracts/GoldBricksFactory.json", "address": "0x45E2Eae3634a69Fb9242397A75dd5751aEa8041e" + }, + { + "name": "Candy", + "type": "erc721", + "json": "assets/contracts/BEBadge.json", + "address": "0x6a673D946a976776fd5F163d9d831b2fEB600015" + }, + { + "name": "Explorer", + "type": "erc721", + "json": "assets/contracts/NFTSbt.json", + "address": "0x7b6399DFbed8Bc46F6A498C6B1040E80c2B5C4bc" + }, + { + "name": "TestHERO", + "type": "erc721", + "json": "assets/contracts/NFT.json", + "address": "0xCD4bb3402f1a444a1AF10F31946Ed37DaC0eaC4d" + }, + { + "name": "NftBuner", + "type": "logic", + "json": "assets/contracts/NftBuner.json", + "address": "0xca5525178b0826A7C0835F0b7a383C802e10b6c7" } ] \ No newline at end of file diff --git a/test/burn.test.js b/test/burn.test.js new file mode 100644 index 0000000..4304ec5 --- /dev/null +++ b/test/burn.test.js @@ -0,0 +1,54 @@ +const NftBuner = artifacts.require("NftBuner"); +const BEBadge = artifacts.require("BEBadge"); +const NFTSbt = artifacts.require("NFTSbt"); +const { + BN, + constants, + expectEvent, + expectRevert, +} = require("@openzeppelin/test-helpers"); +const Web3 = require("web3"); + +contract("NftBuner", (accounts) => { + let nftBuner; + let badge; + let sbt; + const owner = accounts[0]; + const user = accounts[1]; + const executor = accounts[2]; + let web3 = new Web3(Web3.givenProvider); + + beforeEach(async () => { + badge = await BEBadge.new("CRYPTO ELITE'S HERO", "HERO", 0); + sbt = await NFTSbt.new("CRYPTO ELITE'S HERO", "SBT", 0); + nftBuner = await NftBuner.new(); + await badge.setBurnRole(nftBuner.address); + await sbt.setBurnRole(nftBuner.address); + }); + + it("should burn the badge", async () => { + await badge.batchMint(user, 2, { from: owner }); + const receipt = await nftBuner.brunBadge( + badge.address, + [1, 2], + { from: user } + ); + + const balanceOfUser = await badge.balanceOf(user); + assert.equal(balanceOfUser, 0, "Incorrect user balance"); + }); + + it("should burn the sbt", async () => { + await sbt.batchMint(user, 2, { from: owner }); + await sbt.setApprovalForAll(nftBuner.address, true, { from: user }); + const receipt = await nftBuner.burnSbt( + sbt.address, + [1, 2], + { from: user } + ); + console.log(receipt); + + const balanceOfUser = await sbt.balanceOf(user); + assert.equal(balanceOfUser, 0, "Incorrect user balance"); + }); +}); \ No newline at end of file