{
  "contractName": "MockERC721CreatorMintPermissions",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creator_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AdminApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "AdminRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "approveAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAdmins",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "admins",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "revokeAdmin",
      "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": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setApproveEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approveMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AdminApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AdminRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"approveAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approveMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"admins\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"revokeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setApproveEnabled\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveAdmin(address)\":{\"details\":\"See {IAdminControl-approveAdmin}.\"},\"getAdmins()\":{\"details\":\"See {IAdminControl-getAdmins}.\"},\"isAdmin(address)\":{\"details\":\"See {IAdminControl-isAdmin}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAdmin(address)\":{\"details\":\"See {IAdminControl-revokeAdmin}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mocks/MockERC721CreatorMintPermissions.sol\":\"MockERC721CreatorMintPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol\":{\"keccak256\":\"0xaed5e7784e33745ab1b16f1d87b22084a8b25d531c1dcb8dc41fc2a89e2617da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44837a9cc639062b2d7424a10e9d579b8d3a9bc1cefede2cfbb917bee8f452ae\",\"dweb:/ipfs/QmburkqmRDZYWjKPRUynhdfkAfP5QDKcXH4WCbH1JC8UDq\"]},\"@manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol\":{\"keccak256\":\"0x7cc2e4e7d9052532f445e62ec1fa2f05cc0f5d1d8ee1fea913b43a132277bf2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://266618317d0654fe209b5450b8b5afa3a4a8d41294a2b37ddbae540099859887\",\"dweb:/ipfs/QmYksDqoxhachoqZquXGtjfiuAWJ1rxAKLtUYPL3YboBkE\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x0812bc73d6e30558840122fa48d6f64ae978ccc1b1fc42e616bac190c6360f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d95a53b7e19ca1d46043eaad8967b6e0b02aab2b5fefc2108bfa6d1ad425f5b\",\"dweb:/ipfs/QmQq7AUGT9juE3hun2Wy7r2BDoDBFdBn43DVwhJpK2StLV\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0xc3ff3f5c4584e1d9a483ad7ced51ab64523201f4e3d3c65293e4ca8aeb77a961\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7d3dd6067a994690471b5fc71b6f81fac3847798b37d404f74db00b4d3c3d0e\",\"dweb:/ipfs/QmRHF1RarifjNi93RttouNPkYZGyu6CD926PgRDzD5iL35\"]},\"project:/contracts/core/ICreatorCore.sol\":{\"keccak256\":\"0x6bdcb757953594d3a259f1d68ec3d208ca42dba02115f08a6e32e2936ccb0349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd1853dabcd57eb9b735b3991cf59259cd28cdeca1353495b5c59dc0db2d85df\",\"dweb:/ipfs/QmfJLFZ7RoMvdR7kJLR7QmqreS1x5VNJSa7xvjVsC4mXte\"]},\"project:/contracts/core/IERC721CreatorCore.sol\":{\"keccak256\":\"0xb168262afd1960a48d9c2088b7c24df3c0e5e190d2e2451e8af38983cf713bad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b8e621daf8a34967aa796482e02521390328f84a130f064e67aafc1b11748e5\",\"dweb:/ipfs/QmRC4suf2UXxkfy9NazSHwVAHLFeuzqAuQPmZrf1KQfX7f\"]},\"project:/contracts/mocks/MockERC721CreatorMintPermissions.sol\":{\"keccak256\":\"0xa7210c63c5ceb0d2581ec6de8c119267db636ae879ba95fdb9e37e937324d674\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14ddcd6871121bfa14fa93bef7657e89d1e1afc4abdb6cc4da76389847a3a5a1\",\"dweb:/ipfs/QmZusJVyD1qqox8crnXJ61t5q91ykcf2urzXagTFJySJLs\"]},\"project:/contracts/permissions/ERC721/ERC721CreatorMintPermissions.sol\":{\"keccak256\":\"0xb3669781e4c46a6de94a0674050e95a626836026ed2a6271aef0831e8d85e17d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85b95d8c76db3c77201e9f871e9e6f06a8597bcf622807b372519f8ede31ac9c\",\"dweb:/ipfs/QmPWsFmVWs3PpactQA8a3b5pFvmgvi6jCnKivYE1gHvrXh\"]},\"project:/contracts/permissions/ERC721/IERC721CreatorMintPermissions.sol\":{\"keccak256\":\"0x9df5ea824141ac0225b240688d6b964d31e4b525c221e4e02b93955500996115\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ac75988c6c21b64e7a5da269879c23c7f818c8c47962b7e74a2af25c7b78008\",\"dweb:/ipfs/QmRv7RPHRThCPtCnje4nrsCGY6v9otDbYXnexmpNubrUfN\"]}},\"version\":1}",
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610b82380380610b8283398101604081905261002f916101f3565b80610039336100c3565b61004a8163b5d2729f60e01b610113565b6100a45760405162461bcd60e51b815260206004820152602160248201527f4d75737420696d706c656d656e74204945524337323143726561746f72436f726044820152606560f81b606482015260840160405180910390fd5b6001600160a01b0316608052506003805460ff1916600117905561021c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061011e83610136565b801561012f575061012f838361016a565b9392505050565b6000610149826301ffc9a760e01b61016a565b80156101645750610162826001600160e01b031961016a565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156101dc575060208210155b80156101e85750600081115b979650505050505050565b60006020828403121561020557600080fd5b81516001600160a01b038116811461012f57600080fd5b60805161094b61023760003960006105a0015261094b6000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c806301ffc9a71461009357806324d7806c146100bb5780632d345670146100ce57806331ae450b146100e35780636d73e669146100f8578063715018a61461010b5780638da5cb5b14610113578063d9accf9214610133578063f029c2d814610154578063f2fde38b14610167575b600080fd5b6100a66100a1366004610785565b61017a565b60405190151581526020015b60405180910390f35b6100a66100c93660046107cb565b6101a5565b6100e16100dc3660046107cb565b6101d4565b005b6100eb610232565b6040516100b291906107e6565b6100e16101063660046107cb565b6102e1565b6100e1610339565b61011b61034d565b6040516001600160a01b0390911681526020016100b2565b6100e1610141366004610833565b6003805460ff1916911515919091179055565b6100e1610162366004610855565b61035c565b6100e16101753660046107cb565b6103d6565b60006001600160e01b03198216631e05385b60e31b148061019f575061019f8261044c565b92915050565b6000816001600160a01b03166101b961034d565b6001600160a01b0316148061019f575061019f600183610481565b6101dc6104a6565b6101e7600182610481565b1561022f5760405133906001600160a01b038316907f7c0c3c84c67c85fcac635147348bfe374c24a1a93d0366d1cfe9d8853cbf89d590600090a361022d600182610505565b505b50565b606061023e600161051a565b67ffffffffffffffff81111561025657610256610891565b60405190808252806020026020018201604052801561027f578160200160208202803683370190505b50905060005b61028f600161051a565b8110156102dd576102a1600182610524565b8282815181106102b3576102b36108a7565b6001600160a01b0390921660209283029190910190910152806102d5816108d3565b915050610285565b5090565b6102e96104a6565b6102f4600182610481565b61022f5760405133906001600160a01b038316907f7e1a1a08d52e4ba0e21554733d66165fd5151f99460116223d9e3a608eec5cb190600090a361022d600182610530565b6103416104a6565b61034b6000610545565b565b6000546001600160a01b031690565b610367838383610595565b60035460ff166103d15760405162461bcd60e51b815260206004820152602a60248201527f4d6f636b45524337323143726561746f724d696e745065726d697373696f6e736044820152690e88111a5cd8589b195960b21b60648201526084015b60405180910390fd5b505050565b6103de6104a6565b6001600160a01b0381166104435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c8565b61022f81610545565b60006001600160e01b03198216632a9f3abf60e11b148061019f57506301ffc9a760e01b6001600160e01b031983161461019f565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b336104af61034d565b6001600160a01b03161461034b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c8565b600061049f836001600160a01b038416610619565b600061019f825490565b600061049f838361070c565b600061049f836001600160a01b038416610736565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103d15760405162461bcd60e51b815260206004820152602360248201527f43616e206f6e6c792062652063616c6c656420627920746f6b656e20637265616044820152623a37b960e91b60648201526084016103c8565b6000818152600183016020526040812054801561070257600061063d6001836108ec565b8554909150600090610651906001906108ec565b90508181146106b6576000866000018281548110610671576106716108a7565b9060005260206000200154905080876000018481548110610694576106946108a7565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806106c7576106c76108ff565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061019f565b600091505061019f565b6000826000018281548110610723576107236108a7565b9060005260206000200154905092915050565b600081815260018301602052604081205461077d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561019f565b50600061019f565b60006020828403121561079757600080fd5b81356001600160e01b03198116811461049f57600080fd5b80356001600160a01b03811681146107c657600080fd5b919050565b6000602082840312156107dd57600080fd5b61049f826107af565b6020808252825182820181905260009190848201906040850190845b818110156108275783516001600160a01b031683529284019291840191600101610802565b50909695505050505050565b60006020828403121561084557600080fd5b8135801515811461049f57600080fd5b60008060006060848603121561086a57600080fd5b610873846107af565b9250610881602085016107af565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016108e5576108e56108bd565b5060010190565b8181038181111561019f5761019f6108bd565b634e487b7160e01b600052603160045260246000fdfea26469706673582212202a430181548d8c8bdd1f520bfd814c1bf8a782d86013b0929bc2774bd71de7a164736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008e5760003560e01c806301ffc9a71461009357806324d7806c146100bb5780632d345670146100ce57806331ae450b146100e35780636d73e669146100f8578063715018a61461010b5780638da5cb5b14610113578063d9accf9214610133578063f029c2d814610154578063f2fde38b14610167575b600080fd5b6100a66100a1366004610785565b61017a565b60405190151581526020015b60405180910390f35b6100a66100c93660046107cb565b6101a5565b6100e16100dc3660046107cb565b6101d4565b005b6100eb610232565b6040516100b291906107e6565b6100e16101063660046107cb565b6102e1565b6100e1610339565b61011b61034d565b6040516001600160a01b0390911681526020016100b2565b6100e1610141366004610833565b6003805460ff1916911515919091179055565b6100e1610162366004610855565b61035c565b6100e16101753660046107cb565b6103d6565b60006001600160e01b03198216631e05385b60e31b148061019f575061019f8261044c565b92915050565b6000816001600160a01b03166101b961034d565b6001600160a01b0316148061019f575061019f600183610481565b6101dc6104a6565b6101e7600182610481565b1561022f5760405133906001600160a01b038316907f7c0c3c84c67c85fcac635147348bfe374c24a1a93d0366d1cfe9d8853cbf89d590600090a361022d600182610505565b505b50565b606061023e600161051a565b67ffffffffffffffff81111561025657610256610891565b60405190808252806020026020018201604052801561027f578160200160208202803683370190505b50905060005b61028f600161051a565b8110156102dd576102a1600182610524565b8282815181106102b3576102b36108a7565b6001600160a01b0390921660209283029190910190910152806102d5816108d3565b915050610285565b5090565b6102e96104a6565b6102f4600182610481565b61022f5760405133906001600160a01b038316907f7e1a1a08d52e4ba0e21554733d66165fd5151f99460116223d9e3a608eec5cb190600090a361022d600182610530565b6103416104a6565b61034b6000610545565b565b6000546001600160a01b031690565b610367838383610595565b60035460ff166103d15760405162461bcd60e51b815260206004820152602a60248201527f4d6f636b45524337323143726561746f724d696e745065726d697373696f6e736044820152690e88111a5cd8589b195960b21b60648201526084015b60405180910390fd5b505050565b6103de6104a6565b6001600160a01b0381166104435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c8565b61022f81610545565b60006001600160e01b03198216632a9f3abf60e11b148061019f57506301ffc9a760e01b6001600160e01b031983161461019f565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b336104af61034d565b6001600160a01b03161461034b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c8565b600061049f836001600160a01b038416610619565b600061019f825490565b600061049f838361070c565b600061049f836001600160a01b038416610736565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103d15760405162461bcd60e51b815260206004820152602360248201527f43616e206f6e6c792062652063616c6c656420627920746f6b656e20637265616044820152623a37b960e91b60648201526084016103c8565b6000818152600183016020526040812054801561070257600061063d6001836108ec565b8554909150600090610651906001906108ec565b90508181146106b6576000866000018281548110610671576106716108a7565b9060005260206000200154905080876000018481548110610694576106946108a7565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806106c7576106c76108ff565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061019f565b600091505061019f565b6000826000018281548110610723576107236108a7565b9060005260206000200154905092915050565b600081815260018301602052604081205461077d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561019f565b50600061019f565b60006020828403121561079757600080fd5b81356001600160e01b03198116811461049f57600080fd5b80356001600160a01b03811681146107c657600080fd5b919050565b6000602082840312156107dd57600080fd5b61049f826107af565b6020808252825182820181905260009190848201906040850190845b818110156108275783516001600160a01b031683529284019291840191600101610802565b50909695505050505050565b60006020828403121561084557600080fd5b8135801515811461049f57600080fd5b60008060006060848603121561086a57600080fd5b610873846107af565b9250610881602085016107af565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016108e5576108e56108bd565b5060010190565b8181038181111561019f5761019f6108bd565b634e487b7160e01b600052603160045260246000fdfea26469706673582212202a430181548d8c8bdd1f520bfd814c1bf8a782d86013b0929bc2774bd71de7a164736f6c63430008130033",
  "immutableReferences": {
    "18412": [
      {
        "length": 32,
        "start": 1440
      }
    ]
  },
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:915:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:81",
                "type": ""
              }
            ],
            "src": "14:290:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "483:223:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "500:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "511:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "493:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "493:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "493:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "534:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "545:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "530:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "530:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "550:2:81",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "523:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "523:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "523:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "573:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "584:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "569:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "569:18:81"
                      },
                      {
                        "hexValue": "4d75737420696d706c656d656e74204945524337323143726561746f72436f72",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "589:34:81",
                        "type": "",
                        "value": "Must implement IERC721CreatorCor"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "562:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "562:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "562:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "644:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "655:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "640:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "640:18:81"
                      },
                      {
                        "hexValue": "65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "660:3:81",
                        "type": "",
                        "value": "e"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "633:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "633:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "633:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "673:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "685:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "696:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "681:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "681:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "673:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a9e8c832ae74161e712df28eda97f56133138358b126912b2aebad8e2def88bd__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "460:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "474:4:81",
                "type": ""
              }
            ],
            "src": "309:397:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "810:103:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "820:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "832:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "843:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "828:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "828:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "820:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "862:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "877:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "889:3:81",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "894:10:81",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "885:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "885:20:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "873:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "873:33:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "855:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "855:52:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "855:52:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "779:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "790:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "801:4:81",
                "type": ""
              }
            ],
            "src": "711:202:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_a9e8c832ae74161e712df28eda97f56133138358b126912b2aebad8e2def88bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"Must implement IERC721CreatorCor\")\n        mstore(add(headStart, 96), \"e\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:4729:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "83:217:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "129:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "138:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "141:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "131:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "131:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "131:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "104:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "113:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "100:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "100:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "125:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "96:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "93:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "154:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "180:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "167:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "167:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "158:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "254:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "263:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "266:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "256:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "256:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "256:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "212:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "223:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "234:3:81",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "239:10:81",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "230:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "230:20:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "219:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "219:32:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "209:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "209:43:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "202:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "202:51:81"
                  },
                  "nodeType": "YulIf",
                  "src": "199:71:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "279:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "289:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "279:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "49:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "60:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "72:6:81",
                "type": ""
              }
            ],
            "src": "14:286:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "400:92:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "410:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "422:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "433:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "418:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "418:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "410:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "452:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "477:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "470:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "470:14:81"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "463:6:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "463:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "445:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "445:41:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "445:41:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "369:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "380:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "391:4:81",
                "type": ""
              }
            ],
            "src": "305:187:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "546:124:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "556:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "578:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "565:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "565:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "556:5:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "648:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "657:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "660:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "650:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "650:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "650:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "607:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "618:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "633:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "638:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "629:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "629:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "642:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "625:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "625:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "614:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "614:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "604:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "604:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "597:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "597:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "594:70:81"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "525:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "536:5:81",
                "type": ""
              }
            ],
            "src": "497:173:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "745:116:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "791:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "800:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "803:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "793:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "793:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "793:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "766:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "775:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "762:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "762:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "787:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "758:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "758:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "755:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "816:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "845:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "826:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "826:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "816:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "711:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "722:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "734:6:81",
                "type": ""
              }
            ],
            "src": "675:186:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1017:507:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1027:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1037:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1031:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1048:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1066:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1077:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1062:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1062:18:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "1052:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1096:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1107:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1089:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1089:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1089:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1119:17:81",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "1130:6:81"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "1123:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1145:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1165:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1159:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1159:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "1149:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "1188:6:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1196:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1181:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1181:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1181:22:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1212:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1223:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1234:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1219:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1219:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "1212:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1246:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1264:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1272:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1260:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1260:15:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "1250:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1284:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1293:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1288:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1352:146:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "1373:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "1388:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "1382:5:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1382:13:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1405:3:81",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1410:1:81",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "1401:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1401:11:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1414:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "1397:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1397:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "1378:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1378:39:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1366:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1366:52:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1366:52:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1431:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "1442:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "1447:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1438:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1438:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1431:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1463:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "1477:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "1485:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1473:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1473:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1463:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1314:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1317:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1311:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1311:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1325:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1327:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1336:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1339:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1332:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1332:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1327:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1307:3:81",
                    "statements": []
                  },
                  "src": "1303:195:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1507:11:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "1515:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1507:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "986:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "997:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1008:4:81",
                "type": ""
              }
            ],
            "src": "866:658:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1630:102:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1640:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1652:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1663:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1648:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1648:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1640:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1682:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "1697:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1713:3:81",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1718:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:11:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1722:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1705:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1705:19:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1693:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1693:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1675:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1675:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1675:51:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1599:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1610:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1621:4:81",
                "type": ""
              }
            ],
            "src": "1529:203:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1804:206:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1850:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1859:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1862:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1852:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1852:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1852:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1825:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1834:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1821:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1821:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1846:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1817:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1817:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1814:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1875:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1901:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1888:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1888:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1879:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1964:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1973:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1976:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1966:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1966:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1966:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1933:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1954:5:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1947:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1947:13:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "1940:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1940:21:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1930:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1930:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1923:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1923:40:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1920:60:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1989:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1999:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1989:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1770:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1781:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1793:6:81",
                "type": ""
              }
            ],
            "src": "1737:273:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2119:224:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2165:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2174:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2177:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2167:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2167:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2167:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2140:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2149:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2136:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2136:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2161:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2132:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2132:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2129:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2190:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2219:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2200:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2200:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2190:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2238:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2271:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2282:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2267:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2267:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2248:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2248:38:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2238:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2295:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2322:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2333:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2318:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2318:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2305:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2305:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2295:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2069:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2080:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2092:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2100:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2108:6:81",
                "type": ""
              }
            ],
            "src": "2015:328:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2380:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2397:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2404:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2409:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2400:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2400:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2390:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2390:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2390:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2437:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2440:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2430:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2430:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2430:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2461:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2464:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2454:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2454:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2454:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "2348:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2512:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2529:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2536:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2541:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2532:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2532:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2522:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2522:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2522:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2569:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2572:4:81",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2562:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2562:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2562:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2593:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2596:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2586:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2586:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2586:15:81"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "2480:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2644:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2661:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2668:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2673:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2664:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2664:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2654:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2654:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2654:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2701:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2704:4:81",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2694:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2694:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2694:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2725:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2728:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2718:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2718:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2718:15:81"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "2612:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2791:88:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2822:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "2824:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2824:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2824:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2807:5:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2818:1:81",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "2814:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2814:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "2804:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2804:17:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2801:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2853:20:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2864:5:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2871:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2860:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2860:13:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "2853:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2773:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "2783:3:81",
                "type": ""
              }
            ],
            "src": "2744:135:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3058:232:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3075:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3086:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3068:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3068:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3068:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3109:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3120:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3105:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3105:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3125:2:81",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3098:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3098:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3098:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3148:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3159:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3144:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3144:18:81"
                      },
                      {
                        "hexValue": "4d6f636b45524337323143726561746f724d696e745065726d697373696f6e73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3164:34:81",
                        "type": "",
                        "value": "MockERC721CreatorMintPermissions"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3137:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3137:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3137:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3219:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3230:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3215:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3215:18:81"
                      },
                      {
                        "hexValue": "3a2044697361626c6564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3235:12:81",
                        "type": "",
                        "value": ": Disabled"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3208:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3208:40:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3208:40:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3257:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3269:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3280:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3265:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3265:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3257:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9c562315287b9e92ad9668e365df1c98bd3386f4698b99c0306d9f20bb82d532__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3035:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3049:4:81",
                "type": ""
              }
            ],
            "src": "2884:406:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3469:228:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3486:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3497:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3479:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3479:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3479:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3520:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3531:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3516:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3516:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3536:2:81",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3509:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3509:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3509:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3559:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3570:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3555:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3555:18:81"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3575:34:81",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3548:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3548:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3548:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3630:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3641:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3626:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3626:18:81"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3646:8:81",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3619:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3619:36:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3619:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3664:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3676:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3687:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3672:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3672:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3664:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3446:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3460:4:81",
                "type": ""
              }
            ],
            "src": "3295:402:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3876:182:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3893:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3904:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3886:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3886:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3886:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3927:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3938:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3923:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3923:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3943:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3916:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3916:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3916:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3966:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3977:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3962:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3962:18:81"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3982:34:81",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3955:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3955:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3955:62:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4026:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4038:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4049:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4034:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4034:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4026:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3853:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3867:4:81",
                "type": ""
              }
            ],
            "src": "3702:356:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4237:225:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4254:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4265:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4247:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4247:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4247:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4288:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4299:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4284:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4284:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4304:2:81",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4277:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4277:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4277:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4327:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4338:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4323:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4323:18:81"
                      },
                      {
                        "hexValue": "43616e206f6e6c792062652063616c6c656420627920746f6b656e2063726561",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4343:34:81",
                        "type": "",
                        "value": "Can only be called by token crea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4316:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4316:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4316:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4398:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4409:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4394:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4394:18:81"
                      },
                      {
                        "hexValue": "746f72",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4414:5:81",
                        "type": "",
                        "value": "tor"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4387:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4387:33:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4387:33:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4429:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4441:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4452:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4437:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4437:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4429:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a7799927f69afdc4e349874d858a998867065cdd7a64751c41248a3f2a0a2190__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4214:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4228:4:81",
                "type": ""
              }
            ],
            "src": "4063:399:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4516:79:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4526:17:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4538:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4541:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "4534:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4534:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "4526:4:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4567:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "4569:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4569:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4569:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nodeType": "YulIdentifier",
                        "src": "4558:4:81"
                      },
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4564:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4555:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4555:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4552:37:81"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "4498:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "4501:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "4507:4:81",
                "type": ""
              }
            ],
            "src": "4467:128:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4632:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4649:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4656:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4661:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "4652:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4652:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4642:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4642:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4642:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4689:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4692:4:81",
                        "type": "",
                        "value": "0x31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4682:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4682:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4682:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4713:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4716:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "4706:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4706:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4706:15:81"
                }
              ]
            },
            "name": "panic_error_0x31",
            "nodeType": "YulFunctionDefinition",
            "src": "4600:127:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_9c562315287b9e92ad9668e365df1c98bd3386f4698b99c0306d9f20bb82d532__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"MockERC721CreatorMintPermissions\")\n        mstore(add(headStart, 96), \": Disabled\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a7799927f69afdc4e349874d858a998867065cdd7a64751c41248a3f2a0a2190__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"Can only be called by token crea\")\n        mstore(add(headStart, 96), \"tor\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "124:568:66:-:0;;;231:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;291:8;936:32:7;719:10:17;936:18:7;:32::i;:::-;762:79:72;794:8;-1:-1:-1;;;762:31:72;:79::i;:::-;754:125;;;;-1:-1:-1;;;754:125:72;;511:2:81;754:125:72;;;493:21:81;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:81;;;633:31;681:19;;754:125:72;;;;;;;;-1:-1:-1;;;;;890:19:72;;;-1:-1:-1;311:15:66::1;:22:::0;;-1:-1:-1;;311:22:66::1;329:4;311:22;::::0;;124:568;;2433:187:7;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:7;;;-1:-1:-1;;;;;;2541:17:7;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1349:282:20:-;1436:4;1543:23;1558:7;1543:14;:23::i;:::-;:81;;;;-1:-1:-1;1570:54:20;1603:7;1612:11;1570:32;:54::i;:::-;1536:88;1349:282;-1:-1:-1;;;1349:282:20:o;704:427::-;768:4;975:68;1008:7;-1:-1:-1;;;975:32:20;:68::i;:::-;:149;;;;-1:-1:-1;1060:64:20;1093:7;-1:-1:-1;;;;;;1060:32:20;:64::i;:::-;1059:65;975:149;956:168;704:427;-1:-1:-1;;704:427:20:o;4262:647::-;4433:71;;;-1:-1:-1;;;;;;873:33:81;;4433:71:20;;;;855:52:81;;;;4433:71:20;;;;;;;;;;828:18:81;;;;4433:71:20;;;;;;;;;-1:-1:-1;;;;;4433:71:20;-1:-1:-1;;;4433:71:20;;;4712:20;;4364:4;;4433:71;4364:4;;;;;;4433:71;4364:4;;4712:20;4677:7;4670:5;4659:86;4648:97;;4772:16;4758:30;;4822:4;4816:11;4801:26;;4854:7;:29;;;;;4879:4;4865:10;:18;;4854:29;:48;;;;;4901:1;4887:11;:15;4854:48;4847:55;4262:647;-1:-1:-1;;;;;;;4262:647:20:o;14:290:81:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:81;;214:42;;204:70;;270:1;267;260:12;711:202;124:568:66;;;;;;;;;;;;",
  "deployedSourceMap": "124:568:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;984:260:72;;;;;;:::i;:::-;;:::i;:::-;;;470:14:81;;463:22;445:41;;433:2;418:18;984:260:72;;;;;;;;1980:137:0;;;;;;:::i;:::-;;:::i;1712:205::-;;;;;;:::i;:::-;;:::i;:::-;;1111:261;;;:::i;:::-;;;;;;;:::i;1440:205::-;;;;;;:::i;:::-;;:::i;1831:101:7:-;;;:::i;1201:85::-;;;:::i;:::-;;;-1:-1:-1;;;;;1693:32:81;;;1675:51;;1663:2;1648:18;1201:85:7;1529:203:81;346:92:66;;;;;;:::i;:::-;406:15;:25;;-1:-1:-1;;406:25:66;;;;;;;;;;346:92;444:246;;;;;;:::i;:::-;;:::i;2081:198:7:-;;;;;;:::i;:::-;;:::i;984:260:72:-;1100:4;-1:-1:-1;;;;;;1123:62:72;;-1:-1:-1;;;1123:62:72;;:114;;;1201:36;1225:11;1201:23;:36::i;:::-;1116:121;984:260;-1:-1:-1;;984:260:72:o;1980:137:0:-;2042:4;2077:5;-1:-1:-1;;;;;2066:16:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2066:16:0;;:43;;;-1:-1:-1;2086:23:0;:7;2103:5;2086:16;:23::i;1712:205::-;1094:13:7;:11;:13::i;:::-;1790:23:0::1;:7;1807:5:::0;1790:16:::1;:23::i;:::-;1786:125;;;1834:31;::::0;1854:10:::1;::::0;-1:-1:-1;;;;;1834:31:0;::::1;::::0;::::1;::::0;;;::::1;1879:21;:7;1894:5:::0;1879:14:::1;:21::i;:::-;;1786:125;1712:205:::0;:::o;1111:261::-;1164:23;1222:16;:7;:14;:16::i;:::-;1208:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1208:31:0;;1199:40;;1254:6;1249:94;1270:16;:7;:14;:16::i;:::-;1266:1;:20;1249:94;;;1319:13;:7;1330:1;1319:10;:13::i;:::-;1307:6;1314:1;1307:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1307:25:0;;;:9;;;;;;;;;;;:25;1288:3;;;;:::i;:::-;;;;1249:94;;;;1111:261;:::o;1440:205::-;1094:13:7;:11;:13::i;:::-;1520:23:0::1;:7;1537:5:::0;1520:16:::1;:23::i;:::-;1515:124;;1564:32;::::0;1585:10:::1;::::0;-1:-1:-1;;;;;1564:32:0;::::1;::::0;::::1;::::0;;;::::1;1610:18;:7;1622:5:::0;1610:11:::1;:18::i;1831:101:7:-:0;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:7;;1201:85::o;444:246:66:-;539:64;580:9;591:2;595:7;539:40;:64::i;:::-;621:15;;;;613:70;;;;-1:-1:-1;;;613:70:66;;3086:2:81;613:70:66;;;3068:21:81;3125:2;3105:18;;;3098:30;3164:34;3144:18;;;3137:62;-1:-1:-1;;;3215:18:81;;;3208:40;3265:19;;613:70:66;;;;;;;;;444:246;;;:::o;2081:198:7:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:7;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:7;;3497:2:81;2161:73:7::1;::::0;::::1;3479:21:81::0;3536:2;3516:18;;;3509:30;3575:34;3555:18;;;3548:62;-1:-1:-1;;;3626:18:81;;;3619:36;3672:19;;2161:73:7::1;3295:402:81::0;2161:73:7::1;2244:28;2263:8;2244:18;:28::i;565:230:0:-:0;667:4;-1:-1:-1;;;;;;690:46:0;;-1:-1:-1;;;690:46:0;;:98;;-1:-1:-1;;;;;;;;;;937:40:19;;;752:36:0;829:155:19;8852:165:23;-1:-1:-1;;;;;8985:23:23;;8932:4;4343:19;;;:12;;;:19;;;;;;:24;;8955:55;8948:62;8852:165;-1:-1:-1;;;8852:165:23:o;1359:130:7:-;719:10:17;1422:7:7;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:7;;1414:68;;;;-1:-1:-1;;;1414:68:7;;3904:2:81;1414:68:7;;;3886:21:81;;;3923:18;;;3916:30;3982:34;3962:18;;;3955:62;4034:18;;1414:68:7;3702:356:81;8615:156:23;8688:4;8711:53;8719:3;-1:-1:-1;;;;;8739:23:23;;8711:7;:53::i;9098:115::-;9161:7;9187:19;9195:3;4537:18;;4455:107;9555:156;9629:7;9679:22;9683:3;9695:5;9679:3;:22::i;8297:150::-;8367:4;8390:50;8395:3;-1:-1:-1;;;;;8415:23:23;;8390:4;:50::i;2433:187:7:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:7;;;-1:-1:-1;;;;;;2541:17:7;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1327:159:72:-;1417:10;-1:-1:-1;;;;;1431:8:72;1417:22;;1409:70;;;;-1:-1:-1;;;1409:70:72;;4265:2:81;1409:70:72;;;4247:21:81;4304:2;4284:18;;;4277:30;4343:34;4323:18;;;4316:62;-1:-1:-1;;;4394:18:81;;;4387:33;4437:19;;1409:70:72;4063:399:81;2778:1388:23;2844:4;2981:19;;;:12;;;:19;;;;;;3015:15;;3011:1149;;3384:21;3408:14;3421:1;3408:10;:14;:::i;:::-;3456:18;;3384:38;;-1:-1:-1;3436:17:23;;3456:22;;3477:1;;3456:22;:::i;:::-;3436:42;;3510:13;3497:9;:26;3493:398;;3543:17;3563:3;:11;;3575:9;3563:22;;;;;;;;:::i;:::-;;;;;;;;;3543:42;;3714:9;3685:3;:11;;3697:13;3685:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3797:23;;;:12;;;:23;;;;;:36;;;3493:398;3969:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4061:3;:12;;:19;4074:5;4061:19;;;;;;;;;;;4054:26;;;4102:4;4095:11;;;;;;;3011:1149;4144:5;4137:12;;;;;4904:118;4971:7;4997:3;:11;;5009:5;4997:18;;;;;;;;:::i;:::-;;;;;;;;;4990:25;;4904:118;;;;:::o;2206:404::-;2269:4;4343:19;;;:12;;;:19;;;;;;2285:319;;-1:-1:-1;2327:23:23;;;;;;;;:11;:23;;;;;;;;;;;;;2507:18;;2485:19;;;:12;;;:19;;;;;;:40;;;;2539:11;;2285:319;-1:-1:-1;2588:5:23;2581:12;;14:286:81;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:81;;209:43;;199:71;;266:1;263;256:12;497:173;565:20;;-1:-1:-1;;;;;614:31:81;;604:42;;594:70;;660:1;657;650:12;594:70;497:173;;;:::o;675:186::-;734:6;787:2;775:9;766:7;762:23;758:32;755:52;;;803:1;800;793:12;755:52;826:29;845:9;826:29;:::i;866:658::-;1037:2;1089:21;;;1159:13;;1062:18;;;1181:22;;;1008:4;;1037:2;1260:15;;;;1234:2;1219:18;;;1008:4;1303:195;1317:6;1314:1;1311:13;1303:195;;;1382:13;;-1:-1:-1;;;;;1378:39:81;1366:52;;1473:15;;;;1438:12;;;;1414:1;1332:9;1303:195;;;-1:-1:-1;1515:3:81;;866:658;-1:-1:-1;;;;;;866:658:81:o;1737:273::-;1793:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:52;;;1862:1;1859;1852:12;1814:52;1901:9;1888:23;1954:5;1947:13;1940:21;1933:5;1930:32;1920:60;;1976:1;1973;1966:12;2015:328;2092:6;2100;2108;2161:2;2149:9;2140:7;2136:23;2132:32;2129:52;;;2177:1;2174;2167:12;2129:52;2200:29;2219:9;2200:29;:::i;:::-;2190:39;;2248:38;2282:2;2271:9;2267:18;2248:38;:::i;:::-;2238:48;;2333:2;2322:9;2318:18;2305:32;2295:42;;2015:328;;;;;:::o;2348:127::-;2409:10;2404:3;2400:20;2397:1;2390:31;2440:4;2437:1;2430:15;2464:4;2461:1;2454:15;2480:127;2541:10;2536:3;2532:20;2529:1;2522:31;2572:4;2569:1;2562:15;2596:4;2593:1;2586:15;2612:127;2673:10;2668:3;2664:20;2661:1;2654:31;2704:4;2701:1;2694:15;2728:4;2725:1;2718:15;2744:135;2783:3;2804:17;;;2801:43;;2824:18;;:::i;:::-;-1:-1:-1;2871:1:81;2860:13;;2744:135::o;4467:128::-;4534:9;;;4555:11;;;4552:37;;;4569:18;;:::i;4600:127::-;4661:10;4656:3;4652:20;4649:1;4642:31;4692:4;4689:1;4682:15;4716:4;4713:1;4706:15",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../permissions/ERC721/ERC721CreatorMintPermissions.sol\";\n\ncontract MockERC721CreatorMintPermissions is ERC721CreatorMintPermissions {\n    bool _approveEnabled;\n\n    constructor(address creator_) ERC721CreatorMintPermissions (creator_) {\n        _approveEnabled = true;\n    }\n\n    function setApproveEnabled(bool enabled) external {\n        _approveEnabled = enabled;\n    }\n\n    function approveMint(address extension, address to, uint256 tokenId) public override {\n        ERC721CreatorMintPermissions.approveMint(extension, to, tokenId);\n        require(_approveEnabled, \"MockERC721CreatorMintPermissions: Disabled\");\n    }\n}\n",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/mocks/MockERC721CreatorMintPermissions.sol",
  "ast": {
    "absolutePath": "project:/contracts/mocks/MockERC721CreatorMintPermissions.sol",
    "exportedSymbols": {
      "AdminControl": [
        185
      ],
      "Context": [
        1933
      ],
      "ERC165": [
        2132
      ],
      "ERC165Checker": [
        2326
      ],
      "ERC721CreatorMintPermissions": [
        18480
      ],
      "EnumerableSet": [
        3816
      ],
      "IAdminControl": [
        417
      ],
      "ICreatorCore": [
        15197
      ],
      "IERC165": [
        2338
      ],
      "IERC721CreatorCore": [
        15407
      ],
      "IERC721CreatorMintPermissions": [
        18497
      ],
      "MockERC721CreatorMintPermissions": [
        17968
      ],
      "Ownable": [
        1157
      ]
    },
    "id": 17969,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17915,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:66"
      },
      {
        "absolutePath": "project:/contracts/permissions/ERC721/ERC721CreatorMintPermissions.sol",
        "file": "../permissions/ERC721/ERC721CreatorMintPermissions.sol",
        "id": 17916,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17969,
        "sourceUnit": 18481,
        "src": "58:64:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 17917,
              "name": "ERC721CreatorMintPermissions",
              "nameLocations": [
                "169:28:66"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18480,
              "src": "169:28:66"
            },
            "id": 17918,
            "nodeType": "InheritanceSpecifier",
            "src": "169:28:66"
          }
        ],
        "canonicalName": "MockERC721CreatorMintPermissions",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 17968,
        "linearizedBaseContracts": [
          17968,
          18480,
          18497,
          185,
          2132,
          417,
          2338,
          1157,
          1933
        ],
        "name": "MockERC721CreatorMintPermissions",
        "nameLocation": "133:32:66",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 17920,
            "mutability": "mutable",
            "name": "_approveEnabled",
            "nameLocation": "209:15:66",
            "nodeType": "VariableDeclaration",
            "scope": 17968,
            "src": "204:20:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 17919,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "204:4:66",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17932,
              "nodeType": "Block",
              "src": "301:39:66",
              "statements": [
                {
                  "expression": {
                    "id": 17930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17928,
                      "name": "_approveEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17920,
                      "src": "311:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 17929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "329:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "311:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17931,
                  "nodeType": "ExpressionStatement",
                  "src": "311:22:66"
                }
              ]
            },
            "id": 17933,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17925,
                    "name": "creator_",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17922,
                    "src": "291:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17926,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 17924,
                  "name": "ERC721CreatorMintPermissions",
                  "nameLocations": [
                    "261:28:66"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 18480,
                  "src": "261:28:66"
                },
                "nodeType": "ModifierInvocation",
                "src": "261:39:66"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17922,
                  "mutability": "mutable",
                  "name": "creator_",
                  "nameLocation": "251:8:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 17933,
                  "src": "243:16:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "243:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "242:18:66"
            },
            "returnParameters": {
              "id": 17927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "301:0:66"
            },
            "scope": 17968,
            "src": "231:109:66",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17942,
              "nodeType": "Block",
              "src": "396:42:66",
              "statements": [
                {
                  "expression": {
                    "id": 17940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17938,
                      "name": "_approveEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17920,
                      "src": "406:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17939,
                      "name": "enabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17935,
                      "src": "424:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "406:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17941,
                  "nodeType": "ExpressionStatement",
                  "src": "406:25:66"
                }
              ]
            },
            "functionSelector": "d9accf92",
            "id": 17943,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApproveEnabled",
            "nameLocation": "355:17:66",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17935,
                  "mutability": "mutable",
                  "name": "enabled",
                  "nameLocation": "378:7:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 17943,
                  "src": "373:12:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17934,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "373:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "372:14:66"
            },
            "returnParameters": {
              "id": 17937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "396:0:66"
            },
            "scope": 17968,
            "src": "346:92:66",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              18479
            ],
            "body": {
              "id": 17966,
              "nodeType": "Block",
              "src": "529:161:66",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17956,
                        "name": "extension",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17945,
                        "src": "580:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17957,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17947,
                        "src": "591:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17958,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17949,
                        "src": "595:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 17953,
                        "name": "ERC721CreatorMintPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18480,
                        "src": "539:28:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721CreatorMintPermissions_$18480_$",
                          "typeString": "type(contract ERC721CreatorMintPermissions)"
                        }
                      },
                      "id": 17955,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "568:11:66",
                      "memberName": "approveMint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18479,
                      "src": "539:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 17959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "539:64:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17960,
                  "nodeType": "ExpressionStatement",
                  "src": "539:64:66"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17962,
                        "name": "_approveEnabled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17920,
                        "src": "621:15:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4d6f636b45524337323143726561746f724d696e745065726d697373696f6e733a2044697361626c6564",
                        "id": 17963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "638:44:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9c562315287b9e92ad9668e365df1c98bd3386f4698b99c0306d9f20bb82d532",
                          "typeString": "literal_string \"MockERC721CreatorMintPermissions: Disabled\""
                        },
                        "value": "MockERC721CreatorMintPermissions: Disabled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9c562315287b9e92ad9668e365df1c98bd3386f4698b99c0306d9f20bb82d532",
                          "typeString": "literal_string \"MockERC721CreatorMintPermissions: Disabled\""
                        }
                      ],
                      "id": 17961,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "613:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "613:70:66",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17965,
                  "nodeType": "ExpressionStatement",
                  "src": "613:70:66"
                }
              ]
            },
            "functionSelector": "f029c2d8",
            "id": 17967,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approveMint",
            "nameLocation": "453:11:66",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17951,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "520:8:66"
            },
            "parameters": {
              "id": 17950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17945,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "473:9:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 17967,
                  "src": "465:17:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17944,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "465:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17947,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "492:2:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 17967,
                  "src": "484:10:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17946,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "484:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17949,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "504:7:66",
                  "nodeType": "VariableDeclaration",
                  "scope": 17967,
                  "src": "496:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17948,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "464:48:66"
            },
            "returnParameters": {
              "id": 17952,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "529:0:66"
            },
            "scope": 17968,
            "src": "444:246:66",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 17969,
        "src": "124:568:66",
        "usedErrors": []
      }
    ],
    "src": "33:660:66"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.820Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approveAdmin(address)": {
        "details": "See {IAdminControl-approveAdmin}."
      },
      "getAdmins()": {
        "details": "See {IAdminControl-getAdmins}."
      },
      "isAdmin(address)": {
        "details": "See {IAdminControl-isAdmin}."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "revokeAdmin(address)": {
        "details": "See {IAdminControl-revokeAdmin}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}